Jump to content
¯\_( ツ)_/¯
  • TAD GROUP are currently hiring penetration testers. Please read the topic in Career Central subforum.
  • Sponsored Ad
d3k4z

MiTM Proxy

Recommended Posts

Така, наскоро ми се случи да тествам някакви странни Microsoft Outlook plugins, които разменяха огромни SOAP XML съобщения със бекенд сървисите. Трябваше ми туул който да ми позволява да манипулирам в реално време заявките и реплейсвам много `values` в процеса на обработка и фъзинг.

Мързелив съм и нямах намерение да минавам ръчно през всичките, така че ми трябваше удобно решение което позволява скриптинг, много от параметрите трябваше да се взаймно свътзани, това прави fuzzing-а още по-бавен.

Решението ми беше mitmproxy (mitmproxy.org)

`pip3 install mitmproxy`

mitm% tree
.
├── mitmproxy-ca-cert.pem
└── fuzz.py

0 directories, 2 files

където mitmproxy-ca-cert.pem трябва да бъде инсталиран в client-а, т.е. да се добави към trusted issuer authorities.
Ако стартирате mitmproxy и пренасочите броузера си да преносочва трафика към 127.0.0.1:8080 и отидете на mitm.it, ще ви бъде предоставена възможност директно да си го инстлаирате.

 

image.thumb.png.b2e37b12a8af11a96fc56fb5ca2f4557.png


Намирам Burp също за много функционално tool-лище, затова винаги го слагам като upstream server, и нагласям неговия sock прокси в invisible mode.


image.png.3088cd7a37f9d574bbd74138e13644c8.png

След това си отварям VS Code и започвам работа. Ето един примерен скрипт:

from mitmproxy import http
from mitmproxy import ctx
import re


class FastFrag:
    def __init__(self):
        self.num = 0

    def request(self, flow):
        
        # Examples
        # flow.request.replace('hitit', flow.request.raw_content)
        # flow.request.replace('fuzzhere', str(dir(flow.request)))
        #  flow.request.set_content(b"I am Groot beware!") #b is important
        # a = flow.request.get_content()
        # a = a + b'this makes me awesome'
        # flow.request.set_content(b'drop it')
        # flow.request.replace('300000007019377', "300000007019377; SELECT global_name FROM global_name;")
        # flow.request.replace('300000006661021', "300000006661021; SELECT global_name FROM global_name;")
        # 
        # if flow.request.is_replay:a
        #     return
        # flow = flow.copy()
        # # Only interactive tools have a view. If we have one, add a duplicate entry
        # # for our flow.
        # if "view" in ctx.master.addons:
        #     ctx.master.commands.call("view.add", [flow])
        # flow.request.path = "/changed"
        # ctx.master.commands.call("replay.client", [flow])
        self.num = self.num + 1
        ctx.log.info(str('Awesome'))
        return

        
addons = [
    FastFrag()
]

 

Стартираме сървъра:

mitm% mitmweb --mode upstream:127.0.0.1:8083 -k -s fuzz.py -v
Web server listening at http://127.0.0.1:8081/
Loading script fuzz.py

Можете и да не използвате web interface-a ами да си го стартирате стандартно с `mitmproxy` и след това същите параметри.

Докато mitmproxy се изпълнява, всеки път щом save/Ctrl-S върху fuzz.py ще доведе до автоматичен reload на mitmproxy, което спестява време за скриктинга и увеличава гъвкавостта за фъзинг.

image.thumb.png.ef63b17b324666ef31f2bc6356268621.png

И в крайна сметка логове се и в mitmproxy и в Burp.

image.thumb.png.e113614c32ec009126ba9569b2814ca6.png

Така за 3 дни успях да намеря няколко параметъра уязвими към инжекции и xxe.
 

 

Сподели публикацията


Адрес на коментара
Сподели в други сайтове

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Отговорете в темата...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Потребители разглеждащи страницата   0 потребители

    No registered users viewing this page.

×
×
  • Създай нов...

Important Information

За да посещавате този уебсайт е необходимо да се съгласите с Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.