网络空间安全毕业实习日志day6

目录

1.总结CSRF和XSS区别

2.总结CSRF攻击步骤

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

4.说明token类CSRF利用方法 

5.SSRF常用伪协议

6.SSRF pikachu靶场通关

SSRF(curl)

SSRF(file_get_content)

 7.SSRF靶场通关时根据源代码说明漏洞成因(加分项)


1.总结CSRF和XSS区别

CSRF(跨站请求伪造)和XSS(跨站脚本攻击)是两种常见的网络攻击方式,它们在原理、攻击目标、攻击方式以及防护手段上都有着显著的区别。以下是对这两种攻击方式的详细总结:

原理不同

* CSRF:CSRF利用的是网站对用户浏览器的信任。在用户已经登录某个网站并生成了相应的cookie之后,攻击者通过构造一个看似合法的请求(通常是通过图片标签、表单提交等方式),诱导用户在当前已登录的网站中执行这个请求。由于浏览器会自动携带该网站的cookie,因此服务器会误认为这是用户的正常请求,并执行相应的操作。
* XSS:XSS则是通过向目标网站注入恶意的JavaScript代码(或其他脚本语言),当用户浏览该网站时,这些脚本代码会在用户的浏览器中执行,从而达到攻击的目的。这些脚本可以执行包括窃取用户cookie、会话令牌等在内的敏感信息,或者在用户浏览器中执行恶意操作。

攻击目标不同

* CSRF:CSRF的攻击目标是用户本身,它利用用户在已登录网站中的身份(通过cookie等方式标识),去执行一些用户本不愿意执行的操作,如转账、发表恶意评论等。
* XSS:XSS的攻击目标则主要是服务器和用户。通过执行注入的恶意脚本,攻击者可以窃取用户信息(如cookie、会话令牌等),进而控制用户的账户;同时,这些脚本也可以对服务器进行攻击,如执行拒绝服务攻击(DDoS)等。

攻击方式不同

* CSRF:CSRF攻击通常不需要用户直接参与,攻击者只需要构造一个看似合法的请求,并诱导用户在当前已登录的网站中执行这个请求即可。这个请求可以是通过图片标签、表单提交等方式发起的。
* XSS:XSS攻击则需要攻击者将恶意脚本注入到目标网站的页面中。这些脚本可以通过多种方式注入,如通过留言板、评论框等用户可控的输入区域注入,或者通过利用网站本身的漏洞进行注入。

防护手段不同

* CSRF:为了防止CSRF攻击,网站可以采取多种措施,如使用CSRF令牌(每次请求时都包含一个唯一的令牌,服务器验证该令牌的正确性后再执行请求)、设置合理的cookie属性(如设置HttpOnly属性以防止JavaScript读取cookie)、验证请求的来源等。
* XSS:为了防止XSS攻击,网站需要对用户输入进行严格的过滤和转义,确保输入的内容不会被当作HTML或JavaScript代码执行。同时,网站也可以采用内容安全策略(CSP)等机制来限制浏览器执行来自不受信任源的脚本。

2.总结CSRF攻击步骤

CSRF(Cross-Site Request Forgery,跨站请求伪造)攻击是一种通过诱骗用户在已认证的网站上执行非预期请求的攻击方式。其攻击步骤可以总结如下:

