前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kali Linux Web渗透测试手册(第二版) - 9.4 - 绕过web服务器的CORS限制

Kali Linux Web渗透测试手册(第二版) - 9.4 - 绕过web服务器的CORS限制

作者头像
用户1631416
发布2019-09-19 18:44:57
1.2K0
发布2019-09-19 18:44:57
举报
文章被收录于专栏:玄魂工作室玄魂工作室

翻译来自

掣雷安全小组

翻译成员信息

thr0cyte,Gr33k,花花,

MrTools,R1ght0us,7089bAt

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

9.0、介绍

9.1、如何绕过xss输入验证

9.2、对跨站脚本攻击(xss)进行混淆代码测试

9.3、绕过文件上传限制

9.4、绕过web服务器的CORS限制

9.5、使用跨站点脚本绕过CSRF保护和CORS限制

9.6、利用HTTP参数污染

9.7、通过HTTP头利用漏洞

绕过web服务器的CORS限制

跨源资源共享(Cross-OriginResource Sharing, CORS)是在服务器端配置的一组策略,它告诉浏览器服务器是否允许在外部站点(跨源请求)上使用脚本代码生成的请求,以及来自哪个站点,或者它是否只接受在自己托管的页面中生成的请求(同源)。正确配置的CORS策略可以帮助防止跨站请求伪造攻击,尽管它还不够,但它可以阻止一些攻击。

在这个小节中,我们将配置一个不允许跨源请求的web服务,并创建一个能够发送伪造请求的页面。

环境准备

对于这个小节,我们将使用DVWA Web服务。可以从它的GitHub地址

https://github.com/snoopysecurity/dvws进行下载。

下载最新版本并复制到OWASP BWA虚拟机(或直接下载到它);我们将把代码放在/var/www/dvwebservices/中。

这段代码是一组脆弱的web服务,其目的是进行安全测试;我们将修改其中一个,使其不那么脆弱。打开

/var/www/dvwebservices/vulnerabilities/cors/server.php

可能会使用nano编辑器,默认情况下包括在VM中:

nano/var/www/dvwebservices/vulnerabilities/cors/server.php

查找所有设置了Access-Control-Allow-Origin头的实例,并对每一行进行注释,如下面的屏幕截图所示:

我们还需要添加几行代码来正确处理请求参数;最终代码如下:

被logo挡住的地方为$dictionary[$obj->searchterm]]));

实战演练

一旦在服务器中有了这些代码,我们就可以在

http://192.168.56.11/dvwebservices/vulnerabilities/cors/client.php浏览web服务客户机并开始我们的练习。使用BurpSuite作为我们的代理来进行攻击:

1、首先,让我们通过浏览来查看正常的client.php。它显示服务器生成的一个密钥。

2、如果我们转到代理Burp suite,在本例中,我们可以看到客户机向服务器发出POST请求server.php。在这个请求中有一些需要注意的地方,如下面的截图所示:

代码语言:javascript
复制
内容类型头是application/json,这意味着主体是json格式的。

请求体不是标准的HTTP请求格式(param1=value&param2=value),而是JSON对象,由header指定:

3、假设我们要对该请求进行CSRF攻击。如果希望HTML页面以JSON格式发出请求,则不能使用HTML表单;我们需要使用JavaScript。创建一个HTML文件,cos-json-request.html在这个例子中,用以下代码:

4、前面的代码复制client.php发出的请求。在浏览器中打开它并单击Submit request。什么也不会发生,下面的截图显示了原因:

根据前面的错误,请求被浏览器阻塞,因为服务器没有在其访问控制允许的源文件头中指定允许的源文件。这是因为我们正在请求一个资源(服务器)。从服务器外部的源文件,也是KaliVM中的一个本地文件。

5、解决此限制的最简单方法是创建一个HTML页面,该页面在HTML表单生成的POST请求中发送相同的参数,因为浏览器在提交表单时不会检查CORS策略。创建另一个HTML文件,CORS-form-request.html,内容如下:

浏览器在提交HTML表单时不检查CORS策略;但是,表单中只能使用GET和POST方法,这就排除了web服务中实现的其他常用方法,如PUT和DELETE。

6、加载CORS-form-request.html,在浏览器中的它应该是这样的:

7、单击Submit form ,请求并查看服务器如何使用包含密钥的JSON对象进行响应:

8、检查Burp suite中的请求,并验证内容类型标头是

代码语言:javascript
复制
application/x-www-form-urlenencoded

工作原理

我们对此小节的测试应用程序是一个web页面(client.php)。使用REST web服务(server.php),检索一个密钥。我们试图在本地系统中使用web页面来执行CSRF攻击,但失败了,因为服务器没有定义CORS策略,浏览器默认情况下拒绝跨源请求。

然后我们制作了一个HTML表单来发送与JavaScript请求中相同的参数,但使用HTML表单格式,它成功了。web服务以多种格式(如XML、JSON或HTML表单)接收信息并不少见,因为它们打算与许多不同的应用程序进行交互;然而,这种开放性可能会使web服务暴露于攻击之下,特别是在CSRF等漏洞没有得到适当处理的情况下。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 玄魂工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
手游安全测试
手游安全测试(Security Radar,SR)为企业提供私密的安全测试服务,通过主动挖掘游戏业务安全漏洞(如钻石盗刷、服务器宕机、无敌秒杀等40多种漏洞),提前暴露游戏潜在安全风险,提供解决方案及时修复,最大程度降低事后外挂危害与外挂打击成本。该服务为腾讯游戏开放的手游安全漏洞挖掘技术,杜绝游戏外挂损失。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档