Web开发

注册

 

发新话题 回复该主题

CSRF渗透测试防御与安全检测手法剖析 [复制链接]

1#
北京治疗白癜风哪里最好 https://jbk.39.net/yiyuanzaixian/bjzkbdfyy/sfxbdf/

上一节讲到了渗透测试中xss跨站攻击检测方法和防护,这一节也是关于跨站攻击的另一个手法CSRF,很多客户找到我们Sinesafe想要了解更多的跨站攻击检测方法以及防御此类攻击的办法,想要让网站的安全性更加坚固,对此提醒大家渗透测试网站必须要拿到授权才能测试哦!

3.3.1.简介

CSRF(Cross-siterequestforgery)跨站请求伪造,也被称为“OneClickAttack”或者SessionRiding,通常缩写为CSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。

3.3.2.分类

3.3.2.1.资源包含

资源包含是在大多数介绍CSRF概念的演示或基础课程中可能看到的类型。这种类型归结为控制HTML标签(例如image、audio、video、object、等)所包含的资源的攻击者。如果攻击者能够影响URL被加载的话,包含远程资源的任何标签都可以完成攻击。

由于缺少对Cookie的源点检查,如上所述,此攻击不需要XSS,可以由任何攻击者控制的站点或站点本身执行。此类型仅限于GET请求,因为这些是浏览器对资源URL唯一的请求类型。这种类型的主要限制是它需要错误地使用安全的HTTP请求方式。

3.3.2.2.基于表单

通常在正确使用安全的请求方式时看到。攻击者创建一个想要受害者提交的表单;其包含一个Java片段,强制受害者的浏览器提交。

该表单可以完全由隐藏的元素组成,以致受害者很难发现它。

如果处理cookies不当,攻击者可以在任何站点上发动攻击,只要受害者使用有效的cookie登录,攻击就会成功。如果请求是有目的性的,成功的攻击将使受害者回到他们平时正常的页面。该方法对于攻击者可以将受害者指向特定页面的网络钓鱼攻击特别有效。

3.3.2.3.

这可能是最少看到的方式。

由于许多现代Web应用程序依赖XHR,许多应用花费大量的时间来构建和实现这一特定的对策。

基于XHR的CSRF通常由于SOP而以XSS有效载荷的形式出现。没有跨域资源共享策略(CORS),XHR仅限于攻击者托管自己的有效载荷的原始请求。

这种类型的CSRF的攻击有效载荷基本上是一个标准的XHR,攻击者已经找到了一些注入受害者浏览器DOM的方式。

3.3.3.防御

通过CSRF-token或者验证码来检测用户提交验证Referer/Content-Type对于用户修改删除等操作最好都使用POST操作避免全站通用的cookie,严格设置cookie的域3.4.SSRF漏洞

3.4.1.简介

服务端请求伪造(ServerSideRequestForgery,SSRF)指的是攻击者在未能取得服务器所有权限时,利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网。SSRF攻击通常针对外部网络无法直接访问的内部系统。

3.4.2.漏洞危害

SSRF可以对外网、服务器所在内网、本地进行端口扫描,攻击运行在内网或本地的应用,或者利用File协议读取本地文件。

内网服务防御相对外网服务来说一般会较弱,甚至部分内网服务为了运维方便并没有对内网的访问设置权限验证,所以存在SSRF时,通常会造成较大的危害。

3.4.3.利用方式

SSRF利用存在多种形式以及不同的场景,针对不同场景可以使用不同的绕过方式。

以curl为例,可以使用dictprotocol操作Redis、file协议读文件、gopher协议反弹Shell等功能,常见的Payload如下:

curl-vvvdict://.0.0.1:/info

curl-vvvfile:///etc/passwd

#*注意:链接使用单引号,避免$变量问题

3.4.4.相关危险函数

SSRF涉及到的危险函数主要是网络访问,支持伪协议的网络读取。以PHP为例,涉及到的函数有file_get_contents()/fsockopen()/curl_exec()等。

3.4.5.过滤绕过

3.4.5.1.更改IP地址写法

一些开发者会通过对传过来的URL参数进行正则匹配的方式来过滤掉内网IP,如采用如下正则表达式:

^10(\.([2][0-4]\d

[2][5][0-5]

[01]?\d?\d)){3}$^\.([1][6-9]

[2]\d

3[01])(\.([2][0-4]\d

[2][5][0-5]

[01]?\d?\d)){2}$^\.(\.([2][0-4]\d

[2][5][0-5]

[01]?\d?\d)){2}$对于这种过滤我们采用改编IP的写法的方式进行绕过,例如..0.1这个IP地址可以被改写成:

8进制格式:..0.进制格式:0xC0.0xA8.0.进制整数格式:323223552进制整数格式:0xC0A还有一种特殊的省略模式,例如10.0.0.1这个IP可以写成10.1。访问改写后的IP地址时,Apache会报BadRequest,但Nginx、MySQL等其他服务仍能正常工作。另外,0.0.0.0这个IP可以直接访问到本地,也通常被正则过滤遗漏。

3.4.5.2.使用解析到内网的域名

XSS全称为CrossSiteing,为了和CSS分开简写为XSS,中文名为跨站脚本。该漏洞发生在用户端,是指在渲染过程中发生了不在预期过程中的Java代码执行。XSS通常被用于获取Cookie、以受攻击者的身份进行操作等行为。

3.4.5.3.利用解析URL所出现的问题

在某些情况下,后端程序可能会对访问的URL进行解析,对解析出来的host地址进行过滤。这时候可能会出现对URL参数解析不当,导致可以绕过过滤。

比如//

..0.1/当后端程序通过不正确的正则表达式(比如将
分享 转发
TOP
发新话题 回复该主题