关闭

Smuggler:功能强大的HTTP安全测试工具

发表于:2024-3-21 09:29

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Alpha_h4ck    来源:FreeBuf

  关于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开源许可证协议。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号