mirror of
https://github.com/mitmproxy/mitmproxy.git
synced 2024-11-27 23:30:28 +00:00
Start a fuzzing architecture for mitmproxy
This commit is contained in:
parent
35075a31a8
commit
efd6fdb0e2
@ -1,10 +1,13 @@
|
||||
from __future__ import absolute_import
|
||||
import sys, os
|
||||
import sys
|
||||
import os
|
||||
import netlib.utils
|
||||
from . import flow, filt, utils
|
||||
from .protocol import http
|
||||
|
||||
class DumpError(Exception): pass
|
||||
|
||||
class DumpError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class Options(object):
|
||||
@ -37,6 +40,7 @@ class Options(object):
|
||||
"replay_ignore_content",
|
||||
"replay_ignore_params",
|
||||
]
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
for k, v in kwargs.items():
|
||||
setattr(self, k, v)
|
||||
@ -71,7 +75,7 @@ class DumpMaster(flow.FlowMaster):
|
||||
self.anticache = options.anticache
|
||||
self.anticomp = options.anticomp
|
||||
self.showhost = options.showhost
|
||||
self.replay_ignore_params = options.replay_ignore_params
|
||||
self.replay_ignore_params = options.replay_ignore_params
|
||||
self.replay_ignore_content = options.replay_ignore_content
|
||||
self.refresh_server_playback = options.refresh_server_playback
|
||||
|
||||
@ -88,7 +92,6 @@ class DumpMaster(flow.FlowMaster):
|
||||
if options.stickyauth:
|
||||
self.set_stickyauth(options.stickyauth)
|
||||
|
||||
|
||||
if options.wfile:
|
||||
path = os.path.expanduser(options.wfile)
|
||||
try:
|
||||
|
@ -275,4 +275,4 @@ class ConnectionHandler:
|
||||
# make dang sure it doesn't happen.
|
||||
except: # pragma: no cover
|
||||
import traceback
|
||||
self.log("Error in handle_sni:\r\n" + traceback.format_exc(), "error")
|
||||
self.log("Error in handle_sni:\r\n" + traceback.format_exc(), "error")
|
||||
|
6
test/fuzzing/.env
Normal file
6
test/fuzzing/.env
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
MITMDUMP=../../mitmdump
|
||||
PATHOD=../../../pathod/pathod
|
||||
PATHOC=../../../pathod/pathoc
|
||||
FUZZ_SETTINGS=-remTt 1 -n 0 -I 200,400,405,502
|
||||
|
14
test/fuzzing/README
Normal file
14
test/fuzzing/README
Normal file
@ -0,0 +1,14 @@
|
||||
|
||||
A fuzzing architecture for mitmproxy
|
||||
====================================
|
||||
|
||||
Quick start:
|
||||
|
||||
honcho -f ./straight_stream start
|
||||
|
||||
|
||||
Notes:
|
||||
|
||||
- Processes are managed using honcho (pip install honcho)
|
||||
- Paths and common settings live in .env
|
||||
|
4
test/fuzzing/client_patterns
Normal file
4
test/fuzzing/client_patterns
Normal file
@ -0,0 +1,4 @@
|
||||
get:'http://localhost:9999/p/200':ir,"\n"
|
||||
get:'http://localhost:9999/p/200':ir,"\0"
|
||||
get:'http://localhost:9999/p/200':ir,@5
|
||||
get:'http://localhost:9999/p/200':dr
|
@ -3,20 +3,27 @@
|
||||
# mitmproxy/mitmdump is running on port 8080 in straight proxy mode.
|
||||
# pathod is running on port 9999
|
||||
|
||||
BASE_HTTP="/Users/aldo/git/public/pathod/pathoc -Tt 1 -eo -I 200,400,405,502 -p 8080 localhost "
|
||||
BASE="../../../"
|
||||
BASE_HTTP=$BASE"/pathod/pathoc -Tt 1 -e -I 200,400,405,502 -p 8080 localhost "
|
||||
BASE_HTTPS=$BASE"/pathod/pathoc -sc localhost:9999 -Tt 1 -eo -I 200,400,404,405,502,800 -p 8080 localhost "
|
||||
|
||||
#$BASE_HTTP -n 10000 "get:'http://localhost:9999':ir,@1"
|
||||
#$BASE_HTTP -n 100 "get:'http://localhost:9999':dr"
|
||||
#$BASE_HTTP -n 10000 "get:'http://localhost:9999/p/200:ir,@300.0
|
||||
#$BASE_HTTP -n 10000 "get:'http://localhost:9999/p/200':ir,@300"
|
||||
|
||||
#$BASE_HTTP -n 10000 "get:'http://localhost:9999/p/200:ir,@1'"
|
||||
#$BASE_HTTP -n 100 "get:'http://localhost:9999/p/200:dr'"
|
||||
#$BASE_HTTP -n 10000 "get:'http://localhost:9999/p/200:ir,@100'"
|
||||
|
||||
|
||||
# Assuming:
|
||||
# mitmproxy/mitmdump is running on port 8080 in straight proxy mode.
|
||||
# pathod with SSL enabled is running on port 9999
|
||||
|
||||
BASE_HTTPS="/Users/aldo/git/public/pathod/pathoc -sc localhost:9999 -Tt 1 -eo -I 200,400,404,405,502,800 -p 8080 localhost "
|
||||
$BASE_HTTPS -en 10000 "get:'/p/200:b@10:ir,@1'"
|
||||
#$BASE_HTTPS -en 10000 "get:'/p/200:b@100:ir,@1'"
|
||||
#$BASE_HTTPS -en 10000 "get:'/p/200:ir,@1'"
|
||||
|
||||
#$BASE_HTTPS -n 100 "get:'/p/200:dr'"
|
||||
#$BASE_HTTPS -n 10000 "get:'/p/200:ir,@3000'"
|
||||
#$BASE_HTTPS -n 10000 "get:'/p/200:ir,\"\\n\"'"
|
||||
|
||||
|
9
test/fuzzing/reverse_patterns
Normal file
9
test/fuzzing/reverse_patterns
Normal file
@ -0,0 +1,9 @@
|
||||
get:'/p/200':b@10:ir,"\n"
|
||||
get:'/p/200':b@10:ir,"\r\n"
|
||||
get:'/p/200':b@10:ir,"\0"
|
||||
get:'/p/200':b@10:ir,@5
|
||||
get:'/p/200':b@10:dr
|
||||
|
||||
get:'/p/200:b@10:ir,@1'
|
||||
get:'/p/200:b@10:dr'
|
||||
get:'/p/200:b@10:ir,@100'
|
4
test/fuzzing/straight_stream
Normal file
4
test/fuzzing/straight_stream
Normal file
@ -0,0 +1,4 @@
|
||||
|
||||
mitmdump: $MITMDUMP -q --stream 1
|
||||
pathod: $PATHOD -q
|
||||
pathoc: sleep 2 && $PATHOC $FUZZ_SETTINGS localhost:8080 ./straight_stream_patterns
|
5
test/fuzzing/straight_stream_patterns
Normal file
5
test/fuzzing/straight_stream_patterns
Normal file
@ -0,0 +1,5 @@
|
||||
get:'http://localhost:9999/p/':s'200:b"foo"':ir,'\n'
|
||||
get:'http://localhost:9999/p/':s'200:b"foo"':ir,'a'
|
||||
get:'http://localhost:9999/p/':s'200:b"foo"':ir,'9'
|
||||
get:'http://localhost:9999/p/':s'200:b"foo"':ir,':'
|
||||
get:'http://localhost:9999/p/':s'200:b"foo"':ir,'"'
|
Loading…
Reference in New Issue
Block a user