toxssin 是一种开源渗透测试工具,可自动执行跨站脚本 (XSS) 漏洞利用过程。它由一个 https 服务器组成,它充当为该工具 (toxin.js) 提供动力的恶意 JavaScript 有效负载生成的流量的解释器。
该项目最初是(现在仍然是)一项基于研究的创造性努力,旨在探索 XSS 漏洞可能通过使用 vanilla JavaScript、可信证书和廉价技巧引入的可利用深度。
免责声明:该项目非常新鲜,尚未经过广泛测试。
视频演示
代码语言:javascript复制https://www.youtube.com/watch?v=i9osyuFK6ro
截图
能力
默认情况下,toxssin 拦截:
- cookies(如果 HttpOnly 不存在),
- 击键,
- 粘贴事件,
- 输入更改事件,
- 文件选择,
- 表单提交,
- 服务器响应,
- 表数据(静态和更新),
最重要的是,毒素:
- 尝试通过拦截 http 请求和响应并重写文档来在用户浏览网站时保持 XSS 持久性,
- 支持会话管理,这意味着,您可以使用它来利用反射和存储的 XSS,
- 支持针对会话执行自定义 JS 脚本,
- 自动记录每个会话。
安装和使用
代码语言:javascript复制git clone https://github.com/t3l3machus/toxssin
cd ./toxssin
pip3 install -r requirements.txt
要启动 toxssin.py,您需要提供 ssl 证书和私钥文件。
如果您不拥有具有受信任证书的域,则可以使用以下命令颁发和使用自签名证书(尽管这不会让您走得太远):
代码语言:javascript复制openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
强烈建议使用受信任的证书运行 toxssin(请参阅本文档中的如何获取有效证书)。也就是说,您可以像这样启动 toxssin 服务器:
代码语言:javascript复制# python3 toxssin.py -u https://your.domain.com -c /your/certificate.pem -k /your/privkey.pem
访问该项目的wiki以获取更多信息。
XSS 开发障碍
根据我的经验,尝试包含外部 JS 脚本的跨站点脚本攻击有 4 个主要障碍:
- “混合内容”错误,可以通过通过 https 提供 JavaScript 有效负载来解决(即使使用自签名证书)。
- “NET::ERR_CERT_AUTHORITY_INVALID”错误,表示服务器的证书不受信任/过期,可以使用受信任的权威机构颁发的证书绕过。
- 跨域资源共享 (CORS),由 toxssin 服务器适当处理。
Content-Security-Policy
仅设置为特定域的标头script-src
将阻止具有跨域 src 的脚本加载。Toxssin 依赖于eval()
传递毒药的功能,因此,如果网站有 CSP 并且指令unsafe-eval
中未指定源表达式script-src
,则攻击很可能会失败(我正在研究第二种毒药传递方法来解决这个问题)。
注意:当目标网站通过 http 托管并且 JavaScript 有效负载通过 https 托管时,当然会发生“混合内容”错误。这将 toxssin 的范围限制为仅限 https 的网站,因为(默认情况下)toxssin 仅以 ssl 启动。
如何获得有效证书
首先,您需要拥有一个域名。获得域名的最快和最经济的方式(据我所知)是通过廉价的域名注册服务(例如 https://www.namecheap.com/)。搜索一个随机字符串域名(例如“fvcm98duf”)并检查不太流行的顶级域名,如 .xyz,因为它们每年的费用可能约为 3 美元。
购买域名后,您可以使用 certbot (Let's Encrypt) 在 5 分钟或更短的时间内获得可信证书:
- 将 A 记录附加到您的域的 DNS 设置中,使其指向您的服务器 ip,
- 遵循 certbots官方说明。
提示:不要自行安装和运行 certbot,您可能会遇到意外错误。坚持使用说明。
变更日志
2022-06-19
- 添加了exec提示命令(您现在可以针对会话执行自定义 JS 脚本)。
2022-06-23
- 我添加了两个简单的脏脚本作为测试exec提示命令的模板。我还修复了 cmd 提示符的向后历史访问并进行了一些改进。
未来
我们的想法是使其更清晰、更可靠并扩展其功能。目前,我正在努力改进文件捕获。
代码语言:javascript复制原文地址:https://github.com/t3l3machus/toxssin