CSRF攻击步骤

  1. 用户登录受信任网站
    • 用户C打开浏览器,访问受信任的网站A(如银行网站、社交媒体等),并输入用户名和密码请求登录。
    • 网站A验证用户信息后,生成Cookie信息并返回给浏览器。此时,用户C成功登录网站A,可以正常发送请求到网站A。
  2. 用户浏览其他网站
    • 在用户C未退出网站A之前,在同一浏览器中,用户C打开一个新的TAB页访问网站B(攻击者构建的恶意网站)。
  3. 恶意网站返回攻击性代码
    • 网站B接收到用户C的请求后,返回一些攻击性代码(如JavaScript脚本)。这些代码可能隐藏在一个iframe或其他HTML元素中,对用户不可见。
    • 网站B同时发出一个请求,要求浏览器在不知情的情况下携带用户C在网站A的Cookie信息,向网站A发出请求。
  4. 浏览器执行恶意请求
    • 浏览器在接收到网站B的攻击性代码后,自动执行这些代码,并根据网站B的请求,携带用户C在网站A的Cookie信息,向网站A发出请求。
    • 网站A接收到请求后,由于携带了有效的Cookie信息,会认为这是用户C发起的合法请求,并根据这些请求执行相应的操作(如转账、发送消息等)。
  5. 恶意操作执行
    • 网站A根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行,从而完成攻击者预设的恶意操作。


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

CSRF(跨站请求伪造)手工构造POST型页面方法主要涉及到创建一个看似无害的页面,但实际上包含了一个表单(form),该表单的数据会发送到受攻击的服务器,并触发一些用户未授权的操作。以下是一个简要的步骤总结:

确定攻击目标和参数

* 分析目标网站:首先,需要了解目标网站的功能和接口,特别是哪些操作是通过POST请求执行的,并识别出这些请求中哪些参数是关键或敏感的。
* 捕获POST请求:使用工具如Burp Suite、Fiddler等网络抓包工具来捕获目标网站正常的POST请求。分析这些请求中的URL、参数(包括名称和值)以及任何必要的HTTP头部信息。

构造表单

* 创建HTML页面:编写一个HTML页面,其中包含一个表单(`<form>`标签)。表单的`action`属性应设置为捕获到的POST请求的URL。
* 设置表单方法:将表单的`method`属性设置为`POST`,以匹配目标请求的HTTP方法。
* 添加输入字段:根据捕获到的POST请求中的参数,在表单中添加相应的输入字段(`<input>`标签)。每个字段的`name`属性应与请求中的参数名相匹配,`value`属性可以设置为攻击者希望提交的值。

隐藏表单和提交按钮

* 隐藏表单:为了使受害者不易察觉,可以将表单设置为不可见(例如,使用CSS的`display: none;`样式)。
* 自动提交:为了避免需要受害者点击提交按钮,可以在页面加载时通过JavaScript自动提交表单。这可以通过在`<script>`标签中添加相应的JavaScript代码来实现,例如使用`document.forms[0].submit();`来提交页面中的第一个表单。

诱骗受害者访问

* 创建诱饵:为了诱使受害者访问这个包含CSRF表单的页面,攻击者可能会利用社会工程学手段,如发送一个看似无害的链接或邮件,声称是受害者感兴趣的内容或活动。
* 确保受害者已登录:CSRF攻击的成功还取决于受害者在访问该页面时是否已登录到目标网站。因此,攻击者通常会选择受害者可能已经登录的时机或场景来发动攻击。

监控和验证

* 监控请求:使用网络抓包工具监控受害者发出的请求,以确认CSRF表单已成功提交并触发了目标操作。
* 验证效果:检查目标网站上的数据或状态是否已按照攻击者的意图被修改或触发。

需要注意的是,由于CSRF攻击利用了网站对用户浏览器的信任,因此很难完全防止此类攻击。然而,通过实施一些防御措施,如使用CSRF令牌、验证HTTP头部中的Referer字段、设置Cookie的HttpOnly属性等,可以显著降低CSRF攻击的成功率。同时,用户也应保持警惕,不轻易点击来源不明的链接或访问可疑的网站。

4.说明token类CSRF利用方法 

Token类CSRF利用方法实际上是指通过某种手段绕过或利用网站中的Token机制来执行跨站请求伪造(CSRF)攻击。然而,在正常的安全实践中,Token是用来防御CSRF攻击的一种有效手段,而不是被利用的对象。但了解Token可能被绕过的方式对于加强安全防护至关重要。以下是一些关于Token类CSRF防御机制可能被利用的方法以及加强防护的建议:

