diff --git a/README.md b/README.md index c943c74..66adb2d 100755 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ - 全自动分析网站的WAF并生成相应的payload - 使用精确模式全面分析网站或使用快速模式减少不必要的网络请求 - 支持攻击对应的HTML表单或HTML路径 +- 使用Shell指令对要发送的payload进行编码 - 方便的网页界面/命令行界面 ## 快速上手 @@ -117,6 +118,8 @@ docker run -it --net host fenjing webui ### 作为命令行脚本使用 +各个功能的介绍: + - webui: 网页UI - 顾名思义,网页UI - 默认端口11451 @@ -134,6 +137,27 @@ docker run -it --net host fenjing webui - 示例:`python -m fenjing crack-path --url 'http://xxx/hello/'` - get-config: 对某个特定的表单进行攻击,但是只获取flask config - 参数大致上和crack相同 + +一些特殊的选项: + +- `--detect-mode`:检测模式,可为accurate或fast + - 默认为accurate + - 在开始尝试触发WAF, 获取WAF页面对应hash时: + - accurate模式会一个接一个地发送尽可能多的payload + - fast模式会将多个payload组合在一起发送, + - 在生成payload时: + - accurate模式会先从最简单的方法试起 + - fast模式会先尝试使用复杂但通常更能绕过WAF的方法 +- `--tamper-cmd`:编码payload + - 某些情况下,目标会先将用户输入进行base64解码后再渲染 + - tamper-cmd可以在payload发出前先调用shell指令对payload进行编码,从而处理上述情况 + - 例如: + - `--tamper-cmd 'rev'`:将payload反转后再发出 + - `--tamper-cmd 'base64'`:将payload进行base64编码后发出 + - `--tamper-cmd 'base64 | rev'`:将payload进行base64编码并反转后再发出 + - 更多例子可以参考[examples.md](examples.md) + + ``` Usage: python -m fenjing scan [OPTIONS] @@ -147,6 +171,7 @@ Options: --user-agent TEXT 请求时使用的User Agent --header TEXT 请求时使用的Headers --cookies TEXT 请求时使用的Cookie + --tamper-cmd TEXT 在发送payload之前进行编码的命令,默认不进行额外操作 --help Show this message and exit. Usage: python -m fenjing crack [OPTIONS] @@ -164,6 +189,7 @@ Options: --user-agent TEXT 请求时使用的User Agent --header TEXT 请求时使用的Headers --cookies TEXT 请求时使用的Cookie + --tamper-cmd TEXT 在发送payload之前进行编码的命令,默认不进行额外操作 --help Show this message and exit. Usage: python -m fenjing get-config [OPTIONS] @@ -180,6 +206,7 @@ Options: --user-agent TEXT 请求时使用的User Agent --header TEXT 请求时使用的Headers --cookies TEXT 请求时使用的Cookie + --tamper-cmd TEXT 在发送payload之前进行编码的命令,默认不进行额外操作 --help Show this message and exit. Usage: python -m fenjing crack-path [OPTIONS] @@ -194,6 +221,7 @@ Options: --user-agent TEXT 请求时使用的User Agent --header TEXT 请求时使用的Headers --cookies TEXT 请求时使用的Cookie + --tamper-cmd TEXT 在发送payload之前进行编码的命令,默认不进行额外操作 --help Show this message and exit. ``` @@ -229,4 +257,4 @@ if __name__ == "__main__": ## 项目结构 -[![](https://mermaid.ink/img/pako:eNp1VE1PxCAQ_SuERE_2D-zBg_GoF_WkNc0sHbZECisf7upm_7tQrNCPpUnDPB5vhpmBE2W6RbqhXOoD68A48nJXKxKG9dudgX1HvBPSkgTGwbTURvxgRgx-erQOTYa4Nn25RVmXzTRD1c49WTSVUEGIA8PSpRRvHOyGQxUWe6FARuw9Mw649ZGzjRwuDHJ9TOD7RIZU1W3C_4Mgsyhi6DZvuroibdBjTmhFnh4Kl8Ab7hVrdqia6Xmj1TAD7KPMiWWgGm_kOi9FVmheytIeXGcvhBHX8lK0lmGU6MJpoTB4Xvj-lhrawn3Ozdg4fwV3eHTNF5iCazuUsvnTmJC52C1x7jM7JyQdYQWcypDrqbvhpHPFASzt65XI_yswts-yuuPKtMIjuixD-g9teEFx1hlrwSfirJrrxPjRG9qHuwOiDdf9FDfX1HXYY003YarQOwOyprU6Byp4p5-_FaMbZzzeUL9vweG9gNAHPQ2XTNqA7kG9ap1tbIXT5jE9KcPLcv4FmdNlhw?type=png)](https://mermaid.live/edit#pako:eNp1VE1PxCAQ_SuERE_2D-zBg_GoF_WkNc0sHbZECisf7upm_7tQrNCPpUnDPB5vhpmBE2W6RbqhXOoD68A48nJXKxKG9dudgX1HvBPSkgTGwbTURvxgRgx-erQOTYa4Nn25RVmXzTRD1c49WTSVUEGIA8PSpRRvHOyGQxUWe6FARuw9Mw649ZGzjRwuDHJ9TOD7RIZU1W3C_4Mgsyhi6DZvuroibdBjTmhFnh4Kl8Ab7hVrdqia6Xmj1TAD7KPMiWWgGm_kOi9FVmheytIeXGcvhBHX8lK0lmGU6MJpoTB4Xvj-lhrawn3Ozdg4fwV3eHTNF5iCazuUsvnTmJC52C1x7jM7JyQdYQWcypDrqbvhpHPFASzt65XI_yswts-yuuPKtMIjuixD-g9teEFx1hlrwSfirJrrxPjRG9qHuwOiDdf9FDfX1HXYY003YarQOwOyprU6Byp4p5-_FaMbZzzeUL9vweG9gNAHPQ2XTNqA7kG9ap1tbIXT5jE9KcPLcv4FmdNlhw) +[![](https://mermaid.ink/img/pako:eNptU8tuwyAQ_BWE1JziH8ihh6rXntpT68ja4CVGxYvLo0ka5d-L7SQGxxwQDLuzj1nOXJga-YZLbQ6iAevZx0tJLC4XdnsLXcOCV9qxEeyXMNpY9YcTYvEnoPNoJ0ga26Yu5Px0HU9I9TySQ1soikQSBKYhtfqS4DYSivjYKgLdY9vJ4oC70NvsehupLEpzHMFtRsOK4nnE70mwWRbCgvhG6xK_EUmigaxkIFHtkSY0MrTKZ21wAqgKVj9wDXksOKTPy1FSdIllaGtJs6I6OGkDdVLU0xOrY5-EV4buol_F8nj01S-kPXANal1daTJjqfaPuAyTdZ7_IpjTsFUebihzzjiA6X21kPl9xm7SZ1LewFylcR9mZMEl0eexxpL4mrdxQkHV8VOde5-S-wZbLPkmHgmDt6BLXtIlmkLw5v1Egm-8DbjmoavB46uCKFrL4yhrF9EO6NOY6Y618sa-jR93-L-Xf1aoMIE?type=png)](https://mermaid.live/edit#pako:eNptU8tuwyAQ_BWE1JziH8ihh6rXntpT68ja4CVGxYvLo0ka5d-L7SQGxxwQDLuzj1nOXJga-YZLbQ6iAevZx0tJLC4XdnsLXcOCV9qxEeyXMNpY9YcTYvEnoPNoJ0ga26Yu5Px0HU9I9TySQ1soikQSBKYhtfqS4DYSivjYKgLdY9vJ4oC70NvsehupLEpzHMFtRsOK4nnE70mwWRbCgvhG6xK_EUmigaxkIFHtkSY0MrTKZ21wAqgKVj9wDXksOKTPy1FSdIllaGtJs6I6OGkDdVLU0xOrY5-EV4buol_F8nj01S-kPXANal1daTJjqfaPuAyTdZ7_IpjTsFUebihzzjiA6X21kPl9xm7SZ1LewFylcR9mZMEl0eexxpL4mrdxQkHV8VOde5-S-wZbLPkmHgmDt6BLXtIlmkLw5v1Egm-8DbjmoavB46uCKFrL4yhrF9EO6NOY6Y618sa-jR93-L-Xf1aoMIE) diff --git a/examples.md b/examples.md index 318cfa1..2ff91e2 100644 --- a/examples.md +++ b/examples.md @@ -32,6 +32,27 @@ webui不支持自定义Headers和Cookie等特性,如果需要更灵活的使 - 指定Header:`python -m fenjing crack --url 'http://xxx.xxx' --method GET --inputs name --header 'Aaa: Bbb' --header 'Ccc: Ddd'` - 指定Cookie:`python -m fenjing crack --url 'http://xxx.xxx' --method GET --inputs name --cookie 'name1=value1; name2=value2'` +### Tamper Cmd的使用 + +如果指定了`--tamper-cmd`参数,焚靖在每次提交payload时会使用指定的命令打开一个子进程,向这个子进程的标准输入传入payload, 并将子进程的输出作为编码后的结果进行提交。 + +例如:Linux中有一个命令行程序`base64`,它会从输入中读取内容,进行base64编码并输出 + +我们就可以使用`--tamper-cmd 'base64'`指定使用这个命令编码payload + +同样道理,`--tamper-cmd 'base64|rev'`就是先进行base64编码再将内容反转 + +也可以使用python来自定义编码方式,例子如下: + +先新建一个`encoder.py`,写入以下内容: + +```python +s = input() +print(s[::-1], end = "") # 将payload反转 +``` + +然后指定`--tamper-cmd 'python encoder.py'`就可以了 + ## 作为库使用