第六天作业

第六天作业

一、CSRF跨站请求伪造

CSRF攻击的核心在于利用受害者浏览器中的认证凭据(如Cookie、Session等),向受信任的网站发送非预期的HTTP请求。由于这些请求附带了受害者的认证信息,因此,Web服务器可能会误认为这些请求是合法用户的行为,从而执行相应的操作,如转账、修改密码等。

1.CSRF和XSS的区别

CSRF:跨站请求伪造是一种通过诱导用户进行他们未授权的操作的攻击。攻击者利用受害者的合法会话,发送恶意请求到目标网站,从而执行受害者可能不希望进行的操作。

XSS:跨站脚本攻击则是将恶意脚本注入到网页中,当其他用户浏览这些页面时,恶意脚本会在用户的浏览器中执行,从而窃取敏感信息或进行其他恶意操作。

具体区别:
1.csrf通常需要用户先登录目标网站并获取cookie,然后利用这些cookie进行攻击,xss不需要用户登录即可进行攻击,因为攻击者直接在目标网站上注入恶意脚本。
2.csrf盗取cookie时并不知道cookie的具体值即可利用,xss盗取cookie时能够直接获取cookie的值。
3.csrf虽然危害较大,但其危害范围相对有限,通常只能执行受害者已经授权的操作,xss由于可以在任何页面上执行恶意脚本,因此其危害性更大,可以窃取用户的cookie、会话信息等敏

2.CSRF攻击步骤

1.用户登录受信任网站:用户C打开浏览器,访问受信任网站A,并输入用户名和密码请求登录。

2.生成Cookie并返回给浏览器:在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户成功登录网站A,可以正常发送请求到网站A。

3.用户未登出访问危险网站:用户在没有登出网站A的情况下,访问到了危险网站B。

4.构造恶意请求:网站B对网站A发送恶意请求,诱导用户点击某个链接或按钮。

5.执行恶意操作:由于用户的浏览器已经保存了从网站A获取的Cookie,因此这些请求会被服务器认为是来自该用户的合法请求,从而执行恶意操作。

3.CSRF手工构造POST型页面方法

1.首先,需要确保已经成功登录到目标网站,并且浏览器中保存了相应的Cookie信息。

2.在本地或远程服务器上创建一个HTML页面,该页面包含一个表单,表单的提交方式设置为POST,并且指定要提交的数据和目标网站的URL。

例如:

   <form action="url" method="post">
       <input type="hidden" name="姓名" value="张三">
       <input type="submit" value="点击提交">
   </form>

在表单中需要提前设置好要发送请求的内容,然后类型改为隐藏。

3.将上述恶意页面嵌入到另一个网页中,或者通过邮件、即时消息等方式发送给目标用户。确保这个页面看起来是合法和可信的,以增加用户点击的可能性。

4.当用户访问并点击恶意页面中的表单时,浏览器会自动携带用户的Cookie信息,向目标网站发送包含恶意参数的POST请求。由于浏览器信任用户的Cookie信息,目标网站会认为这是用户本人发起的请求,并执行相应的操作。

此外,可以通过burp suite抓包,在抓包后右键选择生成csrf poc,可以获得构造好的post型页面html代码。

例如在pikachu靶场中,打开csrf(post)关卡,用户登录成功后,抓取提交修改资料的包。

在这里插入图片描述

此时可以右键选择generate csrf poc,获取html代码。

在这里插入图片描述

然后新建一个html文件,可将上述代码粘贴到该html文件,然后通过构造恶意的数据替换value的值,并设置隐藏。

在这里插入图片描述

打开该html文件,若用户点击了该页面中的提交按钮,则会提交我们恶意构造好的post请求包,此时需要注意是同一浏览器打开,确保cookie值是一样的。

在这里插入图片描述

提交后可以发现成功执行了构造的请求包。

在这里插入图片描述

4.token类csrf利用方法

token定义

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

流程:

1.客户端使用用户名和密码请求登录。

2.服务端收到请求,验证用户名和密码。

3.验证成功后,服务端会生成一个token,然后把这个token发送给客户端。

4.客户端收到token后把它存储起来,可以放在cookie或者Local Storage(本地存储)里。

5.客户端每次向服务端发送请求的时候都需要带上服务端发给的token。

6.服务端收到请求,然后去验证客户端请求里面带着token,如果验证成功,就向客户端返回请求的数据。码请求登录。

在请求包中带有token时,可以利用burp suite进行抓包,利用插件CSRF Token Tracker,对token进行跟踪。

例如在pikachu靶场中,先登录用户,再用burpsuite进行抓包,可以发现请求包中出现了token字段。

在这里插入图片描述

再拓展中下载插件CSRF Token Tracker,将得到的token值复制到CSRF Token Tracker中,设置成以下进行token值追踪:

在这里插入图片描述

此时修改参数phonenumber的值为123456,可以发现token没变的情况下仍然修改成功。

在这里插入图片描述

二、SSRF服务端请求伪造

SSRF即服务器端请求伪造,攻击者利用这种漏洞,通过篡改服务器的请求目标地址来伪造请求,从而获取敏感信息。SSRF漏洞的产生,主要是因为服务端提供了从其他服务器应用获取数据的功能,但未对目标地址进行足够的过滤和限制。

漏洞成因:

  1. 服务端提供了从其他服务器应用获取数据的功能,例如从指定的URL地址获取网页内容、加载指定地址的图片、数据、下载等。通常情况下,服务端请求的目标是与该请求服务器处于同一内网的资源服务。

  2. 如果服务端未对请求的目标地址、文件等进行充足的过滤和限制,攻击者就有可能通过篡改请求的目标地址来进行伪造请求。例如,当服务端使用file_get_contents()函数从用户指定的URL获取内容时,如果未对目标URL进行合法性检查,攻击者可以构造一个恶意URL来获取敏感信息。

1.SSRF常用伪协议

1.file:// 用于访问本地文件系统,几乎是SSRF中最常用的伪协议之一,可以尝试从服务器端任意读取文件

2.http://https:// 用于访问HTTP(s)网址,可以用来探测内网服务或资源

3.ftp:// 用于访问FTP(s) URLs,同样可以用来探测内网服务或资源

4.php:// 用于访问各个输入/输出流(I/O streams),可以用来执行PHP代码或读取文件

5.data:// 用于数据(RFC 2397),可以用来执行数据URI

6.zlib:// 用于压缩流,可以用来读取压缩文件

7.glob:// 用于查找匹配的文件路径模式

8.phar:// 用于PHP归档,可以用来执行PHP归档文件中的代码

2.SSRF pikachu靶场通关

2.1 SSRF(curl)

观察到url中含有参数url指向一个地址。

在这里插入图片描述

尝试修改参数url的值为www.baidu.com,可以观察到页面出现了baidu的页面。

在这里插入图片描述

尝试修改url值为自己目录下的文件路径。

在这里插入图片描述

2.2 SSRF(file_get_content)

PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()

file_get_contents() 把整个文件读入一个字符串中

打开pikachu发现file地址

在这里插入图片描述

尝试修改file路径为自己目录下的文件路径

在这里插入图片描述

3.源码分析

3.1 SSRF(curl)

在这里插入图片描述

通过对源代码分析,发现通过get方法获取url的值,但是未对url的值进行过滤,然后又通过curl_exec()函数执行了获取目标url的php代码,即存在服务端请求伪造。

3.2 SSRF(file_get_content)

在这里插入图片描述

服务端未对URL进行严格的过滤和验证,获取文件名后利用file_get_contents函数,用户即可通过file参数请求任意文件包括远程文件和内部资源,即存在服务端请求伪造。

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值