Token类CSRF防御机制简述

在Token类CSRF防御机制中,服务器会在用户登录后生成一个随机的Token,并将这个Token存储在用户的会话(Session)或Cookie中(尽管出于安全考虑,Token通常不会存储在Cookie中,而是存储在Session中,并通过Cookie中的Session ID来访问Session)。每次用户发起请求时,都需要在请求中包含这个Token,服务器会验证这个Token的有效性。如果Token不匹配或缺失,服务器将拒绝该请求,从而防止CSRF攻击。

token类CSRF利用方法

尽管Token机制本身是一种有效的防御手段,但在某些情况下,它仍然可能被绕过:

  1. Token泄露
    • 如果Token以某种方式被泄露(例如,通过XSS攻击窃取、Web缓存欺骗、clickjacking等),攻击者就可以使用这个Token来构造CSRF请求。
    • 防护措施:确保Token在传输和存储过程中的安全性,使用HTTPS等加密协议来保护传输过程,避免将Token存储在易受攻击的位置(如Cookie)。
  2. Token预测
    • 如果Token的生成算法不够随机或存在可预测性,攻击者可能能够预测出有效的Token。
    • 防护措施:使用强随机数生成器来生成Token,确保Token的不可预测性。
  3. Token验证逻辑漏洞
    • 如果服务器端的Token验证逻辑存在漏洞(例如,未正确验证Token的来源、未检查Token的时效性等),攻击者可能能够绕过验证。
    • 防护措施:严格检查Token的来源和时效性,确保只有来自合法用户的请求才能通过验证。

5.SSRF常用伪协议

SSRF(Server-Side Request Forgery,服务端请求伪造)是一种利用服务器发起网络请求的能力来攻击内网资源或执行其他恶意活动的技术。在SSRF攻击中,攻击者可以通过构造恶意的URL,利用服务器存在的漏洞,使服务器向不可信的第三方地址发送请求,从而访问到内部网络资源或执行未授权的操作。在SSRF攻击中,常用的伪协议包括以下几种:

  1. file://
    • 用途:从文件系统中获取文件内容。
    • 格式file://[文件路径]
    • 示例file:///etc/passwd用于读取/etc/passwd文件,该文件包含了系统用户的信息;file:///proc/net/arp用于显示ARP缓存表,从而寻找内网中的其他主机。
    • 应用:主要用于文件读取和发现内网存活主机。
  2. http:// 和 https://
    • 用途:向目标服务器发送HTTP或HTTPS请求。
    • 特点:由于HTTP GET请求的参数直接附加在URL中,因此可以用于探测内网中那些通过GET请求即可访问的应用。
    • 应用:常用于内网资源探测和目录扫描。
  3. dict://
    • 用途:字典服务协议,用于从远程服务器上查询词典或字典内容。
    • 特点:在互联网上存在公共的dict服务器,允许用户通过dict协议查询广泛的词典资源。此外,dict协议也可以用于扫描端口和获取内网信息。
    • 示例dict://ip:6739/info,其中ip是目标服务器的IP地址,6739是dict服务的默认端口。
    • 应用:主要用于端口扫描和获取内网信息。
  4. gopher://
    • 用途:分布式文档传递服务,与HTTP类似但更加简单和结构化。
    • 特点:gopher协议可以用来构造GET和POST请求,甚至可以用来攻击那些需要交互的应用(如Redis)。需要注意的是,gopher协议会吃掉URL中的第一个字符,因此在使用时需要在URL的首位添加一个无用的字符(如下划线_)。
    • 应用:广泛用于构造任意格式的请求,以攻击内网中的应用。
  5. ftp:// 和 sftp://
    • 用途:FTP(文件传输协议)和SFTP(安全文件传输协议)用于文件的上传和下载。
    • 特点:虽然ftp和sftp协议主要用于文件传输,但在SSRF攻击中,它们也可以被用来进行网络端口扫描(尽管效率相对较低)。
    • 应用:主要用于网络端口扫描和文件传输相关的攻击。
  6. ldap://
    • 用途:轻量级目录访问协议,用于访问和维护分布式目录信息服务。
    • 特点:LDAP协议允许查询和操作目录信息,因此在SSRF攻击中,它可以被用来获取目标系统的目录信息。
    • 应用:主要用于目录信息的查询和攻击。
  7. tftp://
    • 用途:简单文件传输协议,用于在网络上的计算机之间传输文件。
    • 特点:TFTP是一种非常简单的文件传输协议,主要用于小型文件的传输。在SSRF攻击中,它的使用相对较少,但也可以被用来进行文件传输相关的攻击。
    • 应用:主要用于小型文件的传输和攻击。

