前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Smuggler:一款功能强大的HTTP请求走私和去同步安全测试工具

Smuggler:一款功能强大的HTTP请求走私和去同步安全测试工具

作者头像
FB客服
发布2024-03-01 14:48:04
2380
发布2024-03-01 14:48:04
举报
文章被收录于专栏:FreeBuf

关于Smuggler

Smuggler是一款功能强大的HTTP请求走私和去同步安全测试工具,该工具基于纯Python 3开发,可以帮助广大研究人员针对应用程序的HTTP协议执行安全分析和测试。

工具安装

由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好Python 3环境。接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/defparam/smuggler.git

然后切换到项目目录中,执行下列命令即可查看工具帮助信息:

代码语言:javascript
复制
cd smuggler

python3 smuggler.py -h


工具使用

针对单个主机执行安全扫描:

代码语言:javascript
复制
python3 smuggler.py -u <URL>

查看主机列表:

代码语言:javascript
复制
cat list_of_hosts.txt | python3 smuggler.py

工具参数选项

代码语言:javascript
复制
usage: smuggler.py [-h] [-u URL] [-v VHOST] [-x] [-m METHOD] [-l LOG] [-q]

                   [-t TIMEOUT] [--no-color] [-c CONFIGFILE]

 

optional arguments:

  -h, --help             显示工具帮助信息和退出

  -u URL, --url URL      设置目标节点URL

  -v VHOST, --vhost VHOST

                        指定一个虚拟主机

  -x, --exit_early         扫描到第一个结果后退出扫描

  -m METHOD, --method METHOD

                        要使用的HTTP方法,例如GET或POST,默认为POST

  -l LOG, --log LOG      指定一个日志文件

  -q, --quiet             开启静默模式,仅显示找到的安全问题

  -t TIMEOUT, --timeout TIMEOUT

                        Socket超时值,默认为5

  --no-color             禁用颜色高亮显示

  -c CONFIGFILE, --configfile CONFIGFILE

                        Payload配置文件路径
(右滑查看更多)

需要注意的是,如果URL参数中指定了“https://”,那么Smuggler将会使用SSL/TLS与目标主机和端口链接。如果URL参数中指定的是“http://”,则不会使用SSL/TLS。如果不指定主机的话,工具默认使用“https://”。

代码语言:javascript
复制
工具配置文件

Smuggler的工具配置文件为Python文件,路径为“./config” ,这些文件用于米哦啊叔HTTP请求的内容以及要测试的传输编码变异。

下面给出的是default.py配置文件的内容样例:

代码语言:javascript
复制
def render_template(gadget):

RN = "\r\n"

p = Payload()

p.header  = "__METHOD__ __ENDPOINT__?cb=__RANDOM__ HTTP/1.1" + RN

# p.header += "Transfer-Encoding: chunked" +RN

p.header += gadget + RN

p.header += "Host: __HOST__" + RN

p.header += "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36" + RN

p.header += "Content-type: application/x-www-form-urlencoded; charset=UTF-8" + RN

p.header += "Content-Length: __REPLACE_CL__" + RN

return p

 

 

mutations["nameprefix1"] = render_template(" Transfer-Encoding: chunked")

mutations["tabprefix1"] = render_template("Transfer-Encoding:\tchunked")

mutations["tabprefix2"] = render_template("Transfer-Encoding\t:\tchunked")

mutations["space1"] = render_template("Transfer-Encoding : chunked")

 

for i in [0x1,0x4,0x8,0x9,0xa,0xb,0xc,0xd,0x1F,0x20,0x7f,0xA0,0xFF]:

mutations["midspace-%02x"%i] = render_template("Transfer-Encoding:%cchunked"%(i))

mutations["postspace-%02x"%i] = render_template("Transfer-Encoding%c: chunked"%(i))

mutations["prespace-%02x"%i] = render_template("%cTransfer-Encoding: chunked"%(i))

mutations["endspace-%02x"%i] = render_template("Transfer-Encoding: chunked%c"%(i))

mutations["xprespace-%02x"%i] = render_template("X: X%cTransfer-Encoding: chunked"%(i))

mutations["endspacex-%02x"%i] = render_template("Transfer-Encoding: chunked%cX: X"%(i))

mutations["rxprespace-%02x"%i] = render_template("X: X\r%cTransfer-Encoding: chunked"%(i))

mutations["xnprespace-%02x"%i] = render_template("X: X%c\nTransfer-Encoding: chunked"%(i))

mutations["endspacerx-%02x"%i] = render_template("Transfer-Encoding: chunked\r%cX: X"%(i))

mutations["endspacexn-%02x"%i] = render_template("Transfer-Encoding: chunked%c\nX: X"%(i))
(右滑查看更多)


当前版本的Smuggler提供了三个配置文件,及default.py(快速)、doubles.py(小众使用,慢)、exhaustive.py(非常慢),其中default.py是最快的,其中包含了较少的变异。

我们可以直接使用“-c/--configfile <configfile>”命令行参数来指定要使用的配置文件。

工具提示

此工具不能保证没有假阳性或假阴性,该工具的输出结果仅表明目标可能存在潜在安全问题,我们还需要对工具输出结果进行深入分析和测试后才可得出结论。

代码语言:javascript
复制
许可证协议

本项目的开发与发布遵循MIT开源许可证协议。

项目地址

Smuggler:

https://github.com/defparam/smuggler

https://skeletonscribe.net/ https://portswigger.net/research/http-desync-attacks-request-smuggling-reborn https://www.nahamsec.com/ https://nahamcon.com/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工具参数选项
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档