JavaScript 有效负载和支持软件用作 XSS 有效负载或后利用植入,以在用户使用目标应用程序时监视用户。还包括用于在客户端中执行自定义 JavaScript 有效负载的 C2。
JS-Tap 是一种通用 JavaScript 负载和支持软件,可帮助红队攻击 Web 应用程序。JS-Tap 有效负载可用作 XSS 有效负载或用作后利用植入物。
有效负载不需要运行有效负载的目标用户对被攻击的应用程序进行身份验证,并且除了找到将 JavaScript 引入应用程序的方法之外,不需要任何应用程序的先验知识。
JS-Tap 有效负载不是攻击应用程序服务器本身,而是专注于应用程序的客户端并大量检测客户端代码。
示例 JS-Tap 有效负载包含在有效负载目录中的telemlib.js文件中,但是此目录中的任何文件都未经身份验证,因此您可以同时为针对不同应用程序的不同配置的多个有效负载提供服务。
收集的数据
-
客户端IP地址、操作系统、浏览器
-
用户输入(凭据等)
-
访问的网址
-
Cookie(没有设置httponly标志)
-
本地存储
-
会话存储
-
访问页面的 HTML 代码(如果启用该功能)
-
访问页面的屏幕截图
-
表格提交副本
-
XHR API 调用的副本(如果启用了 Monkeypatch 功能)
-
端点
-
方法(GET、POST 等)
-
标头集
-
基本认证
-
响应状态码
-
请求体和响应体
-
Fetch API 调用的副本(如果启用了 Monkeypatch 功能)
-
端点
-
方法(GET、POST 等)
-
响应状态码
-
标头集
-
请求体和响应体
-
自定义泄露数据
-
从 C2 系统中的自定义有效负载发回的数据
安装与启动
需要 python3。jsTapServer 需要大量依赖项,强烈建议您使用 python 虚拟环境来隔离服务器软件的库(或任何您喜欢的隔离方法)。
例子:
mkdir jsTapEnvironment
python3 -m venv jsTapEnvironment
source jsTapEnvironment/bin/activate
cd jsTapEnvironment
git clone https://github.com/hoodoer/JS-Tap
cd JS-Tap
pip3 install -r requirements.txt
run in debug/single thread mode:
python3 jsTapServer.py
run with gunicorn multithreaded (production use):
./jstapRun.sh
启动时会生成新的管理员密码。如果您没有在启动打印语句中发现它,您可以找到保存到adminCreds.txt文件中的凭据。
如果 jsTapServer 在启动时发现现有数据库,它会询问您是否要将现有客户端保留在数据库中或删除这些表以重新开始。
请注意,在 Mac 上,我还必须在 python 之外安装 libmagic。
brew install libmagic
在本地使用 JS-Tap 很好,但要在正确的参与中使用,您需要在可公开访问的 VPS 上运行 JS-Tap,并将PROXYMODE设置为 True 来设置 JS-Tap。在前端使用 NGINX 来处理有效证书。
操作模式
有效负载有两种操作模式。无论模式是trap还是implant,都在initGlobals()函数中设置,搜索window.taperMode变量。
陷阱模式
陷阱模式通常是用作 XSS 有效负载的模式。XSS 有效负载的执行通常是短暂的,查看恶意 JavaScript 有效负载运行页面的用户可能会关闭浏览器选项卡(该页面不有趣)或导航到应用程序中的其他位置。在这两种情况下,有效负载将从内存中删除并停止工作。JS-Tap 需要运行很长时间,否则您将无法收集有用的数据。
陷阱模式通过使用iFrame 陷阱技术建立持久性来解决此问题。JS-Tap 有效负载将创建一个完整的页面 iFrame,并在应用程序的其他位置启动用户。该起始页面必须提前配置。在initGlobals()函数中搜索window.taperstartingPage变量并将其设置为目标应用程序中适当的起始位置。
在陷阱模式下,JS-Tap 监视 iframe 陷阱中用户的位置,并欺骗浏览器的地址栏以匹配 iframe 的位置。
请注意,如果目标应用程序设置 CSP 或 X-Frame-Options 标头,则它必须允许来自同源或自身的 iFraming。基于 JavaScript 的 Framebuster 还可以阻止 iFrame 陷阱发挥作用。
当我不确定应用程序在应用程序的经过身份验证的部分内使用哪些资源时。您可以在登录页面中植入植入物,并将陷阱模式和陷阱模式起始页设置为window.location.href(即当前位置)。当用户访问登录页面时,陷阱就会设置,并且他们有望继续进入 iframe 陷阱内应用程序的经过身份验证的部分。
用户刷新页面通常会打破/逃脱 iframe 陷阱。
植入模式
如果您将有效负载直接添加到目标应用程序中,通常会使用植入模式。也许您在服务器上有一个 shell,用于托管应用程序的 JavaScript 文件。将有效负载添加到在整个应用程序中使用的 JavaScript 文件(jQuery、main.js 等)。哪个文件最理想实际上取决于相关应用程序以及它如何使用 JavaScript 文件。植入模式不需要配置起始页,并且不使用 iFrame 陷阱技术。
用户在植入模式下刷新页面通常会继续运行 JS-Tap 有效负载。
工具下载
https://pan.quark.cn/s/0c61d39de6be
原文始发于微信公众号(TtTeam):JavaScript C2