当前位置: 首页 > article >正文

Python安全开发之简易Xss检测工具(详细注释)

核心代码import requests # requests 库 - HTTP 请求处理库 # 【常用功能】: # requests.get(url) - 发送 HTTP GET 请求 # requests.post(url, data) - 发送 HTTP POST 请求 # response.text - 获取响应体内容字符串 # response.status_code - 获取 HTTP 状态码 (200, 404, 500 等) # response.headers - 获取响应头信息 # response.cookies - 获取 Cookie 信息 import argparse # argparse 库 - Python 标准库用于解析命令行参数 # 【核心组件】: # ArgumentParser() - 创建参数解析器对象 # add_argument() - 添加参数定义位置参数/可选参数 # parse_args() - 解析命令行参数并返回命名空间对象 # 【示例】: # parser argparse.ArgumentParser(description工具描述) # parser.add_argument(url, help参数说明) # 位置参数必需 # parser.add_argument(-v, --verbose, actionstore_true) # 可选参数 # args parser.parse_args() # 解析结果args.url, args.verbose from urllib.parse import urlparse, urlencode, urlunparse, parse_qs # urllib.parse 模块 - URL 解析和处理工具 # 【各函数功能】: # urlparse() - 将 URL 拆解为 6 元组 (scheme, netloc, path, params, query, fragment) # parse_qs() - 将查询字符串 (?keyvaluekey2value2) 解析为字典 {key: [value1], ...} # urlencode() - 将字典编码为查询字符串doseqTrue 处理列表值 # urlunparse() - 将 6 元组重新组合为完整 URL 字符串 from bs4 import BeautifulSoup # BeautifulSoup 库 - HTML/XML 文档解析库 # 【主要功能】: # 解析 HTML 文档构建 DOM 树 # 提供便捷的方法查找、遍历、修改节点 # 【常用方法】: # BeautifulSoup(html, html.parser) - 创建解析对象 # soup.find(tag) - 查找第一个匹配标签 # soup.find_all(tag) - 查找所有匹配标签 # soup.select(css 选择器) - 使用 CSS 选择器查找元素 # tag.text / tag.string - 获取标签文本内容 # tag[attribute] - 获取标签属性 # 【本例说明】: 虽然导入但未在代码中使用可能用于后续扩展如解析 HTML 检测 XSS def scan_xss(url): 扫描 URL 是否存在反射型 XSS 漏洞 【反射型 XSS 原理】: 攻击者构造恶意 URL包含 XSS payload 用户点击后payload 被发送到服务器 服务器未过滤直接将 payload 返回并在浏览器执行 【检测原理】: 1. 向 URL 参数注入特殊测试字符串 (payload) 2. 发送请求获取响应 3. 检查响应中是否原样返回 payload 4. 如果返回说明存在反射型 XSS 风险 【参数说明】: url - 待检测的目标 URL必须包含查询参数 【返回值】: bool - True 表示存在漏洞False 表示未发现漏洞 is_vulnerable False # 漏洞标志位初始化为 False payload IsThisReflected123 # XSS 测试 payload使用特殊字符串检测是否被反射 # 步骤 1: 解析 URL提取各个组件 parsed_url urlparse(url) # 示例urlparse(http://test.com/page?id1nameabc) # 返回ParseResult(schemehttp, netloctest.com, path/page, # params, queryid1nameabc, fragment) # 步骤 2: 解析查询参数字符串为字典 query_params parse_qs(parsed_url.query) # 示例parse_qs(id1nameabc) # 返回{id: [1], name: [abc]} # 注意每个参数的值都是列表因为同名参数可能出现多次 # 检查是否有查询参数 if not query_params: # 如果 URL 没有 ?paramvalue 这样的查询参数无法进行 XSS 测试 print([!] 无查询参数) return False print(f正在扫描...{url}) # 遍历每个参数进行测试 for parma,values in query_params.items(): # parma: 参数名如 id # values: 参数值列表如 [1] original_value values[0] # 取原始值的第一个parse_qs 返回的是列表 # 创建测试参数的副本避免修改原始数据 test_parma query_params.copy() # 在当前参数值后追加 payload # 例如id1 → id1IsThisReflected123 test_parma[parma] original_value payload # 将修改后的参数字典重新编码为查询字符串 new_query urlencode(test_parma, doseqTrue) # doseqTrue: 对列表类型的值也进行迭代编码 # 例如{id: [1IsThisReflected123], name: [abc]} # 编码为id1IsThisReflected123nameabc # 重组完整的测试 URL test_url urlunparse(( parsed_url.scheme, # 协议 (http/https) parsed_url.netloc, # 域名和端口 parsed_url.path, # 路径 parsed_url.params, # 路径参数分号;后的内容 new_query, # 新的查询字符串已添加 payload parsed_url.fragment # 片段标识#后的内容 )) try: # 发送 HTTP GET 请求到测试 URL response requests.get(test_url) # 检测响应中是否包含原始 payload # 如果服务器原样返回 payload说明可能存在反射型 XSS if payload in response.text: print(f\n[] 高危检测到潜在的反射型 XSS 漏洞!) print(f - 漏洞 URL: {test_url}) print(f - 受影响的参数{test_parma[parma]}) is_vulnerable True # ⚠️ 注意这里检测不够完善 # 真正的 XSS 检测应该 # 1. 使用 BeautifulSoup 解析 HTML检查 payload 是否在可执行上下文中 # 2. 检测是否进行了 HTML 实体编码 # 3. 尝试实际的 XSS payload (scriptalert(1)/script等) except requests.RequestException as e: # 捕获网络异常连接失败、超时、DNS 错误等 print(f[!] 在测试参数 {test_parma[parma]} 时发生网络错误{e}) # 如果当前参数未检测到漏洞 if not is_vulnerable: print([] 未检测到 XSS 漏洞) # ⚠️ 注意这里的 return 位置有问题 # 应该在循环外返回现在只测试了第一个参数就返回了 return is_vulnerable def main(): 主函数程序入口点 【执行流程】: 1. 打印警告声明 2. 创建命令行参数解析器 3. 解析用户输入的 URL 4. 调用 XSS 扫描函数 print( * 60) print(!!! 警告本工具仅用于经授权的教育和安全测试目的 !!!) print(!!! 未经许可对任何系统进行漏洞扫描都是非法的 !!!) print( * 60 \n) # 创建命令行参数解析器 parser argparse.ArgumentParser(descriptionXSS 漏洞检测工具) # 添加位置参数 url必需提供 parser.add_argument(url, help目标 URL) # 解析命令行参数 args parser.parse_args() # 例如python Xss_scan.py http://test.com?id1 # args.url http://test.com?id1 # 调用 XSS 扫描函数 scan_xss(args.url) if __name__ __name__: # ⚠️ 注意这里有 bug应该是 __main__ 而不是 __name__ # 正确的写法if __name__ __main__: # 当前写法导致 main() 永远不会被执行 main()URL处理流程原始 URL: http://test.com/page?id1nameabc ↓ urlparse() 解析 ↓ ParseResult(schemehttp, netloctest.com, path/page, queryid1nameabc, ...) ↓ parse_qs(query) 解析参数 ↓ {id: [1], name: [abc]} ↓ 添加 payload ↓ {id: [1IsThisReflected123], name: [abc]} ↓ urlencode() 编码 ↓ id1IsThisReflected123nameabc ↓ urlunparse() 重组 ↓ http://test.com/page?id1IsThisReflected123nameabc

