您现在的位置是:网站首页> 编程资料编程资料

案例讲解WEB 漏洞-文件操作之文件下载读取_安全相关_

2023-05-27 344人已围观

简介 案例讲解WEB 漏洞-文件操作之文件下载读取_安全相关_

原理

产生:任意语言代码下载函数
文件下载(一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞。)

文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如../../../etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。
所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。

漏洞危害

下载服务器任意文件,如脚本代码、服务及系统配置文件等
可用得到的代码进一步代码审计,得到更多可利用漏洞

利用方式

浅谈任意文件下载漏洞的利用
信息收集信息→猜路径→下载配置文件/代码文件→利用服务器软件漏洞→shell→提权

首先收集系统信息,包括系统版本,中间件,cms版本,服务器用途,服务器使用者信息,端口,web路径等,然后根据收集到的信息,下载配置文件,如weblogic,ftp,ssh等, 根据下载到的配置文件进行渗透。

1. 读取程序源代码(如密码配置文件)
2. 读取程序配置文件(如数据库连接文件)
如weblogic,ssh,ftp,数据库配置文件等, 当解出密码后,进行登陆,getshell
3. 读取操作系统关键文件(如/etc/sadow,/ root/.bash_history等文件)
4. 读取运维配置文件(redis/rsync/ftp/ssh客 户端数据等)
5. 读取中间件配置文件(weblogic/tomcat等 密码文件,apache的httpd.conf文件)
6. 下载web日志文件(获取网站后台/上传文件 等)
 下载日志文件,找到登录/上传/后台/ 操作,找到登录入口 可以爆破,测试默认口令,弱口令,  找到文件上传点则测试文件上传漏洞,找到后台操作试试有没有未授权访问
7. 结合SSRF获取内网机器文件
8. 可以利用../返回到上级目录下载敏感文件

系统文件

window

C:\boot.ini //查看系统版本
C:\Windows\System32\inetsrv\MetaBase. xml //IIS配置文件
C:\Windows\repair\sam //存储系统初次安装的密码
C:\Program Files\mysql\my.ini //Mysql配置
C:\Program Files\mysql\data\mysql\user. MYD  //Mysql root
C:\Windows\php.ini //php配置信息
C:\Windows\my.ini //Mysql配置信息

Linux

