从CTF比赛题看任意文件读取的危害

最近在CTF_HUB上看到任意文件读取的一道web渗透测试题,详见ctfhub 中web afr-3,突然想到2020年参加网鼎杯白虎组,有个picdown的题目大同小异,手法相似,对任意文件读取漏洞的危害做个总结。

在afr-3中,任意文件读取漏洞如下,首先进入首页,如下图:

 点进去,首页是个输入框,输入test,提交查询,如图:

在输入框这个地方存在xss,不过暂时先不管这个,重点关注任意文件读取。看到url中有个name=article,这个参数,猜测这个参数是突破点,将article改为article2,报错如图:

从报错可以看出name参数可以读取到系统文件,尝试读取/etc/passwd,如图:

确认name参数存在任意文件读取漏洞后,直接查看proc文件夹下的相关信息,如cmdline,cwd等文件夹,访问/proc/self/cmdline,如图,

说明存在当前目录下存在server.py文件,读取server.py文件,如图:

整理一下源代码,如图:

从源代中可以看到name参数中,存在任意文件读取漏洞,因为过滤了flag,不能直接看到flag文件中的内容。第9行中可以看到flag已经放到FLAG变量中。最开始想方设法绕过page.find的过滤,最终放弃。发现在24行中存在ssti模板注入漏洞。

但注入的内容,必须通过session获取,就是说要伪造session,构造ssti注入。伪造flask的session,必须知道secret_key,从源代码中可以看到,secret_key在key.py文件中,读取key.py文件中的内容如下:

利用flask-session-manage,可以伪造session,使用方法如下,详细用法见github官网说明。

伪造{"n1code":"{{''.__class__.__mro__[2].__subclasses__[2]("flag.py").read()}}"}的session,如图:

改为post请求,修改session,结果如图:

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值