Accéder au contenu principal

Smuggler - An HTTP Request Smuggling / Desync Testing Tool


An HTTP Request Smuggling / Desync testing tool written in Python 3


IMPORTANT

This tool does not guarantee no false-positives or false-negatives. Just because a mutation may report OK does not mean there isn't a desync issue, but more importantly just because the tool indicates a potential desync issue does not mean there definitely exists one. The script may encounter request processors from large entities (i.e. Google/AWS/Yahoo/Akamai/etc..) that may show false positive results.


Installation

  1. git clone https://github.com/defparam/smuggler.git
  2. cd smuggler
  3. python3 smuggler.py -h

Example Usage

Single Host:

python3 smuggler.py -u <URL>

List of hosts:

cat list_of_hosts.txt | python3 smuggler.py

Options

usage: smuggler.py [-h] [-u URL] [-v VHOST] [-x] [-m METHOD] [-l LOG] [-q]
[-t TIMEOUT] [--no-color] [-c CONFIGFILE]

optional arguments:
-h, --help show this help message and exit
-u URL, --url URL Target URL with Endpoint
-v VHOST, --vhost VHOST
Specify a virtual host
-x, --exit_early Exit scan on first finding
-m METHOD, --method METHOD
HTTP method to use (e.g GET, POST) Default: POST
-l LOG, --log LOG Specify a log file
-q, --quiet Quiet mode will only log issues found
-t TIMEOUT, --timeout TIMEOUT
Socket timeout value Default: 5
--no-color Suppress color codes
-c CONFIGFILE, --configfile CONFIGFILE
Filepath to the configuration file of payloads

Smuggler at a minimum requires either a URL via the -u/--url argument or a list of URLs piped into the script via stdin. If the URL specifies https:// then Smuggler will connect to the host:port using SSL/TLS. If the URL specifies http:// then no SSL/TLS will be used at all. If only the host is specified, then the script will default to https://

Use -v/--vhost <host> to specify a different host header from the server address

Use -x/--exit_early to exit the scan of a given server when a potential issue is found. In piped mode smuggler will just continue to the next host on the list

Use -m/--method <method> to specify a different HTTP verb from POST (i.e GET/PUT/PATCH/OPTIONS/CONNECT/TRACE/DELETE/HEAD/etc...)

Use -l/--log <file> to write output to file as well as stdout

Use -q/--quiet reduce verbosity and only log issues found

Use -t/--timeout <value> to specify the socket timeout. The value should be high enough to conclude that the socket is hanging, but low enough to speed up testing (default: 5)

Use --no-color to suppress the output color codes printed to stdout (logs by default don't include color codes)

Use -c/--configfile <configfile> to specify your smuggler mutation configuration file (default: default.py)


Config Files

Configuration files are python files that exist in the ./config directory of smuggler. These files describe the content of the HTTP requests and the transfer-encoding mutations to test.

Here is example content of 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))

There are no input arguments yet on specifying your own customer headers and user-agents. It is recommended to create your own configuration file based on default.py and modify it to your liking.

Smuggler comes with 3 configuration files: default.py (fast), doubles.py (niche, slow), exhaustive.py (very slow) default.py is the fastest because it contains less mutations.

specify configuration files using the -c/--configfile <configfile> command line option


Payloads Directory

Inside the Smuggler directory is the payloads directory. When Smuggler finds a potential CLTE or TECL desync issue, it will automatically dump a binary txt file of the problematic payload in the payloads directory. All payload filenames are annotated with the hostname, desync type and mutation type. Use these payloads to netcat directly to the server or to import into other analysis tools.


Helper Scripts

After you find a desync issue feel free to use my Turbo Intruder desync scripts found Here: https://github.com/defparam/tiscripts DesyncAttack_CLTE.py and DesyncAttack_TECL.py are great scripts to help stage a desync attack


License

These scripts are released under the MIT license. See LICENSE.



