Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863100988

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

JavaScript有效载荷和支持软件将用作XSS有效载荷或后剥削植入物,以在使用目标应用程序时监视用户。还包括一个用于在客户端执行自定义JavaScript有效载荷的C2。

ChangElogs

项目公告中记录了重大更改:

https://github.com/hoodoer/js-tap/discussions/categories/annuncements

演示

您可以阅读有关JS-TAP的原始博客文章:

javascript-for-Red-Teams'https://TrustedSec.com/blog/js-tap-tap-weponizing-javascript-for-red-teams

JS-TAP版本1:的Shmoocon的简短演示

https://youtu.be/idlmmiqv6ss?si=xunvnvarqsijx_x0t=19814

Hackspacecon的JS-TAP版本2的演示,包括C2以及如何将其用作后剥削植入物:

https://youtu.be/awvnljnqobq?t=11719

在此Webinar:中也可以看到演示

https://youtu.be/c3b5debhme?si=ctjrqpklov2xv7um

升级警告

我不打算为数据库创建迁移脚本,并且版本号凸起通常涉及数据库架构更改(检查ChangElogs)。您可能应该在版本凹痕上删除JSTAP.DB数据库。如果您在JS-TAP服务器中具有自定义有效载荷,请确保在升级之前导出它们。

简介

JS-TAP是一种通用的JavaScript有效负载和支持软件,可帮助红色团队攻击WebApps。 JS-TAP有效载荷可用作XSS有效载荷或后剥削植入物。

有效载荷不需要运行有效载荷的目标用户对正在攻击的应用程序进行身份验证,并且除了找到将JavaScript进入应用程序的方法之外,它不需要任何事先了解应用程序的知识。

JS-TAP没有攻击应用程序服务器本身,而是专注于应用程序的客户端,并大量启动客户端代码。

示例JS-TAP有效载荷包含在telemlib.js文件中的有效载荷目录中,但是该目录中的任何文件都未经身份验证。将telemlib.js文件复制到您希望的任何文件名,并根据需要修改配置。该文件尚未被混淆。在使用之前,强烈考虑更改端点的命名,剥离评论并高度混淆有效载荷。

在使用公开曝光的服务器上之前,请确保仔细查看下面的配置部分。

收集的数据

