网安实训Day6*_*

一、总结CSRF和XSS区别

(一)攻击原理

1.CSRF:CSRF利用网站对用户身份的信任,通过伪造用户请求来冒充用户在站内的正常操作。攻击者会诱导用户访问一个恶意网站或点击恶意链接,该网站或链接会携带伪造的请求,这些请求看起来像是来自用户自己的合法请求,从而绕过网站的安全措施。CSRF攻击主要依赖于网站的持久化授权方法,如cookie或HTTP授权,来冒充用户的身份。

2.XSS:XSS则是通过向目标网站注入恶意脚本(通常是JavaScript),当用户浏览该网站时,恶意脚本会在用户的浏览器上执行,从而达到攻击用户或网站的目的。XSS攻击主要利用了网站对用户输入的处理不当,允许攻击者将恶意脚本注入到网站的页面中。

(二)攻击目标

1.CSRF:CSRF的目标主要是网站本身和网站的用户数据。攻击者通过伪造用户的请求,可以执行用户本不应该执行的操作,如转账、发送敏感信息等,从而危害网站的安全和用户的利益。

2.XSS:XSS的攻击目标则更加广泛,它不仅可以攻击网站的用户,还可以攻击网站本身。攻击者可以通过XSS攻击获取用户的敏感信息(如cookie、会话令牌等),进而控制用户的账户或进行其他恶意操作。同时,XSS攻击还可以用于篡改网站的内容、传播恶意软件等。

(三)攻击手段

1.CSRF:CSRF的攻击手段主要是伪造请求。攻击者会构造一个看似合法的请求,然后通过诱导用户点击恶意链接或访问恶意网站来触发这个请求。由于这个请求看起来像是来自用户自己的合法请求,因此网站很难识别并阻止它。

2.XSS:XSS的攻击手段主要是注入恶意脚本。攻击者会将恶意脚本注入到网站的页面中,当用户浏览该页面时,恶意脚本会在用户的浏览器上执行。这些恶意脚本可以执行各种操作,如窃取用户的敏感信息、篡改页面内容等。

(四)防御策略

1.CSRF:为了防御CSRF攻击,网站可以采取以下措施:

(1)使用CSRF令牌:在用户的请求中加入一个随机的CSRF令牌,并在服务器端验证这个令牌。如果令牌不匹配,则拒绝请求。

(2)验证HTTP请求的来源:通过检查请求的Referer头部或其他方式来确定请求的来源是否合法。

(3)使用安全的HTTP方法:只允许使用GET和POST等安全的HTTP方法提交请求,避免使用PUT、DELETE等可能引发CSRF攻击的方法。

2.XSS:为了防御XSS攻击,网站可以采取以下措施:

(1)对用户输入进行严格的过滤和转义:避免将用户的输入直接插入到HTML页面中,而是应该对用户输入进行过滤和转义处理,以防止恶意脚本的注入。

(2)使用内容安全策略(CSP):通过CSP可以限制哪些外部资源可以被加载到页面上,从而减少XSS攻击的风险。

(3)定期更新和修补网站的安全漏洞:及时修复已知的XSS漏洞和其他安全漏洞,以减少被攻击的风险

二、总结CSRF攻击步骤

(一)用户登录受信任网站

用户行为:用户C使用浏览器打开并登录受信任的网站A,输入用户名和密码进行身份验证。

结果:网站A验证用户信息后,生成Cookie信息并返回给浏览器,此时用户成功登录并可以正常访问网站A。

(二)浏览器保存Cookie

浏览器行为:浏览器自动保存网站A的Cookie,用于后续的请求验证。

重要性:Cookie中包含了用户的会话信息,用于验证用户的身份和权限。

(三)用户访问恶意网站

用户行为:在用户未退出网站A的情况下,在同一浏览器中打开一个新的标签页或窗口,访问攻击者构建的恶意网站B。

恶意网站:网站B通常包含攻击性代码,用于诱导用户执行某些操作或向网站A发送请求。

(四)恶意网站发送请求

恶意代码:网站B中的恶意代码(如隐藏的表单、iframe等)在用户不知情的情况下,向网站A发送请求。

请求内容:这些请求可能包含敏感操作,如转账、发送邮件、修改账户信息等。

(五)浏览器携带Cookie发送请求

浏览器行为:由于浏览器之前已经登录了网站A并保存了Cookie,因此在发送请求到网站A时,会自动携带这些Cookie。

结果:网站A收到请求后,会根据Cookie中的信息认为该请求是用户C发起的,并执行相应的操作。

(六)恶意请求被执行

网站A响应:网站A不知道请求其实是由恶意网站B发起的,因此会根据用户C的权限处理该请求。

结果:恶意请求被执行,导致用户C的个人信息泄露、财产损失等严重后果。

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

(一)分析目标网站的POST请求

首先,需要对目标网站进行分析,了解哪些操作是通过POST请求进行的,并捕获这些请求的详细信息。这通常需要使用到浏览器开发者工具(如Chrome的DevTools)或网络抓包工具(如Burp Suite)来捕获和分析HTTP请求。

(二)构造HTML表单

