Web安全基础学习:任意文件下载漏洞

随笔4个月前发布 舜公郑金锋
32 0 0

🤟 基于入门网络安全打造的:👉黑客&网络安全入门&进阶学习资源包

理论基础

任意文件下载漏洞介绍

一些网站由于业务需要,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,攻击者就能够通过回溯符../或绝对路径跳转到任意目录查看或下载任意的文件;这可能是代码源文件,敏感配置文件等等,在特定的场景下,还可能造成SSRF漏洞。

漏洞成因

由于没有对用户输入的文件名进行过滤,而造成用户输入的文件名可以通过…/实现路径穿越来访问其他目录下的文件并下载。一些应用或者服务器可能配置存在问题,导致可以直接回溯目录读取任意文件。通过将非法路径文件写入数据库再调用进行二次利用,形似二次注入。

常见攻击点(测试点)

功能上:读取/下载图片、文件内容;下载附件;预览文档;导出文档;修改、保存文档等。

路径上:download.xxx?xxx=down.xxx?xxx=getfile.xxx?xxx=data.php?xxx=等。

参数上:RealPath=FilePath=file=filename=Path=path=getFile=url=urls=Lang=dis=data=readfile=filep=src=menu=META-INF=&WEB-INF=等。

利用思路

查看常规的配置文件,如ssh数据库ftp等查看常规的包含敏感信息的文件,如各用户的.bash_history等查看网站日志access.log,找找网站后台、用户密码、别人的shell等查看源代码进行审计…

常见绕过方式

双写:适用于对../置空的情况,如..././config 去掉../的结果为../config。编码:URL编码、两次URL编码、十六进制编码等;URL编码一般后端会解析一次,其他的编码需要分析服务端是否会进行解析。路径穿越+截断:当代码中固定文件后缀名时,可以使用字符来截断后缀名。HPP、分块传输、填充垃圾字符等。

任意文件下载漏洞防御

在配置文件中限制访问的文件目录。检查用户输入,过滤或转义含有../..%00.../#等跳转目录或字符终止符、截断字符的输入。严格过滤用户输入字符的合法性,比如文件类型、文件地址、文件内容等。白名单限定访问文件的目录、路径、名称。白名单限定访问文件的后缀如jpg、gif、png、rar、zip、pdf、doc、xls、ppt等。

其他学习文章

d4m1ts知识库-任意文件下载:读取CSDN-任意文件读取/下载漏洞总结CSDN-web渗透测试—-7、任意文件读取、下载漏洞先知-浅析文件读取与下载漏洞

实践学习

漏洞环境以Pilot靶场为例:下载地址与部署教程

进入漏洞页面,抓包并下载任意文件:

Web安全基础学习:任意文件下载漏洞

发现参数file传入了文件名,尝试穿越目录下载任意文件:

Web安全基础学习:任意文件下载漏洞

附录:常见攻击路径

WINDOWS

C:windowswin.ini //可以用来判断是否为windows系统
C:oot.ini //查看系统版本
C:WindowsSystem32inetsrvMetaBase.xml //IIS 配置文件
C:Windows
epairsam //存储系统初次安装的密码
C:Program Filesmysqlmy.ini //Mysql 配置
C:Program Filesmysqldatamysqluser.MYD //Mysql root
C:Windowsphp.ini //php 配置信息
C:Windowsmy.ini //Mysql 配置信息

# 需要管理员权限
%ProgramData%MicrosoftSearchDataApplicationsWindowsWindows.edb
%ProgramData%MicrosoftSearchDataApplicationsWindowsGatherLogsSystemIndex 目录下文件名类似SystemIndex.[数字序号].gthr

