第六次作业

1.总结CSRF和XSS区别

       CSRF(跨站请求伪造)和XSS(跨站脚本攻击)是两种常见的Web安全漏洞,它们虽然都是通过用户来达到攻击者的目的,但是其机制和影响不同。

1.1 CSRF (Cross-Site Request Forgery)

       定义: CSRF是一种攻击方式,它利用受害者的身份在已经认证的Web应用程序中执行非预期的操作。攻击者诱导受害者访问一个包含恶意链接的页面,这个链接会触发受害者的浏览器自动发送带有认证信息(如Cookie)的请求到目标网站。

       如何工作: 当受害者登录了一个应用,并且在一个新的标签或窗口中点击了一个链接或图片,这个链接可能携带了某些参数,当受害者点击时,浏览器会自动向目标站点发送一个请求,由于受害者之前已经登录过该站点,所以请求包含了认证凭证,导致服务器认为这是合法请求并处理之。

       影响: 攻击者可以利用此方法执行任何用户能做的操作,比如转账、更改密码等。

      预防措施: 可以使用同源策略、验证HTTP Referer字段、在表单中加入token验证、限制session cookie的生命周期等方法来减轻风险。

1.2 XSS (Cross-Site Scripting)

       定义: XSS是一种攻击方式,允许攻击者将恶意脚本注入到看起来可信的网页上。当其他用户浏览该网页时,脚本会在用户的浏览器中执行。

       如何工作: 攻击者通过某种方式(例如论坛帖子、评论等)将恶意脚本嵌入到一个网站中,当其他用户访问该页面时,这些脚本就会被执行,从而获取用户的敏感信息(如Cookie、用户名密码等)或者进行其他恶意行为。

       影响: 攻击者可以窃取用户的会话信息、破坏网站内容、传播病毒等。

      预防措施: 对输入进行过滤和编码、使用HTTP头部(如Content-Security-Policy)来限制脚本来源、采用安全的开发实践等。

       总的来说,CSRF主要利用的是用户的认证状态来执行非法操作,而XSS则是通过注入恶意代码来直接与用户的浏览器交互。两者都需要谨慎地进行防护以确保Web应用的安全性。

2. 总结CSRF攻击步骤

       CSRF(跨站请求伪造)攻击通常遵循一系列的步骤来完成。下面是一个典型的CSRF攻击过程:

2.1 攻击者寻找目标

        攻击者首先需要确定要攻击的目标网站,通常是那些有用户认证机制并且具有敏感功能的网站(如银行、社交网络等)。

2.2 创建恶意链接或HTML

       攻击者创建一个包含恶意请求的链接或HTML代码。这个请求会被伪装成正常的用户操作,比如“修改密码”、“转账”等。通常,这个请求会包含一个HTTP方法(GET或POST),以及必要的参数。

示例:

       如果是一个GET请求,可能是这样的URL:

http://example.com/transfer?amount=1000&to=attackerAccount`

     如果是一个POST请求,则需要构建一个HTML表单,其中包含隐藏字段来提交请求: 

 <form action="http://example.com/transfer" method="post">

    <input type="hidden" name="amount" value="1000" />

    <input type="hidden" name="to" value="attackerAccount" />

    <img src="x" onerror="this.parentNode.submit()" />

  </form>

       这里的`<img>`标签是用来自动触发表单提交的技巧。

2.3 诱使受害者点击链接或访问页面

       攻击者需要找到一种方式让受害者点击这个链接或访问包含恶意HTML的页面。这可以通过电子邮件、社交媒体、即时消息、论坛或其他途径实现。

2.4 浏览器自动发送请求

        一旦受害者点击了链接或加载了包含恶意HTML的页面,他们的浏览器就会自动发送请求到目标网站。如果受害者之前已经登录了该网站,那么浏览器会自动附带任何相关的认证信息(如Cookies)。

2.5 服务器处理请求

       目标网站的服务器会接收到来自受害者的请求,并因为请求包含了有效的认证信息而认为这是一个合法的请求。服务器随后根据请求的内容执行相应的操作。

2.6 完成攻击

       最终,攻击者通过受害者的身份执行了预期的操作,如转移资金、更改设置等。

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

      手工构造一个用于CSRF攻击的POST型页面需要一些HTML和JavaScript知识。下面是一个简单的步骤指南来说明如何构造这样一个页面:

3.1创建表单

       首先,需要创建一个HTML表单,该表单将包含所有必需的POST数据。这些数据应该包括目标网站的URL、请求类型(POST)、以及所有需要提交的数据字段。

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>CSRF Attack Example</title>

</head>

<body>

<form id="csrf-form" action="http://example.com/target" method="post">

    <!-- 假设目标网站有一个转账接口 -->

    <input type="hidden" name="amount" value="1000" />

    <input type="hidden" name="to" value="attackerAccount" />

</form>

<script>

    // 页面加载完成后自动提交表单

    document.getElementById('csrf-form').submit();

</script>

</body>

</html>

      在这个例子中,我们假设`http://example.com/target`是目标网站上的一个接受转账请求的URL。`amount`和`to`是表单字段,分别表示转账金额和收款人账户。

3.2自动提交表单

      为了让表单在页面加载时自动提交,我们可以使用JavaScript来实现这一点。上述示例中的`<script>`标签就包含了这样一段代码,它会在文档加载完毕后立即提交表单。

