文件下载一、漏洞介绍一般网站由于业务需求,往往需要提供文件查看或文件下载的功能,但若对用户查看或下载文件不做限制,则恶意用户能够查看或下载任意敏感文件,这就是文件查看与下载漏洞。二、存在的位置2.1 一般链接形式download.php?path=down.php?file=data.php?file=download.php?filename=2.2 包含参数&src=&inputfile=&filepath=&path=&data=三、利用思路下载常规配置文件。如:ssh/weblogic/ftp/mysql等相关配置文件下载各种.log文件,从中寻找一些后台地址、文件上传点之类的地方,如果运气好,还可以找到前辈留下的后门。log文件:就是日志。核心三要素:时间戳(什么时候)、事件级别(INFO信息/WRAN告警/ERROR错误)、具体的内容(干了什么或者哪儿崩了)下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器,尝试读取/root/bash_history看自己是否具有root权限。如果没有就只能按部就班的利用 ../ 来回跳转读取一些.ssh下的配置信息文件,读取mysql下的.bash_history文件。来查看是否记录了一些可以利用的相关信息。然后逐个下载我们需要审计的代码文件,但是下载的时候变得很繁琐,我们只能尝试去猜解目录,然后下载一些中间件的记录日志进行分析。如果我们遇到的是java+oracle环境,可以先下载/WEB-INF/classes/applicationContext.xml文件,这里面记载的是web服务器的响应配置,然后下载/WEB-INF/classes/xxx/xxx/ccc.class对文件进行反编译,然后搜索文件中的upload关键字看是否存在一些api接口,如果存在我们可以本地构造上传页面用api接口将我们的文件传输进服务器。如果具有root权限 在linux中可以使用locate命令来查找文件或目录。它不搜索具体目录,而是搜索一个是数据库/var/lib/mlocate/mlocate.db。这个数据库含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次。当我们不知道路径是什么的情况下,这个可以说是核武器了,我们利用任意文件下载漏洞吧mlocate.db下载下来,利用locate命令将数据输出成文件,这里面包含全部文件路径信息。locate读取方法:locate mlocate.db admin 可以将mlocate.db中包含admin文件名的内容全部输出出来。四、常见利用路径* /root/.ssh/authorized_keys* /root/.ssh/id_rsa* /root/.ssh/known_hosts //记录了每一个访问计算机用户的公钥* /etc/passwd* /etc/shadow * /etc/my.conf //mysql配置文件* /etc/httpd/conf/httpd.conf //apache配置文件* /root/.bash_history //用户历史命令记录文件* /root/.mysql_history //mysql历史命令记录文件* /proc/mounts //记录系统挂载设备* /proc/config.gz //内核配置文件* /var/lib/mlocate/mlocate.db //全文件路径* /proc/self/cmdline //当前进程的cmdline参数五、漏洞修复过滤"." 使用户在url中不能回溯上级目录严格正则判断用户输入参数的格式php.ini配置open_basedir限定文件访问的范围
一、漏洞介绍
一般网站由于业务需求,往往需要提供文件查看或文件下载的功能,但若对用户查看或下载文件不做限制,则恶意用户能够查看或下载任意敏感文件,这就是文件查看与下载漏洞。
二、存在的位置
2.1 一般链接形式
2.2 包含参数
三、利用思路
四、常见利用路径
五、漏洞修复