实验实训6

一、CSRF和XSS的区别

1、定义

CSRF (Cross-site request forgery,跨站请求伪造),也被称为One Click Attack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,攻击者通过引诱用户执行未授权的动作,比如在用户不知情的情况下,利用用户的身份执行恶意操作。

XSS又叫CSS (Cross Site Script ,跨站脚本攻击),它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。

2、触发方式

CSRF:攻击者通常通过用户点击恶意链接或访问恶意网站,从而在用户未察觉的情况下发出请求。

XSS:通过注入恶意代码到网页中,该代码会在用户浏览网页时自动执行。

3、依赖条件

CSRF:依赖用户的身份验证状态,因为攻击利用了用户已认证的身份。

XSS:依赖网页或输入字段没有对用户输入进行适当的过滤或转义,允许注入代码的执行。

4、受害群体

CSRF:主要针对已认证用户,攻击者利用用户的身份执行操作(范围较小)。

XSS:XSS利用站点内的信任用户,任何访问受攻击页面的用户(范围较大)。

5、造成的影响

CSRF:可能导致账户被盗、资金被转移、数据被修改等。

XSS:可能导致用户的会话被劫持、敏感信息被窃取、网页内容被篡改等。

6、攻击者和被攻击者的关系

CSRF:攻击者与用户无直接交互:攻击者不需要直接控制目标网站的内容,只需要让用户在已登录的情况下执行特定操作。用户通常是在无意中(如点击链接、查看图片)触发了攻击。

XSS:攻击者与用户有直接交互:攻击者直接控制或影响目标网站的内容,通过注入的脚本影响访问该页面的所有用户。用户一旦访问受感染的页面,恶意脚本就会执行。

7、攻击模式

XSS攻击遵循双向攻击模式,允许攻击者执行恶意脚本、访问响应,并将后续敏感数据发送到攻击者选择的目的地。而CSRF是一种单向攻击机制,这意味着攻击者只能发起HTTP请求,但不能检索已发起请求的响应。

二、总结CSRF攻击步骤

1、用户浏览并登录信任网站存在CSRF漏洞的网站webA;

2、webA验证通过,在用户处产生webA的cookie;

3、用户在没有登出webA的情况下访问危险网站webB;

4、webB要求访问第三方站点(webA),发出一个请求(request);

5、根据webB在(4)的请求,浏览器带着(2)产生出的cookie访问webA;

6、webA不知道(5)中的请求是用户发出的还是webB发出的,所以webA会根据用户的权限处理(5)中的请求,这样webB就达到了模拟用户操作的目的。

三、总结CSRF手工构造POST型页面方法

1、捕获与提取

使用Burp Suite、Fiddler或者其他抓包工具捕获网站的合法POST请求,提取目标请求的URL、HTTP方法(POST)、表单字段、参数和Cookie等必要信息。

2、创建恶意HTML表单

在本地HTML页面中创建一个与目标请求相同的表单,其中包含目标URL、所需的表单字段和预设的值。这些值将被用于执行攻击操作。输入框通常是隐藏的,以避免受害者察觉。

举例:(可以修改文件后缀将文本文件修改为html文件使用)

3、自动提交表单

利用JavaScript脚本,在页面加载时自动提交恶意表单,无需用户的额外操作。

举例:

最后等待用户访问构建的恶意HTML页面(建议自己尝试点击构建的html页面)

四、说明token类CSRF利用方法

1、定义

Token类CSRF(Cross-Site Request Forgery with Token)是指通过获取或绕过目标网站的CSRF Token验证机制,进行跨站请求伪造攻击的方法。

其中CSRF Token是一种防御措施,旨在保护网站免受CSRF攻击。每个请求都包含一个唯一的、随机生成的Token,用于验证请求的合法性。然而,攻击者通过多种手段获取或绕过Token,从而使伪造的请求通过验证。

2、步骤

(1)分析CSRF Token的生成和使用机制

CSRF Token通常会嵌入在表单中,或者以HTTP头部的形式传递。可使用Burp Suite等抓包工具捕获合法请求,提取CSRF Token的相关信息。

(2)获取CSRF Token

若目标网站存在XSS(跨站脚本)漏洞,攻击者可以利用XSS代码窃取用户的CSRF Token。

若网站通过Referer头部发送Token信息,Token可通过Referer暴露。

