知识源于周赛的一道题目–NSSCTF(PingPong)

进入题目首先知道两个信息–框架是flask–首先考虑是不是存在ssti第二个是题目描述中的信息(开启了debug模式)
其实之前并没有接触过这个东西,但是还是通过其他方式非预期做出来了。(也有出题人的原因hhh
flask在开启debug模式下,可以通过输入pin码进行代码调试模式,也就是console控制台。进入控制台之后再进行命令执行
但是这个东西怎么算呢?需要获得几个东西
- 1. username,用户名
- 2. modname,默认值为flask.app
- 3. appname,默认值为Flask
- 4. moddir,flask库下app.py的绝对路径
- 5. uuidnode,当前网络的mac地址的十进制数
- 6. machine_id,docker机器id
很多都是默认的,重点需要关注三个东西
- moddir:flask所在的路径,通过查看debug报错信息获得
- uuidnode:通过uuid.getnode()读取,通过文件/sys/class/net/eth0/address得到16进制结果,转化为10进制进行计算
- machine_id:linux的id一般存放在/etc/machine-id或/proc/sys/kernel/random/boot_id,docker靶机则读取/proc/self/cgroup
下面是完整的解题过程
首先观察发现题目存在任意文件读取漏洞:

文章讲述了在一场网络安全竞赛中,如何利用Flask应用开启的debug模式,通过任意文件读取漏洞获取敏感信息,以及通过计算特定参数(如MAC地址、machine_id)生成pin值,最终实现代码注入(RCE)。
最低0.47元/天 解锁文章
5957

被折叠的 条评论
为什么被折叠?



