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

关于Smuggler

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

工具安装

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

git clone https://github.com/defparam/smuggler.git

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

cd smuggler

python3 smuggler.py -h

工具使用

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

python3 smuggler.py -u <URL>

查看主机列表:

cat list_of_hosts.txt | python3 smuggler.py

工具参数选项

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://”。

工具配置文件

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

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

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>”命令行参数来指定要使用的配置文件。

工具提示

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

许可证协议

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

项目地址

Smuggler:【GitHub传送门】

参考资料

James Kettle upcoming talks & research portfolio

HTTP Desync Attacks: Request Smuggling Reborn | PortSwigger Research

NahamSec - Hacker | Trainer | Creative

NahamCon - A Virtual Security Conference

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/417568.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【学习记录】HC32F460USB——U盘IAP升级app

从头开始&#xff0c;万物从解压开始 直奔猪蹄&#xff0c;找到usb下的工程文件 开始移植 主要移植IAP的boot和fatfs的文件系统&#xff0c;fatfs官网去下载ff15.0版本&#xff0c;目前用这个 放到项目里 添加到工程文件中 改引脚&#xff0c;给USB放电 编译&#xff0c;可以…

GCC如何产生core dump

先决条件 1.安装apport&#xff08;automatically generate crash reports for debugging&#xff09; 2.修改/etc/security/limits.conf文件&#xff0c;使允许core dump&#xff0c;或者用ulimit -c unlimited设置core dump文件的大小为unlimited&#xff08;临时方案&#x…

生成voc格式数据集

数据集存放格式&#xff1a;&#xff08;Annotations文件夹放标注的xml文件&#xff0c;JPEGImages文件夹放标注的图片&#xff09; 运行代码&#xff1a; import os import random import xml.etree.ElementTree as ETimport numpy as npdef get_classes(classes_path):with …

Java中的时间API:Date、Calendar到Java.time的演变

引言 在软件开发中&#xff0c;处理时间和日期是一项基本且不可或缺的任务。无论是日志记录、用户信息管理还是复杂的定时任务&#xff0c;准确地处理时间都显得至关重要。然而&#xff0c;时间的处理并不像它看起来那么简单&#xff0c;尤其是当我们考虑到时区、夏令时等因素…

计算机组成原理-第一/二章 概述和数据的表示和运算【期末复习|考研复习】

文章目录 前言第一章 计算机组成原理 概述及各种码1.1 计算机硬件的基本组成1.1.1 存储器1.1.2 运算器1.1.3 控制器 1.2 计算机的工作过程1.3 计算机的性能指标1.4 各个字长区别与联系 第二章 数据的表示与运算2.1 ASCII码2.2 各种码2.3 浮点数 总结 前言 给大家整理了一下计算…

域控操作七:让某人不执行某策略/单独放行某人

比如我设置的是禁用移动热点&#xff0c;我在这里对某人拒绝&#xff0c;那他就能用移动热点

Qt6内嵌CEF

一、下载CEF CEF下载地址&#xff1a;https://cef-builds.spotifycdn.com/index.html 或https://bitbucket.org/chromiumembedded/cef/src/master/ 选择对应系统的版本&#xff08;本教程选择的是116.0.19&#xff09; CMake下载地址&#xff1a;https://cmake.org/download…

大数据界面:客户又又又要求科技感了,如何破?

如果你问客户想要什么风格&#xff0c;大部分脱口而出科技感&#xff0c;不仅要求静态页&#xff0c;而且还要求动态效果&#xff0c;炫酷动画&#xff0c;贝格前端工场结合多个项目经历&#xff0c;帮助友友们梳理如何让界面科技动感。 一、没有科技感背后的潜台词 客户说大数…

SI523 替代CLRC522/RC523,软硬件开发资料

​si523是一个 13.56MHz 的非接触式读写器芯片&#xff0c;支持 ISO/IEC 14443 A/B/MIFARE协议。内部集成低功耗自动寻卡与定时唤醒功能&#xff0c;可编程寻卡时间间隔&#xff0c;寻卡过程无需 MCU 操作&#xff0c;寻卡成功中断唤醒或定时唤醒 MCU 以实现低功耗。 产品特性…

笑营宝高校选修课报名考勤系统源码开发方案