相关文章:

Python安全开发之简易Xss检测工具(详细注释)

核心代码:import requests # requests 库 - HTTP 请求处理库 # 【常用功能】: # requests.get(url) - 发送 HTTP GET 请求 # requests.post(url, data) - 发送 HTTP POST 请求 # response.text - 获取响应体内容(字符串) #…...

PyTorch 2.8镜像实际效果:torch.compile+FlashAttention-2双优化下的吞吐量提升对比

PyTorch 2.8镜像实际效果:torch.compileFlashAttention-2双优化下的吞吐量提升对比 1. 镜像环境与技术亮点 PyTorch 2.8深度学习镜像为开发者提供了一个开箱即用的高性能计算环境。基于RTX 4090D 24GB显卡和CUDA 12.4的深度优化组合,这个镜像特别适合需…...

实战避坑:在Windows上用C++/WinRT搞定双模蓝牙(EDR+Ble)通信的完整流程

实战避坑:在Windows上用C/WinRT搞定双模蓝牙(EDRBle)通信的完整流程 蓝牙技术在现代设备中无处不在,但对于开发者而言,实现Windows桌面应用与双模蓝牙设备(同时支持经典蓝牙EDR和低功耗蓝牙BLE)…...

《C语言学习:判断语句if-else》5

写在前面:本笔记为个人学习各平台C语言系列课程所作,仅供交流学习,不得作他用。1. if基本用法if(/*条件*/){/*做法*/ } //如果满足条件,则做大括号中的事情圆括号中是条件,或者说一个表达式。当它是0,则不执…...

Llama-3.2V-11B-cot实战:基于SpringBoot构建企业级智能客服原型

Llama-3.2V-11B-cot实战:基于SpringBoot构建企业级智能客服原型 最近在帮一个朋友的公司做技术选型,他们想快速搭建一个智能客服原型,既要成本可控,又要能快速集成到现有的Java技术栈里。聊了一圈,发现很多团队都卡在…...

Qwen2.5-0.5B-Instruct新手入门:从零到一的AI助手搭建全流程

