专栏首页玄魂工作室Kali Linux Web渗透测试手册(第二版) - 4.8- 执行跨站点请求伪造攻击

Kali Linux Web渗透测试手册(第二版) - 4.8- 执行跨站点请求伪造攻击

翻译来自掣雷小组

成员信息:

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

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

第四章、测试身份验证和会话管理

4.0、介绍

4.1、用户名枚举

4.2、使用Burp Suite进行登陆页面的字典攻击

4.3、使用Hydra强制进行暴力攻击

4.4、使用Metasploit破解Tomcat的密码

4.5、手动识别Cookie中的漏洞

4.6、攻击会话固定漏洞

4.7、使用Burp Sequencer评估会话标识符的质量

4.8、不安全对象的直接引用

4.9、执行跨站点请求伪造攻击


4.9、执行跨站点请求伪造攻击

CSRF攻击是指经过身份验证的用户在对其进行身份验证的Web应用程序中执行不需要的操作的攻击。 这是通过用户访问的外部站点完成的,并触发这些操作。

在本文中,我们将从应用程序中获取所需信息,以便了解攻击站点应该如何向易受攻击的服务器发送有效请求,然后我们将创建一个模拟合法请求的页面,并诱使用户访问经过身份验证的那个页面。 我们还将对概念的基本证明进行一些迭代,使其看起来更像真实世界的攻击,受害者不会注意到它。

环境准备

你们需要在BodgeIt中为此配置使用有效的用户帐户。 我们将使用user@example.com作为受害者:

实战演练

我们首先需要分析我们想要强迫受害者提出的要求。为此,我们需要Burp Suite或浏览器中配置的其他代理:

1. 以任何用户身份登录BodgeIt,然后单击用户名转到配置文件。

2. 进行密码更改,让我们看看代理中的请求是什么样的:

所以,这是一个POST请求http://192.168.56.11/bodgeit/password.jsp并且只有密码及其在正文中的确认.

3. 让我们尝试创建一个非常简单的HTML页面来复制这个请求。 使用以下内容创建一个文件(我们将其命名为csrf-change-password.html):

4. 现在,在与登录会话相同的浏览器中加载此文件:

5. 单击“提交”,您将被重定向到用户的个人资料页面。 它会告诉您密码已成功更新。

6. 虽然这证明了这一点,但外部站点(或本例中的本地HTML页面)可以在应用程序上执行密码更改请求。用户仍然不太可能点击“提交”按钮。 我们可以自动执行该操作并隐藏输入字段,以便隐藏恶意内容。 让我们根据前一页创建一个新页面;我们称之为csrf-change-password-scripted.html:

7. 如果我们在启动了BodgeIt会话的同一浏览器中加载此页面,它将自动发送请求,之后将显示用户的个人资料页面。在下面的屏幕截图中,我们使用浏览器的调试器在请求发出之前设置断点:

8. 从攻击者的角度来看,这最后一次尝试看起来更好; 我们只需要受害者加载页面,请求将自动发送,但受害者将看到您的密码已被更改消息,这肯定会引发警报。

9. 我们可以通过在同一页面内的不可见框架中加载响应来进一步改进攻击页面。 有很多方法可以做到这一点; 快速而肮脏的是为框架设置尺寸0。 我们的文件看起来像这样:

注意表单的target属性是如何在它下面定义的iframe,并且这样的框架具有0%的高度和宽度。 10.在启动会话的浏览器中加载新页面。 这个截图显示了使用浏览器的开发人员工具检查页面时的外观:

请注意,iframe对象在页面中只是一个黑线,在Inspector中,我们可以看到它包含BodgeIt用户的配置文件页面。

11. 如果我们分析CSRF页面所进行的网络通信,我们可以看到它实际上要求更改BodgeIt密码:

原理剖析

当我们从浏览器发送请求并且已经存储了属于目标域的cookie时,浏览器会在发送之前将cookie附加到请求中; 这就是使cookie像会话标识符一样方便的原因,但这种HTTP工作方式的特点也使它容易受到像我们在本文中看到的那样的攻击。

当我们在应用程序中有活动会话的同一浏览器中加载页面时,即使它是不同的选项卡或窗口,并且此页面向启动会话的域发出请求,浏览器将自动附加会话该请求的cookie。 如果服务器没有验证它收到的请求实际上来自应用程序内部,通常是通过添加包含唯一的参数,对于每个请求或每次更改的令牌,它允许恶意站点代表访问此恶意站点的合法,活跃用户进行呼叫,同时对目标域进行身份验证。