根据分析得到的目标网站的POST请求信息,构造一个HTML表单。表单的action属性应设置为目标网站的URL,method属性应设置为POST。表单内部应包含与目标POST请求相匹配的输入字段(如input标签),并预设好攻击者希望提交的数据。

(三)隐藏表单元素

为了增加欺骗性,可以将表单中的输入字段(如用户名、密码等)设置为hidden类型,这样用户就看不到这些字段,但表单提交时仍会包含这些数据。

(四)诱骗用户点击

将构造好的HTML页面发布到恶意网站上,或通过电子邮件、社交媒体等方式发送给目标用户。诱骗用户点击表单中的提交按钮,用户一旦点击,就会在不知情的情况下向目标网站发送包含恶意数据的POST请求。

(五)监控攻击效果

攻击者可以通过查看目标网站的响应或用户账户的变化来监控攻击效果。如果攻击成功,目标网站可能会执行攻击者预设的操作,如转账、更改用户信息等。

四、说明token类CSRF利用方法

Token类CSRF(跨站请求伪造)防御机制是通过生成并验证一个随机的、一次性的Token来防止CSRF攻击。这种方法的核心在于,每个用户的每个请求都会附带一个唯一的Token,服务器在接收到请求时会验证这个Token的有效性,从而确保请求是由合法用户发出的

1.首先在bp里extensions-appstore下载CSRF Token Tracker,并进行配置

2.pikachu-csrf token进行登录,修改个人信息,用bp抓包

3.send to repeater

五、SSRF常用伪协议

(一)file://

用途:用于从服务器文件系统中读取文件内容。攻击者可以通过构造包含file伪协议的URL来读取服务器上敏感的文件,如/etc/passwd、/etc/hosts等。

示例:file:///etc/passwd可以读取服务器上的密码文件。

(二)http:// 和 https://

用途:虽然HTTP和HTTPS协议本身不是伪协议,但在SSRF攻击中,它们常被用来向目标服务器发送HTTP请求。攻击者可以利用这些协议来探测内网中哪些服务是可达的,或者通过请求重定向等方式来绕过一些安全限制。

注意:由于HTTP协议通常只支持GET和POST等有限的方法,因此攻击者可能需要结合其他技术(如URL编码、POST数据构造等)来构造复杂的请求。

(三)dict://

用途:字典服务协议,用于从远程服务器上查询词典或字典内容。在SSRF攻击中,攻击者可以利用该协议来扫描目标服务器的开放端口,或者获取内网的其他信息。

示例:dict://<IP>:<端口>/info可以用来检查目标端口是否开放。

(四)ftp://

用途:FTP(文件传输协议)协议,虽然主要用于文件传输,但在SSRF攻击中,攻击者可以利用该协议来进行网络端口扫描。不过,FTP扫描的效率相对较低,且可能受到防火墙等安全设备的限制。

(五)gopher://

用途:Gopher协议是一种早期的互联网文档检索协议,虽然现在已经不常用,但在SSRF攻击中仍具有一定的利用价值。Gopher协议可以用来构造复杂的HTTP请求,包括GET和POST等方法,从而绕过一些简单的安全限制。

注意:Gopher协议在发送请求时会吃掉第一个字符,因此需要在URL的开头添加一个无用的字符(如下划线)。此外,由于Gopher协议本身并不支持HTTPS等加密方式,因此在传输敏感信息时需要格外小心。

(六)ldap://

用途:轻量级目录访问协议(LDAP),用于访问和维护分布式目录信息。在SSRF攻击中,攻击者可以利用该协议来查询内网中的目录服务信息,或者尝试进行未授权的身份验证等攻击。

(七)tftp://

用途:简单文件传输协议(TFTP),用于在网络上的机器之间传输文件。虽然TFTP协议主要用于文件传输,但在SSRF攻击中,攻击者也可以尝试利用该协议来扫描目标服务器的开放端口或进行其他形式的攻击。

六、SSRF pikachu靶场通关

(一)SSRF(curl)

1.点击题目,发现是通过url参数进行传递请求的

2.于是我们就可以改变参数让其访问我们服务器上的木马文件(此处用本地进行演示)

(二)SSRF(file_get_content)

1.与第一关类似,将url变成了file,而file_get_content()的用法是把整个文件读入一个字符串中
语法:file_get_contents(path,include_path,context,start,max_length)

2.修改file读取本地文件file=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/virus.php

七、pikachu靶场SSRF漏洞成因

(一)SSRF(curl)

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

curl是PHP等编程语言中常用的一个库,用于发送HTTP请求并接收响应。当服务端使用curl函数来处理用户提交的URL时,如果不对URL进行严格的过滤和验证,或者在使用curl时没有设置合适的选项来限制请求的行为(如设置超时时间、限制请求的大小等),就可能被攻击者利用来发起SSRF攻击

(二)SSRF(file_get_content)

源代码

file_get_contents()是PHP中一个常用的文件操作函数,用于将文件的内容读入一个字符串。当该函数用于处理用户提交的URL时,如果不对URL进行严格的过滤和验证,攻击者就可以通过构造恶意的URL来读取服务器上的敏感文件或执行其他恶意操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值