%systemroot%System32winevtLogs目录下的evtx日志文件,名字固定如下
Application.evtx
ConnectionInfo.evtx
Error.evtx
HardwareEvents.evtx
Internet Explorer.evtx
Key Management Service.evtx
Media Center.evtx
Microsoft-Windows-API-Tracing%4Operational.evtx
Microsoft-Windows-AppID%4Operational.evtx
Microsoft-Windows-Application Server-Applications%4Admin.evtx
Microsoft-Windows-Application Server-Applications%4Operational.evtx
Microsoft-Windows-Application-Experience%4Problem-Steps-Recorder.evtx
Microsoft-Windows-Application-Experience%4Program-Compatibility-Assistant.evtx
Microsoft-Windows-Application-Experience%4Program-Compatibility-Troubleshooter.evtx
Microsoft-Windows-Application-Experience%4Program-Inventory.evtx
Microsoft-Windows-Application-Experience%4Program-Telemetry.evtx
.........省略

# 不需要管理员权限
%userprofile%AppDataRoamingMicrosoftWindowsPowerShellPSReadlineConsoleHost_history.txt # 类似.bash_history
%userprofile%appdatalocaliconcache.db # 类似locate的db文件




12345678910111213141516171819202122232425262728293031323334353637

LINUX

/etc/passwd
/etc/shadow
/etc/hosts
/var/lib/mlocate/mlocate.db // locate命令的索引数据库文件,每天更新一次,大宝贝
/root/.bash_history //root 的 bash 历史记录
/root/.mysql_history //mysql 的 bash 历史记录
/root/.wget-hsts
/opt/nginx/conf/nginx.conf //nginx 的配置文件
/var/www/html/index.html
/etc/redis.conf
/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
其会去保存文档和目录名称到数据库内(这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次),然后查找合乎范本样式条件的文档或目录。一般这个数据库的位置在:

# ssh相关
/root/.ssh/id_rsa
/root/.ssh/id_rsa.pub
/root/.ssh/authorized_keys
/root/.ssh/known_hosts //记录每个访问计算机用户的公钥
/etc/ssh/sshd_config
/var/log/secure
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/syscomfig/network-scripts/ifcfg-eth1




123456789101112131415161718192021222324252627282930313233343536373839

其他服务路径

