一个开源的XSS渗透测试工具——toxssin
作者:Sec-Labs | 发布时间:
目的
toxssin是一个开源的渗透测试工具,可以自动利用跨站脚本(XSS)漏洞的过程。它由一个https服务器组成,该服务器作为一个解释器,用于解释为该工具提供动力的恶意JavaScript有效载荷(toxin.js)所产生的流量。
这个项目开始是(现在仍然是)一个基于研究的创造性努力,以探索XSS漏洞可能通过使用vanilla JavaScript、可信的证书和廉价的技巧引入的可利用深度。
免责声明:该项目是相当新鲜的,还没有经过广泛测试。
视频介绍



能力
默认情况下,toxssin会拦截。
cookies(如果不存在HttpOnly)
- 击键
- 粘贴事件
- 输入改变事件
- 文件选择
- 表格提交
- 服务器响应
- 表数据(静态以及更新)
最重要的是,toxssin:
- 试图在用户浏览网站时,通过拦截http请求和响应并重写文件来保持XSS的持久性。
- 支持会话管理,也就是说,你可以用它来利用反射和存储的XSS。
- 支持针对会话的自定义JS脚本执行。
- 自动记录每个会话。
安装和使用
git clone https://github.com/t3l3machus/toxssin
cd ./toxssin
pip3 install -r requirements
为了启动 toxssin.py,你需要提供ssl证书和私钥文件。
如果你没有一个带有可信证书的域名,你可以用下面的命令签发和使用自签名的证书(尽管这不会让你走得太远)。
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
强烈建议使用可信的证书来运行 toxssin(见本文中如何获得有效证书)。也就是说,你可以像这样启动 toxssin 服务器。
# python3 toxssin.py -u https://your.domain.com -c /your/certificate.pem -k /your/privkey.pem
请访问项目的Wiki,了解更多信息。
XSS攻击的障碍
根据我的经验,当涉及到试图包含外部JS脚本的跨站脚本攻击时,有四个主要障碍。
- 混合内容 "错误,这可以通过通过https提供JavaScript有效载荷来解决(即使有自签证书)。
- "NET::ERR_CERT_AUTHORITY_INVALID "错误,这表明服务器的证书不受信任/过期,可以通过使用受信任的权威机构颁发的证书绕过。
- 跨源资源共享(CORS),由 toxssin 服务器适当处理。
- 将脚本来源设置为特定域的
Content-Security-Policy头会阻止跨域脚本的加载。Toxssin依靠eval()函数来传递毒药,因此,如果网站有一个CSP,并且在script-src指令中没有指定unsafe-eval源表达式,攻击很可能会失败(我正在研究第二个毒药传递方法来解决这个问题)。
注意:当目标网站通过http托管,而JavaScript有效载荷通过https托管时,当然会出现 "混合内容 "错误。这限制了toxssin的范围,因为(默认情况下)toxssin只在ssl下启动。
如何获得有效证书
首先,你需要拥有一个域名。获得一个域名的最快和最经济的方法(据我所知)是通过廉价的域名注册商服务(例如:https://www.namecheap.com/)。搜索一个随机字符串的域名(如 "fvcm98duf"),并检查不太流行的顶级域名,如.xyz,因为它们可能每年花费3美元左右。
在你购买域名后,你可以使用certbot(Let's Encrypt)在5分钟或更短时间内获得一个可信的证书。
- 在你的域名的DNS设置中添加一条A记录,使其指向你的服务器IP。
- 按照certbots的官方说明。
提示。不要自己安装和运行certbot,你可能会遇到意想不到的错误。坚持按照说明进行。
项目地址
https://github.com/t3l3machus/toxssin