3.3利用社会工程学

       为了让受害者访问这个页面,需要利用社会工程学的方法,比如通过电子邮件、即时消息、社交媒体等方式将包含恶意链接的消息发送给受害者。链接可以是任何能让受害者点击的东西,例如一个有趣的图片链接或一个伪装成重要通知的链接。

3.4测试和调整

       在实际部署之前,应该在受控环境中测试这个页面是否能够成功触发目标网站的动作。确保所有的表单字段都正确无误,并且请求能够被正确地发送。

4. 说明token类CSRF利用方法

        Token类CSRF攻击通常指的是攻击者利用现有的CSRF token来绕过网站的安全措施,从而执行未授权的操作。这种攻击的前提是,目标网站已经实现了CSRF防护措施,比如在表单中加入了CSRF token。然而,如果这些安全措施存在缺陷或设计不当,攻击者仍然有可能利用这些token来进行攻击。

4.1. Token泄露

     XSS攻击:攻击者通过注入恶意脚本(如JavaScript)来获取用户的CSRF token。当用户访问存在XSS漏洞的页面时,恶意脚本可以读取并提取页面中的CSRF token,并将其发送到攻击者的服务器。

       URL参数泄露:如果CSRF token作为URL参数传递,攻击者可以通过查看URL或浏览器历史记录等途径获取token。例如,如果token包含在GET请求的URL中,攻击者可以通过截获URL或查看浏览器历史记录来获取token。

 4.2 Token重放攻击

       固定Token:如果CSRF token在整个会话期间保持不变,攻击者可以重复使用同一个token进行攻击。这意味着只要攻击者获取了一次token,就可以在会话期间多次使用该token发起请求。

       会话劫持:在用户会话被劫持的情况下,攻击者可以利用已知的token执行攻击。如果攻击者能够劫持用户的会话(例如,通过会话固定攻击),那么攻击者就可以利用劫持的会话中的CSRF token进行恶意操作。

4.3 Token验证不严格

       仅验证存在性:服务器仅检查请求中是否包含token,而不验证其有效性或唯一性。这意味着只要请求中包含一个token,即使这个token无效或已被使用过,服务器也会接受请求。

       不验证来源:服务器不验证请求的来源,如Referer或Origin头。这意味着攻击者可以从任何来源发起请求,只要请求中包含有效的CSRF token,服务器就会接受请求。

 4.4 Token生成算法可预测

       弱随机性:使用随机数生成器生成的token容易被预测或猜测。如果生成算法不够随机,攻击者可以通过分析现有的token来猜测新的token。

5.SSRF常用伪协议

      SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种安全漏洞,攻击者可以利用这种漏洞迫使服务器发起不受信任的网络请求,通常是向内部网络中的服务发起请求。这种攻击通常涉及使用特定的伪协议(pseudo-protocols)来欺骗服务器发起请求。

常见的伪协议

file://

       描述: file://协议用于本地文件系统路径。攻击者可能会利用这种协议让服务器读取本地文件,从而泄露敏感信息。

示例: file:///etc/passwd 或 file:///C:\Windows\System32\drivers\etc\hosts

gopher://

       描述: gopher://协议是一个早期的互联网协议,用于访问Gopher服务器。虽然现在很少使用,但在一些旧的系统中仍然可能存在支持。

       示例: gopher://example.com

ftp://

       描述: ftp://协议用于FTP(File Transfer Protocol)服务。攻击者可能会利用这种协议尝试连接到内部FTP服务器。

       示例: ftp://internal-ftp-server

dict://

       描述: dict://协议用于字典服务,提供词汇查询功能。

       示例: dict://example.com

http(s)://

       描述: 虽然这不是伪协议,但攻击者可能会尝试利用服务器发起HTTP或HTTPS请求,特别是指向内部网络的服务。

        示例: http://192.168.0.1

data://

       描述: data://协议用于内联数据。尽管不是真正的网络请求,但可能被用来绕过某些验证机制。

       示例: data:text/html,<html>Hello World!</html>

jar://

        描述: jar://协议用于访问JAR文件内的资源。这种协议主要用于Java环境。

        示例: jar:file:///path/to/file.jar!/path/in/jar

jar:file://

       描述: 这种组合用于访问本地文件系统的JAR文件。

       示例: jar:file:///path/to/file.jar!/path/in/jar

jar:http(s)://

       描述: 同样,这种组合用于访问远程服务器上的JAR文件。

       示例: jar:http://example.com/path/to/file.jar!/path/in/jar

6.SSRF pikachu靶场通关

6.1 SSRF(curl)

出现了一个url地址

http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php

通过网址访问链接

修改url为:url= http://www.baidu.com,查看网页的内容:

利用file协议查看本地文件

修改url为:url=file:///D:/test.txt,查看文件的内容:

6.2 SSRF(file_get_content)

点击出现URL地址

http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info2.php

修改为:file=D:/test.txt,查看文件的内容:

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

对ssrf_curl.php分析

这段代码存在明显的SSRF风险,因为它直接使用前端传入的URL发起请求,并且没有对URL进行任何验证或过滤。攻击者可以通过构造恶意URL来访问内部网络资源或执行其他恶意操作。为了避免这些风险,应该对传入的URL进行严格的验证和过滤,并限制cURL请求的范围和类型。

对ssrf_fgc.php分析

在file协议中没有过滤恶意文件路径或url,导致攻击者可以通过file协议进行内网请求或本地文件请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值