More information
  1. Hacker Tools 2020
  2. Computer Hacker
  3. Hacking Tools For Mac
  4. Hacking Tools 2020
  5. Nsa Hacker Tools
  6. Nsa Hack Tools Download
  7. Pentest Tools Open Source
  8. Hacking Tools Free Download
  9. Hacking Tools For Pc
  10. Tools 4 Hack
  11. What Are Hacking Tools
  12. How To Hack
  13. Hacking Tools Github
  14. Tools For Hacker
  15. Hacking App
  16. Hack Tools Github
  17. Hacking Tools
  18. Hack Tools For Pc
  19. Hacker Tools Apk
  20. Pentest Tools Apk
  21. Pentest Tools Nmap
  22. What Is Hacking Tools
  23. Hacker Tools Software
  24. Hack Tools 2019
  25. Hack Tools Pc
  26. Hack Tools Github
  27. Pentest Tools Apk
  28. Pentest Tools Online
  29. Hacker Tools Hardware
  30. Pentest Tools Alternative
  31. Hacking Tools Kit
  32. Hacker Tools Software
  33. Pentest Automation Tools
  34. Best Hacking Tools 2020
  35. Black Hat Hacker Tools
  36. Hacking Tools Download
  37. Hacking Tools For Windows
  38. Pentest Tools Android
  39. Hack Tools For Games
  40. Hacking Tools For Windows Free Download
  41. Hack Tools Mac
  42. New Hack Tools
  43. How To Make Hacking Tools
  44. Pentest Tools Kali Linux
  45. Pentest Box Tools Download
  46. Nsa Hack Tools Download
  47. Hack And Tools
  48. Hack Tools Download
  49. Hacker Techniques Tools And Incident Handling
  50. Wifi Hacker Tools For Windows
  51. Best Hacking Tools 2019
  52. Hacking Tools For Pc
  53. New Hacker Tools
  54. Hak5 Tools
  55. Hacking Tools Github
  56. Hacking App
  57. Blackhat Hacker Tools
  58. Hack Rom Tools
  59. Pentest Reporting Tools
  60. Termux Hacking Tools 2019
  61. Hack Tool Apk No Root
  62. Pentest Tools Open Source
  63. Blackhat Hacker Tools
  64. Tools For Hacker

Commentaires

Posts les plus consultés de ce blog

آفرینک | تماشای آنلاین انیمیشن و کارتون

https://afarinak.com/tags/%D8%A7%D9%86%DB%8C%D9%85%DB%8C%D8%B4%D9%86-%D9%87%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%AF%D9%87-%D8%A7%D8%B3%DA%A9%D8%A7%D8%B1/ https://afarinak.com/tags/%D9%BE%D8%B1%D9%81%D8%B1%D9%88%D8%B4%D8%AA%D8%B1%DB%8C%D9%86-%D8%A7%D9%86%DB%8C%D9%85%DB%8C%D8%B4%D9%86-%D9%87%D8%A7%DB%8C-2016/ https://afarinak.com/tags/best-animated-movies-2017/ https://tidano.com/ https://funibo.com/ http://www.aparat.com/afarinak https://t.me/joinchat/AAAAAD67ZyQn7_qBcGjPgw https://www.instagram.com/afarinak_com/ https://twitter.com/afarinak

Go Macro Bars

Go Macro Energy Bars - In fact, brown rice syrup weighs more than a lot of the opposite ingredients in these bars. So regardless that the bars comprise more oats and nuts by quantity, brown rice syrup must be listed first because it weighs more. As a side observe, I like firms that give again to society. I used to be given the opportunity to strive their three new bar flavors (despatched to me by GoMacro). It was also shocking, since these bars usually are not as candy as many other bars in the marketplace. Plus, a portion of the proceeds from their Everlasting Joy Bars goes towards feeding the homeless. It appears that evidently by regulation substances have to be listed so as of weight, and brown rice syrup could be very dense. And GoMacro selects one taste every quarter to highlight as their "Give Back Bar." They donate 10% of the gross sales of that bar to a non-revenue group. Nevertheless, I was concerned that brown rice syrup is the first ingredient in most o...