WAFPecker

WAFPecker- 一款配合fenjing的SSTI-WAF-Bypass工具

image-20241221225512129

GitHub 项目地址: [WAFPecker](YZS17/WAFPecker: A tool for bypassing SSTI-WAF used in CTF in conjunction with fenjing. (github.com))

简介

一款在CTF中配合fenjing使用的SSTI WAF Bypass工具

  • 作为一个正在学习CTF的小菜鸡,遇到题目能用工具一把嗦的时候,是能嗦则嗦,不想麻烦(因为麻烦的题也不会QAQ),但是有些时候会因为一些不可抗拒的因素不能直接嗦题,需要本地调试,为了更好的**嗦题**学习,我写了这个工具。

  • SSTI漏洞是CTFWeb方向常考的题型,在很多时候我们可以获取到源码,从而获取WAF的黑名单信息,需要我们根据黑名单来绕过,而fenjing不是所有时候都可以直接使用的,它需要根据回显来判断payload是否有效,但是难一些的题目经常会设计成无回显,这时候就需要我们修改源码,加上回显,再配合使用fenjing工具。(如2024长城杯的Safe_proxy,2024pwnsecCTFjinjia2 master

  • WAFPecker就是为了解决这一类情况而编写的项目,直接输入blacklist,即可模拟fenjing可测试的环境,配合fenjing使用,快速生成有效payload。希望我的工具可以帮到您。

  • 祝您好运!

使用方法

项目结构

1
2
3
4
5
6
7
/WAFPecker    
app.py //run this file to use this tool
__init__.py
views.py
waf.py //POST,you can also change to GET
blacklist.txt //write your WAF blacklist in this file.
requirement.txt

详细使用步骤

  • 打开 blacklist.txt文件, 按照下面的样式写入你的WAF黑名单 。

    1
    ["os", "system", "eval", 'setstate', "globals", 'exec', '__builtins__', 'template', 'render', '\\','compile', 'requests', 'exit',  'pickle',"class","mro","flask","sys","base","init","config","session"]
  • Python app.py 在终端中运行app.py文件

    image-20241221223751030

  • 打开地址 http://127.0.0.1:5000,浏览器显示以下页面,就是环境已经部署完毕。

    image-20241221224045869

    配合fenjing使用

  • 在终端中输入fenjing webui,运行fenjing

  • 请求方式填写POST,完成相关信息填写后,点击开始分析,等待右边显示WAF已绕过。就可以获得相关命令的payload了。

image-20241221223237433

  • 这样我们就获得了可以绕过当前blacklist-WAFpayload
1
{%set iq='so'[::-1]%}{{cycler.next['__g''lobals__']['_''_builtins__'].__import__(iq).popen('ls').read()}}

后续有时间的活会出一期使用WAFPecker解决2024长城杯和2024PwnsecCTFSSTI题目的文章,和大家一起学习,不足之处,请多多指正,谢谢大家!


WAFPecker
https://xu17.top/2024/12/20/WAFPecker/
作者
XU17
发布于
2024年12月20日
许可协议
XU17