Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets

admin 2022年8月21日22:08:08评论72 views字数 3032阅读10分6秒阅读模式

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets

翻译来自掣雷小组

成员信息:

thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt


Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets

记红色的部分为今日更新内容。

第五章、使用跨站脚本攻击客户端 

5.0、介绍

5.1、使用浏览器绕过客户端控制

5.2、识别跨站脚本漏洞

5.3、利用XSS获取Cookie

5.4、利用DOM XSS

5.5、利用BeEF执行xss攻击

5.6、从Web存储中提取信息

5.7、使用ZAP测试WebSokets

5.8、使用XSS和Metasploit获取远程shell



5.7、使用ZAP测试WebSokets

由于HTTP是一种无状态协议,它将每个请求视为惟一的,与上一个和下一个请求无关,这就是为什么应用程序需要实现会话cookie等机制来管理会话中单个用户执行的操作。作为克服这一限制的替代方案,HTML5合并了WebSockets。WebSockets通过HTTP协议在客户端和服务器之间提供了一个持久的、双向的通信通道。

在这个小节中,我们将展示如何使用OWASP_ZAP来监控、拦截和修改WebSockets通信,就像我们在渗透测试期间处理普通请求一样。


环境准备

OWASP_BWA还没有包含一个使用WebSockets的应用程序,因此我们需要使用同样来自OWASP的Damn Vulnerable Web Sockets(DVWS) (https://www.owasp.org/index.php /OWASP_Damn_Vulnerable_Web_Sockets_(DVWS))来完成这个小节。

DVWS是一个基于php的开源应用程序;从它的GitHub存储库下载到您的KaliVM: https://github.com/interfer-security/dvws/

在理想的情况下,我们只需要下载应用程序,将其复制到Apache根目录,并启动服务使其运行,但不幸的是,在Kali Linux中并非如此。

首先,您需要使用apt install php-mysql包来安装php-mysqli。注意它的PHP版本;在我们的例子中是7.2。检查Apacheconfig文件中的PHP版本并相应地进行调整。确保PHP模块的正确版本在/etc/apache2/mods-enabled/;如果没有,从/etc/apache2/mod-available删除不必要的:

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets


另外,检查MySQL模块是否在php.ini启用(/etc/php/<php_version>/apache2/php.ini)。查找DynamicExtensions部分并启用(删除之前的),在这行写入extension=mysqli

接下来,配置数据库。首先,启动MySQL服务(service mysql start),然后从终端启动MySQL客户端(mysql)。在MySQL提示符下,使用createdatabase dvws_db创建DVWS数据库;然后退出MySQL。创建数据库时,我们需要创建它的表结构。DVWS包含了一个实现此目的的脚本,因此在终端中执行以下操作:mysqldvws_db < /var/ www/html/dvws/includes/dvws_db.sql(假设/var/www/html/是Apache的根目录):

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets


由于DVWS使用预定义的主机名,我们需要将该名称的名称解析固定到本地地址,我们将使用该地址进行测试。使用您最喜欢的文本编辑器打开/etc/hosts并添加行:

127.0.0.1 dvws

现在,我们可以使用service apache2 start启动Apache服务并浏览到http://dvws.local/ DVWS/。按照这里给出的说明操作,包括启动WebSockets侦听器(php ws-socket),并运行steup脚本来完成数据库的配置(http://dvws.local/DVWS/setup.php):

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets


现在,我们准备继续向下进行。



 

实战演练

我们选择ZAP作为这个练习,因为它可以监视、拦截和重放WebSockets消息。Burp Suite可以监控websocket通信;但是,它不能拦截、修改和重放消息:

1.  将浏览器配置为使用ZAP作为代理,在ZAP中,通过单击底部面板中的plus图标启用WebSockets选项卡:

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets


2.  现在,在浏览器中转到http://dvws.local/DVWS/,从菜单中选择Stored XSS:

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets


3.  输入一些评论然后切换到ZAP。在History选项卡中,查找到http://dvws.local:8080/post-comments;这是启动WebSockets会话的握手包:

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets

发起websocket通信的请求包括Sec-WebSocket-Key报头和base64编码的值。此密钥不是身份验证机制;它只帮助确保服务器不接受来自非websockets客户端的连接:

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets

服务器的响应是101的交换协议代码,其中包括一个头Sec-WebSocket-Accept,其目的与客户机使用的键类似。

4.  在ZAP的WebSockets选项卡中,你可以看到有多个通信通道,也就是建立了多个连接,所有的消息都有一个方向(进出),一个操作码,一个有效载荷,这也就是要传输的信息:

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets


5.  要拦截WebSocket,请单击WebSockets选项卡中的break图标添加断点。选择需要与拦截匹配的操作码、通道和载荷模式:

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets


6.  当一个断点被命中时,消息将显示在上面的面板中,就像ZAP中的其他所有断点一样,在这里我们可以更改内容并发送或丢弃消息:

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets


7.  ZAP还具有重放/重发现有消息的能力;右键单击WebSockets选项卡中的任何一行,选择Open/Resend withMessage Editor:

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets


8. 然后,我们将看到WebSocket Message Editor窗口,在这里我们可以更改消息的所有参数,包括消息的方向和内容,然后再次发送:

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets

如果web应用程序易受攻击,则可以通过websocket重复的利用web应用程序中固有的大多数安全缺陷。


 

原理剖析

WebSocket通信是客户端通过JavaScript中的WebSocket类发起的。当创建WebSocket实例时,客户机启动与服务器的握手。当服务器响应握手并建立连接时,HTTP连接随后被WebSocket连接替换,它就变成了一个双向的二进制协议,不一定与HTTP兼容。

WebSockets是纯文本,HTTP也是。服务器仍然需要实现HTTPS来提供加密层。如果我们嗅出前面练习中(非https)与Wireshark的通信,则我们可以很容易地读取消息:

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets


请注意客户机发送的消息是如何被隐藏的(未加密),而来自服务器的消息是如何以明文形式发送的;这是RFC 6455协议定义的一部分(http://www.rfc-base.org/txt/rfc-6455.txt)

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSoketsKali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets

----------------------------------------------------------------------

Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets

Kali Linux Web渗透测试手册(第二版) - 5.5 - 利用BeEF执行xss攻击

Kali Linux Web渗透测试手册(第二版) - 5.6 - 从Web存储中提取信息




原文始发于微信公众号(玄魂工作室):Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年8月21日22:08:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSoketshttp://cn-sec.com/archives/782729.html

发表评论

匿名网友 填写信息