一、项目背景与目标 &#xff08;一&#xff09;项目背景 随着高等教育的普及和教学模式的不断创新&#xff0c;高校选修课程体系日趋复杂多变。学生对课程选择的自由度提高&#xff0c;使得传统的选课和考勤管理方式变得繁琐且效率低下。目前&#xff0c;许多高校仍然采用纸…

金三银四,自动化测试面试题精选【美团二面】

面试一般分为技术面和hr面&#xff0c;形式的话很少有群面&#xff0c;少部分企业可能会有一个交叉面&#xff0c;不过总的来说&#xff0c;技术面基本就是考察你的专业技术水平的&#xff0c;hr面的话主要是看这个人的综合素质以及家庭情况符不符合公司要求&#xff0c;一般来…

Nginx之rewrite重写功能

目录 一、rewrite概述 1、rewrite功能 2、跳转场景 二、标准配置指令 1、rewrite日志记录指令 2、未初始化变量告警日志记录指令 3、rewrite 指令 3.1 正则表达式 三、rewrite模块使用实例 1.基于域名的跳转 2.基于客户端 IP 访问跳转 3. 基于旧域名跳转到新域名后面…

Spring Cloud2022之OpenFeign使用以及部分源码分析

OpenFeign使用 Feign和OpenFeign Feign是Netflix开发的⼀个轻量级RESTful的HTTP服务客户端&#xff0c;可以使用⽤它来发起请求&#xff0c;进行远程调用。Fegin是以Java接口注解的⽅式调⽤Http请求&#xff0c;而不是像RestTemplate那样&#xff0c;在Java中通过封装HTTP请求…

【茶话数据结构】查找最短路径——Dijkstra算法详解(保姆式详细图解,步步紧逼,保你学会)

&#x1f4af; 博客内容&#xff1a;【茶话数据结构】查找最短路径——Dijkstra算法详解 &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f989;所属专栏&#xff1a;数据结构笔记 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准前端&#xff0c;专注基础和实…

d3dcompiler_47.dll丢失的解决方法

d3dcompiler_47.dll 是一个属于 Microsoft DirectX 软件组件的动态链接库 (DLL) 文件。DirectX 是微软开发的一套广泛应用于 Windows 操作系统上的应用程序接口 (API)&#xff0c;主要用于处理多媒体、特别是与游戏和高级图形相关的任务&#xff0c;例如二维 (2D) 和三维 (3D) …

Aigtek高精度电流源仪器设计规范

高精度电流源仪器是一种用于产生和测量精确电流的设备&#xff0c;广泛应用于电子、通信、自动控制等领域。为了确保仪器的性能和可靠性&#xff0c;设计过程中需要遵循一些规范。 电流源仪器的设计要注重稳定性。稳定性是保证仪器输出电流精度的关键因素。设计过程中应选择高精…

稀疏图带负边的全源最短路Johnson算法

BellmanFord算法 Johnson算法解决的问题 带负权的稀疏图的全源最短路 算法流程 重新设置的每条边的权重都大于或等于0&#xff0c;跑完Djikstra后得到的全源最短路&#xff0c;记得要还原&#xff0c;即&#xff1a;f(u,v) d(u,v) - h[u] h[v] 例题

vue 解决:点击左侧相同菜单,右侧页面不重新加载的问题

1、问题描述&#xff1a; 其一、需求为&#xff1a; 无论是通过路由组件形成的平台管理系统&#xff0c;还是通过文件配置形成的平台管理系统&#xff0c;都存在通过切换左侧的导航栏而使右侧的页面切换的业务需求&#xff1b; 其二、问题描述为&#xff1a; A、步骤一&#…

【Unity】如何在Unity 中创建带有缩放效果的滚动视图(具有吸附效果的实现与优化)?

效果预览&#xff1a; 目录 效果预览&#xff1a; 一、引言&#xff1a; 二、问题描述 三、解决方案&#xff1a; 三、优化&#xff1a; 四、结论 一、引言&#xff1a; 在Unity开发中&#xff0c;经常需要实现滚动视图&#xff08;ScrollView&#xff09;中的内容吸附到…

印象笔记 - Markdown 入门指南

一、Markdown 是什么&#xff1f; Markdown 是一种轻量级的「标记语言」&#xff0c;创始人为约翰格鲁伯&#xff0c;用简洁的语法代替排版&#xff0c;目前被越来越多的知识工作者、写作爱好者、程序员或研究员广泛使用。其常用的标记符号不超过十个&#xff0c;相对于更为复…