1.环境准备

下载DC5靶机,导入VM,然后设置为NAT模式,kali也设置为NAT模式。

2.信息收集

 在kali中扫描同网段下的IP,找到属于DC5的IP地址192.168.204.145(在渗透测试中中途出现了点小插曲,然后给DC5重置了一下,导致后面的IP变成了192.168.204.146)

 扫描靶机IP的端口发现服务,有80搭建的网站。在访问后没有发现什么特别之处,但是有一个页面可以提交留言。

3.漏洞挖掘

 提交留言后会跳转到该页面,而且刷新后,下面的年份会改变,这是一个值得注意的点,但是目前我还没发现什么问题。

 尝试用dirsearch扫描该网站的隐藏目录,收集可能有用的信息,发现了footer.php这个网页

访问后发现这里面的内容和之前跳转到的那个页面下面的年份一模一样,于是也尝试刷新,发现也会改变,说明thank.php那个页面很可能包含了这个页面,可能存在文件包含漏洞。

访问Linux绝对存在的/etc/passwd发现可以访问,年份的位置变成了passwd的内容,确实存在文件包含漏洞

4.日志投毒(漏洞利用)

 用whatweb指纹识别该网站,可以发现是用nginx1.6.2搭建的,可以去搜索该版本的相关信息。发现可以进行日志投毒,默认日志目录为/var/log/nginx/access.log

访问/var/log/nginx/access.log,发现可以看到日志

 用burp进行日志投毒,在User-Agent处进行投毒, <?php system($_GET['cmd']); ?>,投入日志中当中后续可以利用。

在kali监听4444端口,然后在url后加上cmd指令,连接上kali,反弹shell给kali,python -c "import pty;pty.spawn('/bin/bash')"变成交互式,使shell更加好用

 通过find / -perm -u=s -type f 2>/dev/null 指令进行查找带有suid权限的文件寻找提权突破口,发现screen4.5.0

5.进行提权

 在kali中用searchsploit搜索screen4.5.0,发现有漏洞脚本可以利用,第一行带sh的。

 将脚本复制到桌面的一个文件夹中,方便后续操作。

 我刚开始尝试将脚本发送到DC5进行运行,但是发现无法运行。查看脚本内容后,发现其实是分为三个部分,需要对一二两个部分进行编译。

 将第一部分的内容保存为libhax.c然后用gcc编译,将输出.so的文件

 将第二部分的内容保存为rootshell.c然后用gcc编译,将将输出.so文件

在DC5的shell中下载这些编译后的文件(图中rootshell后面我传输的是.so,这次是传输错了)

但是在最后因为kali的gcc版本太新了,编译出来的文件在DC5上无法运行,导致并没有完美打通DC5,但是以上是可行的步骤,最后编译也可以用多种办法解决,直接开一个旧的镜像进行编译就好了。

6.渗透复盘

1. 信息收集:发现80端口Web服务,通过留言页年份动态变化,结合目录扫描发现footer.php,初步判断存在文件包含。

2. 漏洞验证:成功读取/etc/passwd,确认LFI漏洞;识别Nginx 1.6.2,找到日志路径并实现User-Agent日志投毒,写入一句话后门。

3. Getshell:通过包含日志+命令执行,反弹shell至Kali并升级为交互式shell。

4. 提权发现:通过SUID文件扫描,定位存在漏洞的screen 4.5.0。

5. 问题与原因:使用公开提权脚本时,因Kali的gcc版本过高,编译出的二进制文件与靶机系统不兼容,导致提权阶段未完全打通。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