9.2任务
- 总结CSRF和XSS区别
- 总结CSRF攻击步骤
- 总结CSRF手工构造POST型页面方法
- 说明token类CSRF利用方法
- SSRF常用伪协议
- SSRF pikachu靶场通关
- SSRF靶场通关时根据源代码说明漏洞成因(加分项)
网安实习日志6
一、CSRF和XSS区别
CSRF和XSS都是客户端攻击,它们滥用同源策略,利用web应用程序和不知情的用户之间的信任关系。
但是,XSS 和 CSRF 攻击之间存在一些根本差异,XSS攻击遵循双向攻击模式,允许攻击者执行恶意脚本、访问响应,并将后续敏感数据发送到攻击者选择的目的地。
另一方面,CSRF是一种单向攻击机制,这意味着攻击者只能发起HTTP请求,但不能检索已发起请求的响应。
CSRF攻击要求经过身份验证的用户处于活动会话中,而XSS攻击则不需要。 在XSS攻击中,只要用户登录,就可以存储和交付有效载荷。
二、CSRF攻击步骤
1、CSRF攻击原理
其本质原因是重要操作的所有参数都是可以被攻击者猜测到的。
攻击者只有预测出URL的所有参数与参数值,才能成功地构造一个伪造的请求;反之,攻击者将无法攻击成功。
2、CSRF攻击步骤
从网络上的资料显示,要完成一次CSRF攻击,受害者必须完成两个步骤:
- 登录受信任站点A,并在本地生成Cookie。
- 在不登出A的情况下,访问危急站点B。
1—>客户端通过账户密码登录访问网站A。
2—>网站A验证客户端的账号密码,成功则生成一个sessionlD,并返回给客户端存储在浏览器中。
3—>该客户端Tab—个新页面访问了网站B。
4—>网站B自动触发要求该客户端访问网站A。(即在网站B中有链接指向网站A)
5—>客户端通过网站B中的链接访问网站A。(此时携带有合法的SessionID进行访问站A的)
6—>此时网站A只需检验sessionIlD是否合法,合法则执行相应的操作。(因此具体啥工具就得看链接,以及网站B要求访问时携带的数据)
三、CSRF手工构造POST型页面方法
- 分析目标网站的POST请求
- 构造HTML表单
- 隐藏表单元素
- 诱骗用户点击
- 监控攻击效果
四、token类CSRF利用方法
1、何为token
Token的本质就是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。token最大特点是随机性、不可预测性。
2、token的组成
Uid(用户唯一的身份标识)+Time(当前时间的时间戳)+Sign(签名,Token的前几位以哈希算法压缩成的一定长度的十六进制加密字符串)
3、token类CSRF的防御机制
Token类CSRF(跨站请求伪造)防御机制是通过生成并验证一个随机的、一次性的Token来防止CSRF攻击。
这种方法的核心在于,每个用户的每个请求都会附带一个唯一的Token,服务器在接收到请求时会验证这个Token的有效性,从而确保请求是由合法用户发出的。
4、token类CSRF利用方法
- Token 并不是用来被攻击者利用的,而是用来防止CSRF(跨站请求伪造)攻击的一种机制。Token 机制通过要求每个敏感请求都携带一个由服务器生成的、不可预测的、与用户会话相关联的令牌,来确保请求是由合法用户发出的。
- 然而,如果开发者在实现 Token 机制时存在漏洞,那么攻击者可能会找到绕过这些安全措施的方法。但这种情况并不属于“token类CSRF利用方法”,而是Token机制被不正确地实现或配置所导致的安全问题。
以下是一些可能导致Token机制失效的常见情况,以及攻击者可能尝试利用这些方法:
- Token泄露:
- 如果Token被存储在前端JavaScript代码中,并且以明文形式暴露给攻击者(例如,通过源代码审查或网络抓包),那么攻击者可能会直接获取并使用这些Token。
- 如果网站存在XSS(跨站脚本)漏洞,攻击者可以利用这些漏洞注入恶意脚本,从而窃取用户的Token。
- Token预测:
- 如果Token的生成算法不够随机或可预测(例如,使用了简单的递增序列或可预测的哈希函数),攻击者可能会尝试预测未来的Token值。
- Token验证不足:
- 如果服务器端的Token验证逻辑存在缺陷(例如,不检查Token的时效性,或允许使用旧的Token),攻击者可能会尝试利用这些漏洞。
- 如果Token在传输过程中没有被正确地保护(例如,没有使用HTTPS),攻击者可能会通过中间人攻击截获和篡改Token。
- 跨域请求问题:
- 如果网站允许来自不受信任的域的跨域请求,并且这些请求中包含了Token,那么攻击者可能会尝试从其他域发起CSRF攻击。
五、SSRF常用伪协议
类型有如下:
file:///
dict://
sftp://
ldap://
tftp://
gopher://
file://
这种URL Schema可以尝试从文件系统中获取文件
dict://
这种URL Scheme能够引用允许通过DICT协议使用的定义或单词列表
sftp://
在这里,Sftp代表SSH文件传输协议(SSH File Transfer Protocol),或安全文件传输协议(Secure File Transfer Protocol),这是一种与SSH打包在一起的单独协议,它运行在安全连接上,并以类似的方式进行工作。
ldap://
LDAP代表轻量级目录访问协议。它是IP网络上的一种用于管理和访问分布式目录信息服务的应用程序协议。
tftp://
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种简单的基于lockstep机制的文件传输协议,它允许客户端从远程主机获取文件或将文件上传至远程主机。
gopher://
Gopher是一种分布式文档传递服务。利用该服务,用户可以无缝地浏览、搜索和检索驻留在不同位置的信息。
六、SSRF pikachu靶场通关
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
可以使用file协议查看本地文件C:\Windows\System32\drivers\etc\hosts的内容,成功
同样也可以利用别的协议来实现不同的利用
SSRF(file_get_content)
和上一个一样,利用file协议读取一下本地文件
七、SSRF靶场通关时根据源代码说明漏洞成因
我们可以直接用记事本打开,传递参数隶属于的文件
curl
分析对应代码,发现其没有对url参数修改做任何过滤。
file_get_content
和上一个原因一样,没有做参数过滤。