Qwen2.5-0.5B-Instruct新手入门:从零到一的AI助手搭建全流程 1. 认识Qwen2.5-0.5B-Instruct 1.1 模型特点与优势 Qwen2.5-0.5B-Instruct是阿里开源的通义千问系列中最轻量级的指令微调版本,专为资源有限环境优化设计。这个5.08亿参数的模型虽然体积小…...

DeTikZify:AI驱动的科研图表代码自动化解决方案

DeTikZify:AI驱动的科研图表代码自动化解决方案 【免费下载链接】DeTikZify Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ 项目地址: https://gitcode.com/gh_mirrors/de/DeTikZify 一、科研绘图的隐形痛点:我…...

Serilog:从结构化日志认知到 .NET 工程落地

MySQL 中的 count 三兄弟:效率大比拼! 一、快速结论(先看结论再看分析) 方式 作用 效率 一句话总结 count(*) 统计所有行数 最高 我是专业的!我为统计而生 count(1) 统计所有行数 同样高效 我是 count(*) 的马甲兄弟…...

AutoHotkey脚本编译指南:3步将.ahk文件转为独立可执行程序

AutoHotkey脚本编译指南:3步将.ahk文件转为独立可执行程序 【免费下载链接】Ahk2Exe Official AutoHotkey script compiler - written itself in AutoHotkey 项目地址: https://gitcode.com/gh_mirrors/ah/Ahk2Exe 你是否曾想过将精心编写的AutoHotkey自动化…...

Phi-3-mini-4k-instruct-gguf入门必看:q4-GGUF量化对中文语义保留的影响实测

Phi-3-mini-4k-instruct-gguf入门必看:q4-GGUF量化对中文语义保留的影响实测 1. 模型简介 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本,特别适合中文场景下的问答、文本改写、摘要生成等任务。这个经过量化的模型版本在…...

Apifox供应链投毒攻击--完整解析

🔴 安全应急通告:Apifox 桌面端供应链投毒与高危凭证窃取事件 一、 事件概述 近期监测到 Apifox 公网 SaaS 版桌面客户端遭遇严重的供应链投毒攻击。攻击者通过劫持合法的运行追踪模块,向用户下发具备凭证窃取、动态执行与持久化能力的恶意 J…...

神州数码无线网络(AC+AP)实战部署与优化指南

1. 神州数码ACAP无线网络部署前的规划准备 第一次接触神州数码无线网络方案时,我被它简洁的架构设计惊艳到了。AC(无线控制器)AP(接入点)的组网模式,特别适合500-2000平米的中型企业办公环境。但在真正动手…...

YOLOFuse实战案例:如何利用红外+RGB融合提升森林火情监测精度

YOLOFuse实战案例:如何利用红外RGB融合提升森林火情监测精度 1. 森林火情监测的痛点与挑战 森林火灾是全球性的生态灾难,每年造成巨大经济损失和生态破坏。传统监测手段主要依赖可见光摄像头和人工巡查,存在明显局限性: 夜间失…...

GB28181视频监控平台EasyCVR助力景区数字化转型,打造一体化视频监控解决方案

随着文旅行业数字化转型进程持续加速,旅游景区的安全管理、服务优化与运营效率提升已成为行业发展的核心诉求。景区场景普遍具有面积广阔、人员流动性强等特点,传统监控方案存在设备兼容性差、可视化管控能力不足等诸多短板,难以满足当前景区…...

FileConverter:重构文件格式转换流程,实现设计师与教育工作者的效率突破

FileConverter:重构文件格式转换流程,实现设计师与教育工作者的效率突破 【免费下载链接】FileConverter File Converter is a very simple tool which allows you to convert and compress files using the context menu in windows explorer. 项目地…...

CCC数字钥匙Release 3实战:如何用BLE/UWB实现无钥匙进入(附避坑指南)

CCC数字钥匙Release 3实战:BLE/UWB无钥匙进入系统开发全解析 当你的手机靠近车辆时,车门自动解锁——这种科幻般的体验正通过CCC数字钥匙Release 3标准变为现实。作为汽车电子工程师,我曾用nRF5340开发板搭配UWB模块完整实现了这套系统&#…...

GLM-4.1V-9B-Base开发入门:PyCharm专业版连接远程解释器进行模型调试

GLM-4.1V-9B-Base开发入门:PyCharm专业版连接远程解释器进行模型调试 1. 为什么需要远程调试 在AI模型开发过程中,我们经常遇到一个典型问题:本地机器性能不足,无法高效运行大型语言模型。GLM-4.1V-9B-Base这类模型通常需要GPU加…...

Qwen2.5-14B-Instruct在AI编剧赛道的突破:像素剧本圣殿Glitch标题交互体验分享