.bash_history` # 历史中可能带着用户的密码 ( 遇到过现实案例,是输错的情况下参数的,比如没 输入 su 却以为自己输了 su)
/etc/passwd # 用户情况
/etc/shadow # 直接 John the Ripper
/etc/hosts # 主机信息,通常配置了一些内网 域名
/root/.bash_history //root的bash历史记录
/root/.ssh/authorized_keys /root/.mysql_history //mysql的bash历史记录
/root/.wget-hsts /opt/nginx/conf/nginx.conf //nginx的配置文件
/var/www/html/index.html /etc/my.cnf /etc/httpd/conf/httpd.conf //httpd的配置文件
/proc/self/fd/fd[0-9]*(文件标识符)
/proc/mounts /porc/config.gz /proc/sched_debug // 提供cpu上正在运行的进程信息,可以获得进程的pid号,可以配合后面需要pid的利用
/proc/mounts // 挂载的文件系统列表
/proc/net/arp //arp表,可以获得内网其他机器的地址
/proc/net/route //路由表信息
/proc/net/tcp and /proc/net/udp // 活动连接的信息
/proc/net/fib_trie // 路由缓存
/proc/version // 内核版本
/proc/[PID]/cmdline // 可能包含有用的路径信息
/proc/[PID]/environ // 程序运行的环境变量信息,可以用来包含getshell
/proc/[PID]/cwd // 当前进程的工作目录
/proc/[PID]/fd/[#] // 访问file descriptors, 某写情况可以读取到进程正在使用的文件,比如 access.log /root/.ssh/id_rsa /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys /etc/ssh/sshd_config /var/log/secure /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/syscomfig/network-scripts/ifcfg-eth1
/usr/local/tomcat/conf/tomcat-users. xml # tomcat 用户配置文件
/root/.bashrc # 环境变量
/root/.bash_history # 还有root外的其他用户
/root/.viminfo # vim 信息
/root/.ssh/id_rsa # 拿私钥直接ssh
/proc/xxxx/cmdline # 进程状态枚举 xxxx 可以为0000-9999 使用burpsuite 数据库 config 文件     web 日志 access.log, error.log /var/lib/php/sess_PHPSESSID # 非常规问题 session 文件
/proc/net/arp /proc/net/tcp /proc/net/udp /proc/net/dev

常见脚本敏感文件参考

PHP: inc/config. php获得数据库连接字符串中的口令信息
asp: inc/conn.asp文件,获得数据库连接字符串,得到数据库口令。
aspx: web.config网站根目录文件,获得数据库连接信息。
JSP: conf/ tomcat-user.xml文件,获得tomcat管理界面的口令信息
WEB- INF /Web. xml文件,获得数据库连接字符串中的口令信息。

任意文件读取

任意文件下载

直接下载:

用header()下载:

Google search

 inurl:"readfile.php?file=" inurl:"read.php?filename=" inurl:"download.php?file=" inurl:"down.php?file=" 等等... 

漏洞利用代码

 readfile.php?file=/etc/passwd readfile.php?file=../../../../../../../../etc/passwd readfile.php?file=../../../../../../../../etc/passwd%00 

1.文件被解析,则是文件包含漏洞
2.显示源代码,则是文件读取漏洞
3.提示文件下载,则是文件下载漏洞

漏洞挖掘

 可以用Google hacking或Web漏洞扫描器 从链接上看,形如: • readfile.php?file=***.txt • download.php?file=***.rar 从参数名看,形如: • &RealPath= • &FilePath= • &filepath= • &Path= • &path= • &inputFile= • &url= • &urls= • &Lang= • &dis= • &data= • &readfile= • &filep= • &src= • &menu= • META-INF • WEB-INF 目录符号等 ../ ..\ .\ ./等 %00 ? %23 %20 .等 

漏洞验证

 • index.php?f=../../../../../../etc/passwd • index.php?f=../index.php • index.php?f=file:///etc/passwd 注:当参数f的参数值为php文件时,若是文件被解析则是文件包含漏洞, 若显示源码或提示下载则是文件查看与下载漏洞 

漏洞防范

任意文件下载漏洞的简单防护措施
1、过滤“.”符号,使用户在url中无法回溯到上级目录。
2、使用正则表达式严格判断用户输入参数的格式。
3、php.ini配置文件中对于open_basedir进行配置,限定用户的文件访问范围。
4、固定目录

案例

pikuchu靶场-文件下载测试

1、判断是否为文件上传漏洞

在这里插入图片描述

点击任意图片,发现下载了图片,复制图片下载链接查看

http://127.0.0.1/xscj/pikachu-master/vul/unsafedownload/execdownload.php?filename=kb.png

查看参数名为filename,查看参数后面的值也与下载的文件名一样
初步判定为文件上传漏洞

2、判断下载路径
filename的文件名是单纯的文件名,可判断是前面加了路径名,也可能是与网站在同一个目录下
通过URL判断文件是通过跳转到execdownload.php页面下载的,我们试试看可不可以直接下载到execdownload.php这个源码

http://127.0.0.1/xscj/pikachu-master/vul/unsafedownload/execdownload.php?filename=execdownload.php

在这里插入图片描述

发现显示无法下载,说明该execdownload.php与文件不在同一个路径下,我们尝试下到上一级路径

http://127.0.0.1/xscj/pikachu-master/vul/unsafedownload/execdownload.php?filename=../execdownload.php

在这里插入图片描述

成功下载,打开源码发现是在download文件夹下

在这里插入图片描述

说明文件下载路径的文件夹与down_nba.php是同一级路径
3、尝试下载敏感文件(以下路径均通过扫描路径得到)
pikachu-master/inc/config.inc.php
当前下载路径:
pikachu-master/vul/unsafedownload/download/xxx.xxx
与vul相差3个父目录,所以加3个…/
完整url:
http://127.0.0.1/xscj/pikachu-master/vul/unsafedownload/execdownload.php?filename=…/…/…/inc/config.inc.php
下载成功,打开发现里面存在数据库相关的配置文件

在这里插入图片描述

小米路由器-文件读取真实测试-漏洞

复现

RoarCTF2019-文件读取真题复现

wp
首先看到一个页面,点击下help看看啥情况。
在这里插入图片描述

发现输出一串

 java.io.FileNotFoundException:{help.docx} 
提示: 本文由整理自网络,如有侵权请联系本站删除!
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!

-六神源码网