2579 字
13 分钟
第51天:WEB攻防-前后台功能点

051-WEB攻防-前后台功能点&文件下载&文件读取&文件删除&目录遍历&目录穿越#

可跳转目录#

一、知识点概览#

  1. 文件安全-前后台功能点:文件下载、文件读取、文件删除
  2. 目录安全-前后台功能点:目录遍历、目录穿越

二、演示案例#

  • 文件安全-下载&删除-案例黑白盒
  • 目录安全-遍历&穿越-案例黑白盒

三、文件安全-下载&删除-黑白盒#

3.1 文件下载(等同于文件读取,获取源码/敏感信息)#

文件下载漏洞的核心利用场景:通过可控的文件路径参数,下载服务器上的敏感文件(如数据库配置文件、中间件配置、系统密钥等),获取核心信息后进一步渗透。

f3ca6d8d37898743957d14f379d8a37b

漏洞演示(以实际URL为例)#

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

bfcf1e3e32ff3fb51c53675a5d4dfdf9

  1. 可控路径触发漏洞:在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默认数据库配置文件,下载后可获取数据库用户名、密码等隐私信息。

e94396cfc15cce9ffe3649e23e15edb2

8baa5730fe45fb079a8918209b91bccb

0aa0372ad16b1ea7b4492d89f16c7934

aab400c62ea17a01120860ffa8dfa7ec

734e2e4e6bf77dcfebd4b4f0abd1acd6

66e8913608c05948f91c0eaddc14bc5d

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实验室)#

  1. 靶场访问:注册并登录 PortSwigger Web Security Academy(建议用Gmail注册,避免验证邮件无法接收),选择“文件路径遍历,简单案例”实验室。
  2. 漏洞触发:访问实验室页面,任意点击图片,发现图片URL含可控参数 filename,如 https://0ae3006a032d097482c3eea700df003b.web-security-academy.net/image?filename=20.jpg
  3. 读取敏感文件:用Burp抓包,修改 filename 参数为Linux敏感路径 ../../../etc/passwd(通过 ../ 跳转上级目录,绕过路径限制),发送请求后,响应中会显示系统用户账户信息,证明文件读取漏洞存在。

72dc60f2db2ad9d5a30dabc274de5899

c364fe47d731cc17eeb75f5a91a854dd

c5fffcde573b3cdf37db87eaaddb98cb

3.3 文件删除(后台高危操作,常配合重装)#

文件删除漏洞多存在于网站后台(如“文件管理”“模板管理”功能),攻击者通过篡改删除路径,删除服务器关键文件(如安装锁定文件、首页源码),可能导致网站崩溃或触发重装流程,属于高危漏洞(实际利用中需谨慎,易造成破坏性影响)。

漏洞演示(后台文件删除功能)#

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

image-20250901140914674

image-20250901141115232

2a7a95bebea43e9ff3f7411c3b42ca5f

49911c55d5ff5054382a816d4c3e5f71

23a8bd242fe7ca77ba78ac066a896260

91a66d4737cdc5d9e13195d1a732e531

fb7a21ec0379ee395c20debacbf5ff7e

f4880da42583988492e78d8ddbcd2e6b

四、目录安全-遍历&穿越-黑白盒#

4.1 目录遍历(权限不当暴露目录结构)#

目录遍历漏洞的核心原因:服务器开启目录索引功能(当访问的目录中无默认索引文件,如 index.htmlindex.php 时,服务器会自动列出目录内的文件和子目录),导致目录结构、文件列表暴露,攻击者可据此寻找敏感文件(如备份文件、配置文件)。

漏洞特征与利用#

  1. 目录索引开启标识:访问目录URL(如 http://目标IP/files/)时,页面显示类似“Index of /files”的标题,下方列出目录内所有文件/子目录,证明目录索引已开启。
  2. 敏感文件挖掘:通过目录遍历,攻击者可查找:
    • 数据库备份文件(如 db_backup.sqlbackup_2024.sql
    • 配置文件(如 config.phpsetting.ini
    • 日志文件(如 access.logerror.log
  3. 批量查找工具/语法:用FOFA搜索引擎批量查找存在目录遍历的网站,FOFA语法:"index of /" && title=="Index of /" && country="CN"(筛选中国境内开启目录索引的网站)。

a8f0d10a48008521988ab3eb8850da6d-1

04574aa44d9cc529f632f685f3a63b91

1fcdea023432247a0d0295c70e7ab493

4.2 目录穿越(操纵路径访问未授权目录)#

目录穿越漏洞(又称“路径穿越”)的核心原因:应用程序对用户输入的目录路径验证不严格,攻击者通过操纵路径参数(如增减 ../),绕过预设的目录限制,访问服务器上未授权的目录,属于比目录遍历更具攻击性的漏洞(可直接访问后台目录、系统目录)。

漏洞演示(后台目录访问功能)#

  1. 正常访问限制:后台“模板管理”功能仅允许访问 default 目录及子目录,正常URL:http://192.168.137.1:86/gws3vo/admin_template.php?path=../templets/default/html(仅能查看 default/html 下的文件)。bff1e2e81022f9eedddee8131096bb80

    ebc051e16922df6e7457be358c9c761e

  2. 路径操纵突破限制

    • 跨目录访问其他模板目录: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系统根目录 /,可查看系统级目录如 etcroot)。

    c32812d1f1847130baada4b2990b94c4

    9d1a80b61967b5206a1891ea4add88c2

  3. 漏洞本质:应用程序未对 path 参数中的 ../ 进行过滤或解析,导致攻击者可自由跳转目录,访问未授权资源。

五、黑盒分析方法#

黑盒分析(无源码情况下)的核心:通过功能点识别URL特征匹配,快速定位文件/目录相关漏洞,具体方法如下:

1. 功能点识别#

重点关注网站前后台中含以下功能的模块,这些模块是文件/目录漏洞的高发区:

  • 文件上传(如“头像上传”“附件上传”)
  • 文件下载(如“文档下载”“备份下载”)
  • 文件删除(如“文件管理”“模板删除”)
  • 文件管理器(如“在线文件编辑”“目录查看”)

2. URL特征匹配#

通过URL中的关键词判断是否存在可控路径/文件参数,常见关键词如下:

类型常见关键词(URL路径/参数名)
文件名相关downloaddownreadfilereaddeldirpathsrcLang
参数名相关filepathdatafilepathreadfileurlrealpathfilenamedirpath

示例:若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")),若未对参数进行路径过滤(如过滤 ../、限制访问目录),则存在文件/目录漏洞。

第51天:WEB攻防-前后台功能点
https://konwait12.github.io/my-kon-blog/posts/051web攻防/
作者
k-on!--wait
发布于
2025-08-28
许可协议
CC BY-NC-SA 4.0