Day6(网络安全)

目录

总结CSRF和XSS区别

总结CSRF攻击步骤

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

说明token类CSRF利用方法

SSRF常用伪协议

SSRF pikachu靶场通关

第一关

第二关

漏洞成因分析

SSRF(curl)

SSRF(file_get_content)


总结CSRF和XSS区别

跨站脚本攻击(XSS

  1. 定义:XSS攻击是一种代码注入攻击,攻击者通过在网站注入恶意脚本,在用户的浏览器上运行,从而盗取用户信息如cookie等。
  2. 类型
    • 存储型XSS:恶意脚本存储在目标服务器上,当浏览器请求数据时,脚本从服务器传回并执行。
    • 反射型XSS:攻击者诱导用户访问一个带有恶意代码的URL,服务器端处理后将带有恶意代码的数据发送到浏览器端,浏览器端解析执行。
    • DOMXSS:通过修改页面的DOM节点形成的XSS。
  3. 防御策略:对用户输入进行严格的验证和过滤,对输出数据进行适当的编码,使用HTML实体编码代替直接输出用户提供的数据,使用最新的安全框架和库。

跨站请求伪造(CSRF

  1. 定义:CSRF攻击是利用用户已通过身份验证的浏览器向目标网站发送伪造的请求,达到攻击者预期的操作。
  2. 攻击原理
    • 用户登录目标网站并获取有效的身份验证凭证(如Cookie)。
    • 攻击者在另一个网站上注入包含目标网站URL和伪造请求参数的恶意代码。
    • 用户访问攻击者控制的网站时,恶意代码触发浏览器向目标网站发送包含伪造请求参数的请求。
    • 目标网站接收到请求后,由于请求是通过用户的身份验证凭证发送的,会错误地执行攻击者预期的操作。
  3. 防御措施:验证HTTP Referer字段,确保请求来自合法来源;添加CSRF Token,在敏感操作的表单中添加随机生成的CSRF Token,并验证其有效性。

总结CSRF攻击步骤

跨站请求伪造(CSRF)攻击的步骤通常包括以下几个阶段:

  1. 用户认证:用户在目标网站上进行了登录,并且网站在用户的浏览器中设置了一个有效的会话(通常是通过Cookie实现的)。
  2. 攻击者构造恶意请求:攻击者构造一个针对目标网站的恶意请求,这个请求通常会执行一些用户不希望的操作,如更改密码、转账等。
  3. 诱导用户触发:攻击者通过各种手段诱导用户触发这个恶意请求。这可能通过电子邮件、社交媒体消息、恶意网站或任何可以托管链接或脚本的地方来实现。

具体步骤如下:

  1. 用户登录目标网站:用户正常登录目标网站,并获取了一个有效的会话凭证。
  2. 攻击者创建CSRF攻击页面:攻击者创建一个包含恶意代码的网页或HTML元素。这个恶意代码通常是一个自动提交的表单或者一个指向目标网站的AJAX请求。
  3. 用户访问攻击者的页面:用户被诱导访问攻击者创建的页面。这可能是通过点击链接、浏览恶意网站或打开电子邮件中的附件等方式。
  4. 恶意请求的发送:当用户访问攻击者的页面时,页面中的恶意代码会在用户不知情的情况下,使用用户的会话凭证向目标网站发送请求。
  5. 目标网站验证请求:目标网站接收到请求后,会验证请求中的会话凭证。由于凭证有效,网站会认为这是一个合法的用户操作。
  6. 执行恶意操作:目标网站执行了攻击者预设的操作,如更改用户设置、执行交易等。
  7. 攻击完成:由于操作是在用户不知情的情况下执行的,攻击者达到了其恶意目的。

防御CSRF攻击的常见措施包括使用CSRF Token、检查Referer字段、设置SameSite属性的Cookie等。

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

确定目标操作

         确定你想要通过CSRF攻击执行的目标操作,比如更改用户密码、发布消息、转账等。

         分析该操作的HTTP请求,包括请求的URL、请求方法和必要的表单数据。

创建HTML页面

        使用HTML创建一个简单的页面,其中包含一个表单元素。

        表单的action属性设置为目标操作的URL

        表单的method属性设置为POST

添加隐藏字段

        在表单中添加必要的隐藏字段(<input type="hidden">),这些字段对应于目标操作所需的参数,如用户ID、新密码、操作类型等。

        确保这些字段的name属性与目标操作所需的参数名相匹配。

自动提交表单

        为了使表单在页面加载时自动提交,可以在<body>标签中使用onload事件触发表单的提交。

                或者,可以使用JavaScript来创建一个自动执行的函数,该函数在页面加载时提交表单。

诱导用户访问

        将构造的HTML页面托管在某个服务器上。

        通过电子邮件、社交媒体或其他手段诱导目标用户访问这个页面。

说明token类CSRF利用方法

Token是一种常用的防御CSRF攻击的手段。Token通常是一个随机生成的字符串,服务器在用户会话中生成,并在每个需要防范CSRF的表单中嵌入。服务器在处理表单提交时会验证Token的正确性,以确保请求是由合法用户发起的。

然而,即使使用了Token,某些情况下攻击者仍可能尝试利用Token进行CSRF攻击。以下是一些可能的利用方法,但请注意,这些方法并不保证成功,因为Token的目的是防止这类攻击,而且以下信息仅供安全研究和教育目的。

Token泄露

Token泄露:如果攻击者能够从受害者的浏览器或其他渠道获取Token,那么他们可以使用这个Token来构造一个有效的CSRF攻击。

   - 例如,如果网站在URL中暴露了Token,攻击者可以诱导用户点击一个包含Token的链接。

   - 或者,如果网站存在XSS漏洞,攻击者可以通过XSS漏洞从受害者的浏览器中窃取Token。

Token预测

Token预测:如果Token生成算法不够随机或者存在可预测的模式,攻击者可能能够预测Token的值。

   - 例如,如果Token是基于时间戳或简单计数器生成的,攻击者可能通过分析Token的生成模式来预测未来的Token。

Token重放

Token重放:在某些情况下,Token可能被设计为一次性使用,但如果服务器没有正确处理Token的消耗或过期,攻击者可能能够重放之前的Token。

   - 攻击者可以尝试在服务器刷新Token之前多次使用同一个Token。

Token绕过

Token绕过:如果服务器端的CSRF保护实现存在缺陷,攻击者可能找到方法绕过Token验证。

   - 例如,如果服务器仅在特定条件下检查Token,攻击者可能通过构造特殊的请求来绕过这些检查。

 利用方法示例

以下是攻击者可能尝试的一种方法:

1. 侦察:攻击者首先侦察目标网站,寻找Token的使用方式和潜在的漏洞。

2. 窃取Token:通过XSS或其他手段窃取受害者的Token。

3. 构造攻击:创建一个包含窃取的Token的恶意页面或请求。

4. 诱导用户:通过社会工程学手段诱导用户访问恶意页面或点击链接。

5. 执行攻击:当用户访问恶意页面时,Token随表单一起提交给服务器,如果服务器验证通过,则执行攻击者预设的操作。

SSRF常用伪协议

服务器端请求伪造(SSRF)是一种攻击,攻击者可以诱导服务器向攻击者控制的或其他第三方的服务器发送请求。在SSRF攻击中,攻击者可能会利用一些特殊的协议或伪协议来尝试获取服务器背后的网络资源或执行其他恶意操作。以下是一些常用的伪协议和协议,它们在SSRF攻击中可能会被利用:

1. file:// - 允许访问本地文件系统上的文件。

   - 例如:`file:///etc/passwd` 可以用来读取本地文件系统上的敏感文件。

2. dict:// - 用于访问字典服务器协议(Dictionary Server Protocol)。

   - 例如:`dict://localhost:11211/status` 可以用来获取memcached服务器的状态信息。

3. gopher:// - Gopher协议,可以用来构造复杂的请求,有时可以用于绕过某些过滤规则。

4. ftp:// - 文件传输协议,可以用来访问FTP服务器。

   - 例如:`ftp://localhost/` 可以用来列出FTP服务器上的文件。

5. http:// 和 https:// - 超文本传输协议,用于访问Web服务器。

   - 例如:`http://127.0.0.1:8080/` 可以用来访问本地或内网中的Web服务。

6. ldap:// - 轻量级目录访问协议,可以用来查询和操作目录服务。

   - 例如:`ldap://localhost:389/` 可以用来查询本地LDAP服务器。

7. tftp:// - 简单文件传输协议,可以用来上传或下载文件。

   - 例如:`tftp://localhost/readwrite` 可以用来与TFTP服务器交互。

8. smb:// - 服务器消息块协议,可以用来访问共享文件和打印机等。

   - 例如:`smb://127.0.0.1/share/` 可以用来访问本地网络上的SMB共享。

SSRF pikachu靶场通关

第一关

点进靶场之后,点击“累了吧,来读一首诗吧”,之后页面跳转

直接改url,其后可以输入其他的网址,之后网页会跳转到相应界面

也可以在url之后使用file,可以查看本地的一些文件内容

第二关

进入网页,点击“反正都读了,那就在来一首吧”,页面跳转

跟上一关相同,可直接修改网址,会跳转进相关页面

也可访问本地文件,但其文件只能是位于前方代码的同一目录下

读取PHP文件的源码:php://filter/read=convert.base64-encode/resource=ssrf.php

漏洞成因分析

SSRF(curl)

源代码参数中未对用户输入进行过滤

攻击者可以利用它使得服务器向攻击者指定的任意域发送HTTP请求。如果服务器具备访问内部网络或外部网络的能力,而服务器又没有对请求的地址进行适当的限制,攻击者就可以利用这个漏洞进行攻击。

SSRF(file_get_content)

file_get_contents()是 PHP 中一个用于读取文件内容或远程 URL 内容的函数。当使用 file_get_contents() 读取远程 URL 时,如果不对用户输入进行适当的验证和过滤,就可能存在 SSRF漏洞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值