漏洞判断
如果传递的参数是一个php文件:
被解析执行就是文件包含漏洞
显示出源码就是文件读取漏洞
提示是下载就是文件下载漏洞
漏洞产生
文件下载处没有对用户请求的文件类型和下载路径进行过滤。导致用户通过路径回溯符../等相关操作,跳出了程序本身的限制目录,然后再利用文件下载功能,使前端下载请求可以下载服务器中的任意文件。
漏洞利用
文件下载:利用下载获取源码或数据库配置文件及系统敏感文件为后续出思路
案例:某网站存在任意文件下载漏洞
根据url样式判断可能存在文件下载
先下载他自己试一试,发现成功下载
查看文件未得到什么有用的信息
下载网站首页文件index.php看看,加入../就是下载网站的首页文件,不加下载的就是files目录下的index.php
打开查看信息,发现使用的是Joomla程序搭建的网站
就可以浏览器搜索joomla的数据库配置文件路径
下载配置文件
打开查看,成功获取账号密码等信息
我们还可以尝试下载一些网站的系统文件等
文件读取
文件读取漏洞,就是攻击者通过一些手段绕过应用程序的限制读取到服务器上开发者禁止读取的文件。主要读取的文件是服务器的各种配置文件、文件形式存储的密钥、服务器信息等
文件读取漏洞通常是由于应用程序没有对用户的输入进行验证和过滤导致的
利用
基本和文件下载的利用方法类似
php文件读取函数:
file_get_contents
fread
fgets
fgetss
file
parse_ini_file
readfile
highlight_file
show_source
案例:文件读取-MetInfo6.0 cms-任意读取
流程:特定函数搜索-寻触发调用-构造Payload测试
使用代码审计工具seay源代码审计系统查看源码,搜索readfile读取函数
查看代码,发现大概率存在文件读取漏洞
全局搜索old_thumb,看是谁调用了
发现在thumb.php文件里面出现了,虽然没有调用代码,但应该就是这个文件触发的
找到触发文件之后就可以构造payload了
浏览器搜索metinfo6.0 cms的数据库配置文件路径
进行读取,
payload:/include/thumb.php?dir=http\..\..\config\config_db.php
浏览器直接访问是无法回显内容的
需要抓包
为什么payload要加一个http?
因为是源码设置的访问规则
案例:74cms——后台存在任意文件删除
php文件删除函数:unlink
审计工具打开源码,搜索函数unlink
查看代码,得知参数名act=del_img时执行删除操作,接收删除内容的参数名是img
得知调用删除功能的是admin_article.php文件
网站根目录创建文件1.txt
构造payload:/admin/admin_article.php?act=del_img&img=../../1.txt
访问删除操作,提示有csrf防御,应该是同源策略,重新访问网站后台即可
重新访问后台
再次访问删除操作,提示删除成功
查看根目录,1.txt成功被删除
总结黑盒测试思路:
1.看url中参数名的中文翻译。如:参数名是download,中文是下载,就可能存在任意文件下载
2.看参数值是不是目录或者文件名。
3.查看网站的下载、读取、删除等功能点,修改参数值进行测试。