文件类漏洞测试流程
文件上传测试
对于一个文件上传点,需要进行以下测试:
1. 文件上传类型测试
针对文件上传点,重点测试对文件上传类型的限制手段和位置:
-
测试文件上传类型,直接上传脚本文件,如.php,.jsp等,若上传成功,则目前认为存在木马上传风险,进行执行测试。
-
若无法直接上传脚本类型,首先尝试前端检测绕过测试,上传正常后缀名的文件(.jpg,.png,但注意,文件内容为脚本代码),点击上传按钮后抓包,在数据包中修改文件后缀名为脚本后缀后发送,若成功上传,认为存在木马上传风险,进行执行测试。
-
若无法通过简单修改后缀名上传成功,推断为后端检测,或其他类型检测。尝试下面绕过方法单个或多个同时使用:
修改HTTP数据包中Content-Type字段的值 修改文件内容前几字符,如GIF89a 制作图片木马 使用多后缀名00截断,.jsp[0].jpg,[0]是ascii码0,在数据包中修改
-
若成功上传,则目前认为存在木马上传风险,进行执行测试。
-
若无法成功上传,则认为不存在上传漏洞
-
2. 执行测试
- 对上传成功的后缀名为脚本后缀(.jsp,.php等)的,直接访问,若成功执行,则存在上传漏洞
- 若对使用00截断上传的文件,直接访问截断前的文件名,若可执行,则存在上传漏洞
- 若服务端修改了文件名,则注意需要访问的是修改的文件名。
- 若发现当前目录无法执行脚本文件(没有执行权限),则可通过尝试目录穿越的方法,上传文件时上传…/…/a.jsp这样命名的文件,尝试上传穿越到可执行的目录中。
文件下载测试
文件下载一般分为两种,直接访问下载和使用自己开发的文件下载模块通过参数进行下载:
直接访问下载:http://www.a.com/file/download/1.ppt
下载模块下载:http://www.a.com/download?file_name=1.ppt
对于使用参数下载的可尝试任意文件下载的测试:
-
尝试任意文件下载,通过改变参数尝试下载站内的其他文件,如
下载同目录下其他文件(一般同目录的都是可供下载的,不属于漏洞): http://www.a.com/download?file_name=2.ppt 下载不同目录下的其他文件: http://www.a.com/download?file_name=../../conf/conn.java 下载服务器上的文件: http://www.a.com/download?file_name=../../../../../etc/passwd
如果成功下载了不该下载的文件,认为存在任意文件下载漏洞
目录遍历类任意文件下载的测试,可通过访问web根目录下的目录,来查看是否有权限浏览,如果可以浏览此目录,可继续尝试猜测根目录下的其他目录(注根目录一般不可浏览,因为根目录中有index页面,而访问带有index页面的目录会自动被服务器解析到index页面,所以根目录下的目录只能通过猜测过枚举,但一般网站都遵循一定的架构规则),如:
http://www.a.com/js/
http://www.a.com/config/
http://www.a.com/css/
http://www.a.com/file/
若可以全部浏览目录下的文件,那么存在目录遍历漏洞,若不只可以遍历,还可以下载,那么还存在任意文件下载漏洞。