/NetServerinstableapachephp.ini
/NetServerinstableapachephp.ini%00
/PHPphp.ini
/PHPphp.ini%00
/Program FilesApache GroupApache2confhttpd.conf
/Program FilesApache GroupApache2confhttpd.conf%00
/Program FilesApache GroupApacheconfhttpd.conf
/Program FilesApache GroupApacheconfhttpd.conf%00
/Program FilesApache GroupApachelogsaccess.log
/Program FilesApache GroupApachelogsaccess.log%00
/Program FilesApache GroupApachelogserror.log
/Program FilesApache GroupApachelogserror.log%00
/Program Filesxamppapacheconfhttpd.conf
/Program Filesxamppapacheconfhttpd.conf%00
/Volumes/Macintosh_HD1/opt/apache/conf/httpd.conf
/Volumes/Macintosh_HD1/opt/apache/conf/httpd.conf%00
/Volumes/Macintosh_HD1/opt/apache2/conf/httpd.conf
/Volumes/Macintosh_HD1/opt/apache2/conf/httpd.conf%00
/Volumes/Macintosh_HD1/opt/httpd/conf/httpd.conf
/Volumes/Macintosh_HD1/opt/httpd/conf/httpd.conf%00
/Volumes/Macintosh_HD1/usr/local/php/httpd.conf.php
/Volumes/Macintosh_HD1/usr/local/php/httpd.conf.php%00
/Volumes/Macintosh_HD1/usr/local/php/lib/php.ini
/Volumes/Macintosh_HD1/usr/local/php/lib/php.ini%00
/Volumes/Macintosh_HD1/usr/local/php4/httpd.conf.php
/Volumes/Macintosh_HD1/usr/local/php4/httpd.conf.php%00
/Volumes/Macintosh_HD1/usr/local/php5/httpd.conf.php
/Volumes/Macintosh_HD1/usr/local/php5/httpd.conf.php%00
/Volumes/webBackup/opt/apache2/conf/httpd.conf
/Volumes/webBackup/opt/apache2/conf/httpd.conf%00
/Volumes/webBackup/private/etc/httpd/httpd.conf
/Volumes/webBackup/private/etc/httpd/httpd.conf%00
/Volumes/webBackup/private/etc/httpd/httpd.conf.default
/Volumes/webBackup/private/etc/httpd/httpd.conf.default%00
/WINDOWSphp.ini
/WINDOWSphp.ini%00
/WINNTphp.ini
/WINNTphp.ini%00C:WINDOWSphp.ini
C:WINDOWSwin.ini
C:WINNTphp.ini
C:oot.ini
Program Files (x86)Apache GroupApachelogsaccess.log
Program Files (x86)Apache GroupApachelogserror.log
Program FilesApache GroupApache2confhttpd.conf
Program FilesApache GroupApacheconfhttpd.conf
Program FilesApache GroupApachelogsaccess.log
Program FilesApache GroupApachelogserror.log
Program Filesxamppapacheconfhttpd.conf
apache2logaccess.log
apache2logaccess_log
apache2logerror.log
apache2logerror_log
apache2logsaccess.log
apache2logsaccess_log
apache2logserror.log
apache2logserror_log
apachelogaccess.log
apachelogaccess_log
apachelogerror.log
apachelogerror_log
apachelogsaccess.log
apachelogsaccess_log
apachelogserror.log
apachelogserror_log
logaccess.log
logaccess_log
logerror.log
logerror_log
loghttpdaccess_log
loghttpderror_log
logsaccess.log
logsaccess_log
logserror.log
logserror_log
logshttpdaccess_log
logshttpderror_log
mysqlinmy.ini
optxampplogsaccess.log
optxampplogsaccess_log
optxampplogserror.log
optxampplogserror_log
xamppFileZillaFTPFileZilla Server.xml
xamppFileZillaFTPLogs
xamppFileZillaFTPLogsaccess.log
xamppFileZillaFTPLogserror.log
xamppMercuryMailLOGSaccess.log
xamppMercuryMailLOGSerror.log
xamppMercuryMailmercury.ini
xamppapacheconfhttpd.conf
xamppapachelogsaccess.log
xamppapachelogserror.log
xamppmysqldatamysql.err
xamppphpMyAdminconfig.inc
xamppphpMyAdminconfig.inc.php
xamppphpMyAdminphpinfo.php
xamppphpphp.ini
xamppphpmyadminconfig.inc
xamppphpmyadminconfig.inc.php
xamppphpmyadminphpinfo.php
xamppsendmailsendmail.ini
xamppsendmailsendmail.log
xampp	omcatconf	omcat-users.xml
xampp	omcatconfweb.xml
xamppwebalizerwebalizer.conf
xamppwebdavwebdav.txt
php://input




123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
给大家的福利

🤟 基于入门网络安全打造的:👉黑客&网络安全入门&进阶学习资源包

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

Web安全基础学习:任意文件下载漏洞

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

Web安全基础学习:任意文件下载漏洞

2️⃣视频配套资料&国内外网安书籍、文档
① 文档和书籍资料

Web安全基础学习:任意文件下载漏洞

② 黑客技术

Web安全基础学习:任意文件下载漏洞

Web安全基础学习:任意文件下载漏洞

因篇幅有限,仅展示部分资料

Web安全基础学习:任意文件下载漏洞

4️⃣网络安全面试题

Web安全基础学习:任意文件下载漏洞

5️⃣汇总

Web安全基础学习:任意文件下载漏洞

Web安全基础学习:任意文件下载漏洞

所有资料 ⚡️ ,朋友们如果有需要全套 《网络安全入门+进阶学习资源包》,扫码获取~

Web安全基础学习:任意文件下载漏洞

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...