任务
- 总结CSRF和XSS区别
- 总结CSRF攻击步骤
- 总结CSRF手工构造POST型页面方法
- 说明token类CSRF利用方法
- SSRF常用伪协议
- SSRF pikachu靶场通关
- SSRF靶场通关时根据源代码说明漏洞成因(加分项)
一、总结CSRF和XSS区别
CSRF
CSRF是一种网络攻击方式,它允许攻击者诱使用户在当前已登录的Web应用程序上执行非本意的操作。这种攻击利用了Web应用程序对用户身份验证的信任,以及Web浏览器自动发送某些类型请求的默认行为。
XSS
XSS是一种代码注入攻击,攻击者将恶意脚本注入到用户浏览的网页中。当这些网页在用户的浏览器中渲染时,恶意脚本也会被执行,从而允许攻击者执行各种恶意操作,如窃取用户的Cookie、会话令牌或其他敏感信息,或者在用户浏览器中执行恶意操作。
CSRF和XSS区别
1. 攻击原理不同
- CSRF:CSRF攻击利用的是用户已经登录的Web应用程序的信任关系,通过诱导用户在不知情的情况下,发送伪造的请求到受信任的网站。这种攻击的关键在于更改用户的状态或执行敏感操作,而不是直接窃取数据。攻击者通常通过电子邮件、聊天消息或恶意网站中的链接来诱骗用户执行这些操作。
- XSS:XSS攻击则是通过向Web页面注入恶意脚本(通常是JavaScript),当其他用户浏览这些页面时,恶意脚本会在用户的浏览器上执行,从而达到攻击目的。这种攻击方式可以窃取用户的敏感信息(如Cookie、会话令牌等),或进行其他恶意操作,如篡改页面内容、发送垃圾邮件等。
2. 攻击类型不同
- CSRF:主要关注于更改用户状态或执行敏感操作,如转账、修改密码等。它不涉及数据的直接窃取,而是通过伪造请求来达成攻击者的目的。
- XSS:则更侧重于数据的窃取和恶意脚本的执行。根据攻击方式的不同,XSS可以分为反射型、存储型和DOM型三种。其中,反射型XSS通过URL传递恶意脚本,存储型XSS则将恶意脚本存储在服务器上,DOM型XSS则通过修改页面的DOM结构来执行恶意脚本。
3. 防御措施不同
- CSRF的防御措施主要包括使用CSRF Token、验证HTTP Referer、使用自定义HTTP头、设置SameSite Cookie属性等。这些措施旨在确保请求的来源是合法的,从而防止CSRF攻击的发生。
- XSS的防御措施则侧重于对用户输入的内容进行严格的过滤和转义,以防止恶意脚本的注入。此外,还可以采用内容安全策略(CSP)来限制外部资源的加载和执行,从而进一步降低XSS攻击的风险。
二、总结CSRF攻击步骤
1. 用户登录受信任网站
- 步骤描述:用户C使用浏览器打开并登录一个受信任的网站A,如银行网站或社交媒体平台,输入用户名和密码进行身份验证。
- 关键点:用户成功登录后,网站A会在用户的浏览器中生成并存储认证信息,如Cookies或Session。
2. 用户访问恶意网站
- 步骤描述:在用户未退出网站A的情况下,使用同一浏览器访问另一个网站B,这个网站B是攻击者构建的恶意网站。
- 关键点:用户可能在不知情的情况下被诱导访问该恶意网站,例如通过点击电子邮件中的链接、社交媒体上的广告或受到其他形式的欺骗。
3. 恶意网站发送伪造请求
- 步骤描述:恶意网站B在用户不知情的情况下,通过嵌入的脚本或链接向网站A发送一个伪造的HTTP请求。
- 关键点:这个请求会包含用户在网站A上的认证信息(由于浏览器自动携带了Cookies或Session),使得网站A误认为这是用户自己的合法请求。
- 技术细节:攻击者可能会利用JavaScript、HTML表单或iframe等技术手段来构造这个伪造请求。
4. 网站A处理伪造请求
- 步骤描述:网站A接收到伪造请求后,由于请求中包含了有效的认证信息,因此会按照请求的内容执行相应的操作。
- 关键点:这些操作可能是用户未曾授权或完全不知情的,如转账、更改密码、发布信息等。
- 潜在后果:这可能导致用户的个人信息泄露、财产损失或其他不良后果。
5. 攻击者达成目的
- 步骤描述:通过成功执行伪造请求,攻击者可以达到其攻击目的,如窃取用户数据、破坏网站功能或进行其他恶意活动。
- 关键点:由于整个攻击过程在用户不知情的情况下进行,因此很难被及时发现和阻止。
三、总结CSRF手工构造POST型页面方法
1.明确攻击目标
- 确定目标网站:首先明确要攻击的目标网站,即存在CSRF漏洞的网站。
- 分析敏感操作:了解该网站上哪些操作是敏感的,如转账、密码修改等,这些操作通常需要POST请求来提交。
2.捕获并分析请求
- 使用开发者工具:利用浏览器的开发者工具(如Chrome的DevTools)或抓包工具(如Burp Suite)捕获目标网站的正常POST请求。
- 分析请求参数:仔细分析捕获到的POST请求,确定哪些参数是必需的,哪些参数是可以被攻击者控制的。特别是那些可能改变服务器状态的参数,如转账金额、接收方账号等。
3.构造HTML表单页面
- 创建HTML文件:使用HTML语言创建一个新的页面文件,该文件将包含一个表单(form)。
- 设置表单属性:将表单的method属性设置为POST,以匹配目标网站的请求方式。将action属性设置为目标网站的URL,即存在CSRF漏洞的页面。
- 添加输入字段:根据分析得到的请求参数,在表单中添加相应的输入字段(input)。对于敏感或重要的参数,可以预设这些字段的值,以执行期望的攻击操作。这些输入字段应设置为隐藏类型(type="hidden"),以避免用户看到并修改它们。
4.添加自动提交机制
- 使用JavaScript:在HTML文件中添加JavaScript代码,以在页面加载时自动提交表单。这可以通过监听window.onload事件或设置表单的onsubmit事件为自动触发来实现。
- 确保隐蔽性:为了使攻击更加隐蔽,可以确保表单提交时不会跳转到新的页面或显示任何明显的提示。
5.部署和测试
- 部署恶意页面:将构造好的HTML文件部署到攻击者控制的服务器上。
- 测试攻击效果:通过电子邮件、社交媒体、即时通讯工具等方式向目标用户发送包含恶意表单页面URL的链接。当用户点击链接并访问该页面时,表单将自动提交,执行攻击者预设的操作。
四、说明token类CSRF利用方法
1)Token类CSRF防护机制概述
在Web应用程序中,为了防止CSRF攻击,通常会采用Token机制。这种机制会为每个用户会话生成一个唯一的Token,并将其嵌入到表单或请求中。当服务器接收到请求时,会验证请求中的Token是否与会话中存储的Token相匹配,以此来判断请求是否合法。
2)Token类CSRF利用方法
-
获取CSRF Token
- 社交工程:攻击者可以通过社交工程学手段,如发送钓鱼邮件或恶意链接,诱使用户在受信任的网站上执行某些操作,从而在用户的浏览器中获取CSRF Token。
- XSS攻击:如果目标网站存在XSS漏洞,攻击者可以注入恶意脚本以窃取CSRF Token。这些脚本可以在用户访问受影响的页面时自动执行,并将Token发送到攻击者控制的服务器。
-
构造恶意请求
- 一旦攻击者获得了CSRF Token,他们就可以构造一个包含该Token的恶意请求。这个请求通常会伪装成来自受信任网站的合法请求,但实际上是由攻击者控制的。
- 恶意请求可以是一个隐藏的表单提交,也可以是一个通过JavaScript自动触发的AJAX请求。无论哪种方式,都需要确保请求中包含正确的Token和其他必要的参数。
-
诱使用户执行
- 攻击者通常会通过社交工程学手段诱使用户执行恶意请求。例如,他们可能会发送一个看似无害的链接或附件,当用户点击或打开时,就会触发恶意请求。
- 在某些情况下,攻击者还可以利用网站的其他漏洞(如重定向漏洞)来间接触发恶意请求。
-
执行未授权操作
- 当恶意请求被发送到目标网站时,由于请求中包含了有效的CSRF Token和其他必要的参数,因此服务器会将其视为合法请求并执行相应的操作。
- 这些操作可能是用户未曾授权或完全不知情的,如转账、更改密码、发布信息等。
3)防范措施
为了防止Token类CSRF攻击,Web应用程序可以采取以下措施:
- 加强Token管理:确保Token的生成、存储和验证过程安全可靠,避免Token被窃取或篡改。
- 实施HTTPS:通过HTTPS协议加密传输的数据,防止Token在传输过程中被截获。
- 输入验证:对用户的输入进行严格的验证和过滤,防止恶意脚本的注入。
- 安全配置:合理配置Web服务器的安全设置,如设置Cookie的SameSite属性为Strict或Lax,以防止跨站请求携带Cookie。
五、SSRF常用伪协议
1. file://
- 功能:从文件系统中获取文件内容。
- 格式:
file://[文件路径]
。 - 应用:攻击者可以利用此协议读取服务器上的敏感文件,如
/etc/passwd
(存储用户信息)、/etc/hosts
(显示当前操作系统网卡的IP)、/proc/net/arp
(显示ARP缓存表,寻找内网其他主机)等。
2. dict://
- 功能:字典服务协议,用于从远程服务器上查询词典或字典内容。
- 应用:虽然最初设计用于查询词典资源,但在SSRF攻击中,攻击者可以利用它来扫描内网主机的开放端口、获取内网信息等。例如,通过构造特定的请求,可以扫描哪些主机开启了特定的服务端口。
3. ftp://
- 功能:文件传输协议,用于在网络上进行文件传输。
- 应用:在SSRF攻击中,ftp协议虽然不常用,但可以用于网络端口扫描。然而,由于其效率相对较低且可能受到防火墙等安全设备的限制,因此使用较少。
4. http(s)://
- 功能:超文本传输协议及其安全版本,用于在Web上传输数据。
- 应用:虽然http(s)协议本身不是伪协议,但在SSRF攻击中,攻击者通常会利用服务器对http(s)请求的信任来构造恶意请求。通过向服务器发送包含恶意URL的http(s)请求,攻击者可以间接地访问内网资源或执行其他恶意操作。
5. gopher://
- 功能:分布式文档传递服务协议,类似于早期的HTTP协议,但更加简单和结构化。
- 应用:在SSRF攻击中,gopher协议因其能够构造复杂的请求而备受青睐。攻击者可以利用gopher协议来构造GET和POST请求,甚至可以用来攻击那些需要交互的应用(如Redis)。此外,gopher协议还可以用来绕过某些安全设备的限制,如防火墙等。
六、SSRF pikachu靶场通关
SSRF(curl)
点击链接,弹出小诗,发现url中出现了传递url参数的url
在URL中传入百度的地址(www.baidu.com),可以看到页面显示出了百度的数据库
SSRF(file_get_content)
file_get_contents() 把整个文件读入一个字符串中。
该函数是用于把文件的内容读入到一个字符串中的首选方法。如果服务器操作系统支持,还会使用内存映射技术来增强性能。
打开pikachu靶场,点击标签,可以看到和前面是一样的,都是通过URL上传参数到后台获取信息的。
同样可以通过修改url来访问百度