综上所述,SSRF攻击中常用的伪协议包括file://、http://、https://、dict://、gopher://、ftp://、sftp://、ldap://和tftp://等。这些伪协议各有特点和应用场景,在SSRF攻击中发挥着重要的作用。为了防范SSRF攻击,开发者和系统管理员应采取相应的防御措施,如验证和限制URL、禁用危险功能、使用防火墙和WAF等。


6.SSRF pikachu靶场通关

SSRF(Server-Side Request Forgery:服务器端请求伪造)

其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据。数据流:攻击者----->服务器---->目标地址。根据后台使用的函数的不同,对应的影响和利用方法又有不一样。

什么是php cURL
PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。PHP中使用cURL实现Get和Post请求的方法,这些函数在PHP 4.0.2中被引入。简单来说就是支持 http、https、ftp、gopher、telnet、dict、file和ldap协议向服务端的操作。

SSRF漏洞利用手段:
(1)可以对外网、内网、本地进行端口扫描,某些情况下端口的Banner会回显出来(比如3306的);
(2)攻击运行在内网或本地的有漏洞程序(比如溢出);
(3)可以对内网Web应用进行指纹识别,原理是通过请求默认的文件得到特定的指纹;
(4)攻击内网或外网有漏洞的Web应用;
(5)使用file:///协议读取本地文件(或其他协议)

SSRF漏洞绕过方法:
(1)@          http://abc.com@127.0.0.1
(2)添加端口号      http://127.0.0.1:8080
(3)短地址        https://0x9.me/cuGfD
(4)可以指向任意ip的域名  xip.io
(5)ip地址转换成进制来访问 192.168.0.1=3232235521(十进制)
(6)非HTTP协议
(7)DNS Rebinding

SSRF(curl)

我们先看下curl的用法:PHP 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

1、通过网址访问链接
比如说修改url为:url=http://www.baidu.com,访问百度页面:
2、利用file协议查看本地文件
修改url为:url=file:///d:/test.txt,查看文件的内容:
3、dict协议扫描内网主机开放端口
使用dict协议可以获取内网主机开放端口相应服务的指纹信息,比如说内网主机开了http端口的话,可以修改url为:url=dict://192.168.198.1:21:

代码:


SSRF(file_get_content)


跟上关类似,url变成了file

我们先看下file_get_content()的用法:PHP file_get_contents() 函数 | 菜鸟教程

file_get_contents() 把整个文件读入一个字符串中。
语法:file_get_contents(path,include_path,context,start,max_length)
1、file读取本地文件
修改file为:file=file:///D:/test.txt,查看文件的内容:

2、http协议请求内网资源
修改file为:file=http://127.0.0.1/pikachu/vul/sqli/1.php,查看文件的内容:

 
7.SSRF靶场通关时根据源代码说明漏洞成因(加分项)

SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如,黑客操作服务端从指定URL地址获取网页文本内容、加载指定地址的图片、视频、文件下载等操作。利用的是服务端的请求伪造。ssrf是利用存在缺陷的web应用作为代理攻击远程和本地的服务器,简单来说就是黑客让服务端攻击其内网服务器。如下图所示。

  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值