栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python实现XSS扫描

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python实现XSS扫描

利用Python代码实现XSS检测
import requests


# HTML转换实体字符

def str_html(source):
    result = ""
    for c in source:
        result += '&#x' + hex(ord(c)) + ';'
    return result.replace('0x', '')


# 从响应中检测Payload是否有效

def check_resp(response, payload, type):
    index = response.find(payload)
    prefix = response[index - 2:index - 1]
    if type == 'Normal' and prefix != '=' and index >= 0:
        return True
    elif type == 'Prop' and prefix == '=' and index >= 0:
        return True

    elif type == 'Escape':
        index = response.find(str_html(payload))
        prefix = response[index - 2:index - 1]
        if prefix == '=' and str_html(payload) in response:
            return True

    elif index >= 0 and prefix == '=':
        return True

    return False


# 实现XSS扫描的主功能
def xss_scan(location):
    url = location.split('?')[0]
    param_list = location.split('?')[1].split('&')
    # 此处为XSS的爆破字典,可以自行替换
    with open('./dict/xss_payload.txt') as file:
        payload_list = file.readlines()
    for payload in payload_list:
        type = payload.strip().split(':', 1)[0]
        payload = payload.strip().split(':', 1)[1]
        # 针对HTTP信息的检测
        if type == 'Referer' or type == 'User-Agent' or type == 'Cookie':
            header = {type: payload}
            resp = requests.get(url=url, headers=header)
        elif type == 'Escape':
            params = {}
            for param in param_list:
                key = param.split("=")[0]
                params[key] = str_html(payload)
            resp = requests.get(url=url, params=params)
        else:
            params = {}
            for param in param_list:
                key = param.split("=")[0]
                params[key] = payload
            resp = requests.get(url=url, params=params)
        if check_resp(resp.text, payload, type):
            print(f"此处存在XSS漏洞:{payload}")


if __name__ == '__main__':
    # xss_scan('URL地址')

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1033324.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号