文件操作安全

原理

显示源代码,则为文件读取漏洞

提示文件下载,则为文件下载漏洞

文件被解析成脚本语言,则为文件包含漏洞

漏洞检测点

文件名

read.xxx?filename=

down.xxx?filename=

参数值

&readpath= &filepath= &path= &inputfile= &url= &data= &readfile= &menu= META-INF= WEB-INF

注意

参数值有的会用加密算法进行加密,所以在下载想要的文件,需要对该文件路径进行加密

目录符号

../ ..\ ./ .\

利用

常见文件

后台首页日志等可见文件

敏感文件

数据库配置文件下载或读取及后续

接口密匙信息文件下载或读取及后续

靶场

pikachu任意文件下载

访问靶场后查看右键复制图片地址进行查看

pikachu任意文件下载-wp1

得到图片地址为http://127.0.0.1:8080/pikachu/vul/unsafedownload/download/ai.png

右键复制查看下载地址

pikachu任意文件下载-wp1

得到下载地址为http://127.0.0.1:8080/pikachu/vul/unsafedownload/execdownload.php?filename=ai.png

现在我们通过漏洞下载execdownload.php文件,查看其源代码,但由于execdownload.php文件在ai.png的上一级目录,所以我们构造的攻击语句为

1
http://127.0.0.1:8080/pikachu/vul/unsafedownload/execdownload.php?filename=../execdownload.php

得到源码,得到下载漏洞目录是download/

pikachu任意文件下载-wp3

接下来我们通过该漏洞去下载敏感文件配置文件

但一般这些文件需要知道绝对路径,我们可以使用扫描器去扫,用大一点的字典去跑

[RoarCTF 2019]Easy Java

Java开发的项目文件下载一般用POST传参

此题读取WEB配置文件WEB-INF/web.xml

https://blog.csdn.net/ChenZIDu/article/details/103533554

https://blog.csdn.net/silencediors/article/details/102579567

“百度杯”CTF比赛 2017 二月场-Zone

https://www.ichunqiu.com/writeup/detail/4941

案例

小米路由器远程任意文件读取漏洞

Java文件下载

参考

https://blog.csdn.net/Cheng_May/article/details/78600833

拓展

mvc框架:model view controller

MVC 模式 | 菜鸟教程