在Web应用程序渗透测试中,我们使用的第一个代码,带有两个文本字段和提交按钮的代码可能足以证明存在安全漏洞。 但是,如果应用程序的渗透测试是另一项参与的一部分,例如社会工程或红队练习,则需要做一些额外的努力来防止受害用户怀疑发生了某些事情。在本文中,我们使用JavaScript通过在页面中设置onload事件并在事件处理函数中执行表单的submit方法来自动发送请求。 我们还使用隐藏的iframe来加载密码更改的响应,因此,受害者永远不会看到他/她的密码已更改的消息。

另请参阅

应用程序通常使用Web服务执行某些任务或从服务器检索信息,而无需更改或重新加载页面; 这些请求是通过JavaScript(它们将添加标头X-Requested-With:XMLHttpRequest)以及通常以JSON或XML格式添加的,其中Content-Type标头的值为application / json或application/ xml。 当发生这种情况时,我们尝试发出跨站点/域请求,浏览器将执行所谓的预检检查,这意味着在预期请求之前,浏览器将发送OPTIONS请求以验证哪些方法和内容类型服务器允许从跨源(域应用程序所属的域以外)请求).

预检检查可以中断CSRF攻击,因为如果服务器不允许跨源请求,浏览器将不会发送恶意请求。 但是,此保护仅在通过脚本进行请求时才有效,而不是在通过表单进行时。因此,如果我们可以将JSON或XML请求转换为常规HTML表单,我们就可以创建CSRF攻击。 如果这是不可能的,因为服务器只允许某些内容类型,那么我们成功CSRF的唯一机会是服务器的跨源资源共享(CORS)策略允许来自我们的攻击域的请求,因此请检查服务器响应中的Access-Control-Allow-Origin标头。

本文分享自微信公众号 - 玄魂工作室(xuanhun521)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Kali Linux Web渗透测试手册(第二版) - 3.6 - 使用ZAP的爬虫功能

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

    用户1631416
  • Kali Linux Web渗透测试手册(第二版) - 3.5 - 使用ZAP代理查看和修改请求

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

    用户1631416
  • [技巧]看我如何通过Weeman+Ettercap拿下路由器管理权限

    本文作者:sn0w 原文链接:https://zhuanlan.zhihu.com/p/20871363 本篇文章主要介绍如何在接入无线网络后如何拿到路由器的...

    用户1631416
  • Android自动化页面测速在美团的实践

    随着移动互联网的快速发展,移动应用越来越注重用户体验。美团技术团队在开发过程中也非常注重提升移动应用的整体质量,其中很重要的一项内容就是页面的加载速度。如果发生...

    Android技术干货分享
  • Android自动化页面测速在美团的实践

    随着移动互联网的快速发展,移动应用越来越注重用户体验。美团技术团队在开发过程中也非常注重提升移动应用的整体质量,其中很重要的一项内容就是页面的加载速度。如果发生...

    美团技术团队
  • 分享几个 Chrome 开发者工具的 小技巧

    在《论语》中,孔子提倡“学而不思则罔,思而不学则殆”的学习方法。我们再往深层面挖掘,“思”究竟是在思考什么?个人理解是思考并总结出一些共性的东西,即“套路”。有...

    sergiojune
  • 爬虫必备工具 —— Chrome 开发者工具

    在《论语》中,孔子提倡“学而不思则罔,思而不学则殆”的学习方法。我们再往深层面挖掘,“思”究竟是在思考什么?个人理解是思考并总结出一些共性的东西,即“套路”。有...

    猴哥yuri
  • Spark与HBase的整合

    之前因为仅仅是把HBase当成一个可横向扩展并且具有持久化能力的KV数据库,所以只用在了指标存储上,参看很早之前的一篇文章基于HBase做Storm 实时计算指...

    用户2936994
  • 使用apache的httpClient对异步网络请求进行封装

    Meet相识
  • 「欧洲AI联合实验室」ELLIS成立:誓与中美抢人才

    今年 4 月的倡议书《Initiative to establish a European Lab for Learning & Intelligent Sys...

    机器之心

扫码关注云+社区

领取腾讯云代金券