(3)创建请求并包含有效的CSRF Token

构造一个恶意的HTML表单或JavaScript脚本,将获取的Token值填入请求中。

(4)让受害者执行恶意请求,以利用获取到的Token在目标网站执行未授权的操作。

3、其他绕过CSRF Token的方法

(1)Token预测:

目标网站的Token生成机制较弱(比如采用可预测的算法或简单的时间戳),攻击者可能通过分析或预测生成规则来绕过Token验证。

(2)Token重用:

网站没有适当设置Token的过期机制,Token是长期有效的,攻击者可通过劫持某一次请求的Token并反复利用。

五、SSRF常用伪协议

SSRF的定义:SSRF(Server-Side Request Forgery:服务器跨站请求),是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。

一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内网。也就是说可以利用一个网络请求的服务,当作跳板进行攻击)

1、file:// --读取服务器本地文件系统中的文件内容。

2、http://和https:// --通过http或https协议访问内部网络中的web服务或 API。

3、ftp:// --通过ftp协议访问文件服务器。

4、gopher:// --常用于创建复杂的http请求,可能绕过某些防火墙规则。

5、dict:// --可被利用来发送任意文本内容,可能造成信息泄露或远程代码执行。

6、php:// --在使用php的服务器上,可以访问输入流、输出流或过滤器,甚至直接执行代码。

7、ldap:// --访问内部的ldap服务器,可能用于用户认证或信息获取。

8、smb:// --通过smb协议访问网络共享资源,可以用来访问文件或进行身份验证。

9、mysql://和postgres:// --连接内部数据库服务,可能进行数据库查询或执行数据库命令。

六、SSRF pikachu靶场通关

1、第一关SSRF(curl)

(1)进入关卡看见链接点击进入发现有一首诗,查看网址发现跳转页面是通过url参数进行传递请求的。

(2)尝试修改后面的网址:url=http://www.baidu.com,发现跳转成功,网站没有对其url进行限制,我们可以直接修改该网站的url,实现url跳转。

(3)本地新建文件,使用file协议访问该文件:url=file://D:\111.txt,访问成功。

2、第二关SSRF(file_get_content)

(1)进入关卡看见链接点击进入发现有一首诗,查看网址发现第一关的url变成了file。

(2)尝试使用file伪协议读取本地文件,file=file://D:\n1.txt,成功。

七、SSRF靶场通关时根据源代码说明漏洞成因

源代码的存储路径

1、SSRF(curl)

(1)用户输入直接传递给curl请求:

用户通过GET请求传递的url参数直接被赋值给了$URL变量。随后,$URL被传递给curl_init(),说明用户可以控制服务器发起的请求的目标地址。

(2)缺乏对用户输入的有效过滤:

代码没有对用户输入的URL进行任何过滤或验证。用户可以传入任意URL,包括非HTTP/HTTPS协议的URL,如file://、ftp://、gopher://等,这些协议都可能被cURL支持。

(3)cURL的多协议支持:

cURL支持多种协议(如HTTP、HTTPS、FTP、GOPHER、TELNET、DICT、FILE、LDAP等),这进一步扩大了攻击面。

(4)服务器响应返回给前端:

cURL请求的响应结果$RES直接被输出给了用户。这意味着攻击者可以直接看到服务器请求的结果,比如内部网络的响应数据或文件内容。

2、SSRF(file_get_content)

(1)用户输入直接传递给函数file_get_contents():

用户通过GET请求传递的file参数直接被赋值给了变量$filename。然后$filename被传递给了file_get_contents()函数,说明用户可以控制服务器读取的文件或资源的路径。

(2)缺乏对用户输入的有效过滤:

代码没有对用户输入的文件路径进行任何过滤或验证。这使得用户可以传入任意路径,包括远程URL(如http://或https://)或者特殊的伪协议(如php://、file://)。

(3)file_get_contents()函数的多协议支持:

file_get_contents()函数不仅可以读取本地文件,还支持通过HTTP/HTTPS、FTP等协议读取远程资源。攻击者可以传入恶意的URL或伪协议,访问内部资源。

(4)服务器响应直接输出:

file_get_contents()读取到的内容被存储在$str中,随即直接通过echo输出给用户。此时攻击者可以直接看到读取到的文件内容或远程请求的响应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值