Qwen2.5-14B-Instruct在AI编剧赛道的突破:像素剧本圣殿Glitch标题交互体验分享 1. 像素剧本圣殿:AI编剧的新范式 在数字内容创作领域,剧本创作一直是最具挑战性的任务之一。传统编剧需要花费大量时间构思情节、塑造角色、打磨对白&#xff…...

YOLO-v5实战:用预训练模型快速检测图片中的物体

YOLO-v5实战:用预训练模型快速检测图片中的物体 1. 引言:为什么选择YOLO-v5 在计算机视觉领域,物体检测是一项基础而重要的任务。YOLO(You Only Look Once)系列模型因其速度快、精度高的特点,成为工业界和…...

MinerU智能文档理解镜像:财务报表自动识别实战体验

MinerU智能文档理解镜像:财务报表自动识别实战体验 1. 引言:财务文档处理的痛点与机遇 在财务工作中,我们经常需要处理各种格式的财务报表——PDF扫描件、Excel截图、纸质文档照片等。传统的手工录入方式不仅效率低下,还容易出错…...

Proteus 8实战:手把手教你搭建ATmega16流水灯仿真,并联动真实代码调试

Proteus 8实战:从零构建ATmega16流水灯仿真系统 在嵌入式开发的学习路径上,仿真工具的价值常常被低估。许多开发者习惯直接上手物理硬件,却在遇到问题时陷入漫长的调试循环。Proteus 8提供的虚拟实验室环境,恰好填补了从理论到实践…...

全民养虾潮背后:智能体产业的产业化困局

2026年3月,如果你在科技园区看到有人抱着电脑排长队,或者听到“养虾了吗”的问候,不必感到奇怪。这只“虾”正是开源AI智能体——OpenClaw。从社交平台刷屏的“养龙虾”攻略到GitHub星标数突破27万,超越Linux登顶全球开源项目榜首…...

QGIS插件开发避坑指南:我的第一个批量属性修改工具是怎么炼成的

QGIS插件开发避坑指南:我的第一个批量属性修改工具是怎么炼成的 第一次打开QGIS的Python控制台时,我完全没意识到自己即将踏入一个充满"惊喜"的世界。作为一名有Python基础但缺乏Qt框架经验的开发者,本以为凭借官方文档就能轻松实现…...

幻兽帕鲁启动提示 msvcp140.dll 丢失怎么办?2026最新解决办

心问题: 在 Steam 或其他平台启动《幻兽帕鲁》(Palworld)时,系统弹出“由于找不到 msvcp140.dll,无法继续执行代码”的错误提示,导致游戏无法进入。 简短回答: 幻兽帕鲁 msvcp140.dll 报错的主…...

从预测到归因:手把手教你用因果森林(grf)做特征重要性分析与亚组发现

从预测到归因:手把手教你用因果森林(grf)做特征重要性分析与亚组发现 在金融风控、个性化营销和医疗疗效评估等领域,我们常常面临一个关键问题:干预措施的效果是否存在显著差异?传统分析方法如A/B测试能告诉…...

腾讯VersaViT:多模态视觉理解新标杆

腾讯VersaViT:多模态视觉理解新标杆 【免费下载链接】VersaViT 项目地址: https://ai.gitcode.com/tencent_hunyuan/VersaViT 导语:腾讯最新发布的多模态视觉编码器VersaViT,通过创新的多任务协同训练策略,同时强化语言介…...

新手避坑指南:PX4飞控连接TFmini、LIDAR Lite V3等定高雷达的完整接线与参数配置(QGC实操)

PX4飞控与定高雷达实战:从接线到参数配置的避坑指南 刚拿到PX4飞控和一堆传感器的新手们,面对密密麻麻的接口和参数设置,是不是有种无从下手的感觉?特别是当你需要连接定高雷达时,不同品牌(北醒TFmini、LID…...

实测Qwen3-4B:256K超长上下文,处理长文档、写长文真实案例

实测Qwen3-4B:256K超长上下文,处理长文档、写长文真实案例 1. 引言:为什么关注长上下文能力 在日常工作和创作中,我们经常遇到需要处理超长文档的场景:分析上百页的PDF报告、阅读整本电子书、编写长篇技术文档等。传…...

Redis 用错接口反而更慢?高并发下这几个坑,90% 后端都踩过

前言线上出过一个特别反直觉的故障:接口本来直连 MySQL 跑得好好的,加上 Redis 缓存后,响应时间直接翻倍,CPU 还往上飘。一开始怀疑网络、怀疑 Redis 性能、怀疑代码 Bug,排查一整天才发现:缓存逻辑没错&am…...

Linux服务器日志爆满?5个实用命令快速定位并清理大日志文件

Linux服务器日志爆满?5个实用命令快速定位并清理大日志文件 当服务器磁盘空间告急时,日志文件往往是罪魁祸首。作为系统管理员,我们需要快速定位问题并安全清理,避免服务中断。本文将分享5个核心命令的组合使用技巧,帮…...