Client IP address, OS, Browser User inputs (credentials, etc.) URLs visited Cookies (that don't have httponly flag set) Local Storage Session Storage HTML code of pages visited (if feature enabled) Screenshots of pages visited Copy of Form Submissions Copy of XHR API calls (if monkeypatch feature enabled)Endpoint Method (GET, POST, etc.) Headers set Request body and响应主体副本的Fetch API调用(如果启用了MonkeyPatch功能)端点方法(获取,发布等)设置请求主体和响应主体Note:能够接收XHR副本和FetchAPI调用的能力。在植入物模式下,仅当前只能复制提取API。

操作模式

有效载荷具有两种操作模式。无论是模式是陷阱还是植入物在initglobals()函数中设置,搜索window.tapermode变量。

陷阱模式

陷阱模式通常是您用作XSS有效载荷的模式。执行XSS有效载荷通常是短暂的,用户查看“恶意JavaScript有效负载运行”的页面可能会关闭“浏览器”选项卡(页面不有趣)或在应用程序中的其他地方导航。在这两种情况下,有效载荷都将从内存中删除并停止工作。 JS-TAP需要长时间运行,否则您将无法收集有用的数据。

陷阱模式通过使用iframe陷阱技术建立持久性来对抗这一目标。 JS-TAP有效负载将创建一个完整的IFRAME,并在应用程序中的其他地方启动用户。此开始页面必须提前配置。在initglobals()函数中搜索窗口。

在陷阱模式下,JS-TAP监视用户在iFrame陷阱中的位置,并欺骗浏览器的地址栏以匹配iframe的位置。

请注意,如果设置CSP或X-Frame-Options标头,则针对目标的应用程序必须允许从相同或SERF iframing。基于JavaScript的帧轴也可以防止iFrame陷阱工作。

请注意,在应用程序的非常特定的位置,或者当我不确定该应用程序在应用程序的认证部分内使用什么资源时,我很幸运地使用陷阱模式在应用程序的非常特定的位置进行剥削植入物。您可以在登录页面中放置一个植入物,并使用陷阱模式和陷阱模式开始页面设置为window.location.href(即当前位置)。当用户访问登录页面时,陷阱将设置,并希望将其包含在IFRAME陷阱内的应用程序的身份验证部分中。

用户刷新页面通常会破坏/逃脱iFrame陷阱。

如果您将有效载荷直接添加到目标应用程序中,则通常使用

植入模式

植入物模式。也许您在服务器上有一个外壳,该壳托管了应用程序的JavaScript文件。将有效载荷添加到整个应用程序中使用的JavaScript文件(jQuery,main.js等)。理想情况下,哪个文件实际上取决于所讨论的应用以及它如何使用JavaScript文件。植入物模式不需要配置一个启动页,也不需要使用iframe陷阱技术。

用户以植入模式刷新页面通常会继续运行JS-TAP有效载荷。

安装和开始

需要Python3。 JSTAPSERVER需要大量依赖项,强烈建议您使用Python虚拟环境来隔离服务器软件的库(或任何您喜欢的隔离方法)。

示例:

mkdir jstapenvironment

Python3 -M Venv Jstapenvonment

来源JSTAPENVIRNTMENT/bin/AICTATE

CD Jstapenvironment

git克隆https://github.com/hoodoer/js-tap

CD JS-TAP

pip3 install -r sumpliont.txt

在调试/单线模式:中运行

python3 jstapserver.py

使用枪gunicorn多线程(生产使用):

./jstaprun.sh在启动上生成了一个新的管理密码。如果您没有在启动打印语句中捕获它,则可以找到保存到admincreds.txt文件的凭据。

如果Jstapserver在启动时找到了现有的数据库,它将询问您是否要将现有客户端保存在数据库中或将这些表放置以启动。

请注意,在Mac上,我还必须在Python之外安装Libmagic。

在本地使用JS-TAP的BREW安装libmagic播放是可以的,但是要在适当的订婚中使用,您需要在公开访问的VPS上运行JS-TAP,并设置了将ProtacyMode设置为TRUE的JS-TAP。使用前端的Nginx处理有效的证书。

配置

JS-TAP服务器配置

调试/单线程config

如果您在单线螺纹模式下使用jstapserver.py脚本运行JS-TAP(非常适合测试/演示),则直接在JSTAPSERVER.PY脚本中有配置选项。

代理模式

用于生产使用JS-TAP应托管在公开的服务器上,并提供Letsencrypt这样的人的适当SSL证书。部署此目的的最简单方法是允许Nginx充当JS-TAP并处理LetSencrypt证书的前端,然后将解密的流量转发到本地的HTTP流量(即Nginx和JS-TAP运行在同一VPS上)。

如果将接头设置为true,则JS-TAP服务器将在HTTP模式下运行,并从X-Forwarded-For-For-For-For-for-header中获取客户端IP地址,需要将其配置为设置。

当接头设置为false时,JS-TAP将使用自签名的证书运行,这对于测试很有用。客户端IP将从客户端的源IP中获取。

数据目录

DataDirectory参数告诉JS-TAP,目录将用于SQLITE数据库和LOOP目录。并非所有的“战利品”存储在数据库中,尤其不是屏幕截图和刮擦HTML文件。

服务器端口

要更改服务器端口配置,请参见jstapserver.py app.run的最后一行(debug=false,主机='0.0.0.0.0',port=8444,ssl_context='adhoc')

枪支生产配置

gunicorn是运行JS-Tap In In js-tap in Producation in Producation。可以在Jstaprun.sh bash脚本中设置上述相同的设置。启动脚本中设置的值优先于JSTAPSERVER.PY脚本在JS-TAP启动时直接在Gunicorn启动脚本开始时设置的值。

使用Gunicorn为应用程序服务时的配置有很大的差异是您需要配置工人数量(重量重量过程)和线程(轻量级服务过程)。 JS-TAP是一个非常i/o的重型应用程序,因此除了工人之外,使用线程对扩展多处理器机器的应用程序是有益的。请注意,如果您在同一盒子上使用Nginx,则需要配置NGNIX以使用多个进程,以免代理本身上的瓶颈。

在JSTAPRUN.SH脚本的顶部是Numworkers和NumThreads参数。我喜欢为工人使用CPU + 1的数量,以及4-8个线程,具体取决于处理器的强度。对于nginx的configu