csrf漏洞与ssrf漏洞

环境:用kali搭建的pikachu靶场

一.CSRF

1.CSRF漏洞简介

跨站请求伪造(CSRF)漏洞是一种Web应用程序安全漏洞,攻击者通过伪装成受信任用户的请求来执行未经授权的操作。这可能导致用户在不知情的情况下执行某些敏感操作,如更改密码、发送消息等。要防止CSRF攻击,可以使用随机生成的令牌来验证每个请求的来源和合法性。

CSRF利用流程:攻击者发现CSRF漏洞-->构造代码-->发送给受害人-->受害人打开-->受害人执行代码-->完成攻击

CSRF利用条件

1.用到了cookie鉴权

2.被攻击方鉴权未过期

3.知道目标网站请求的详细信息

2.CSRF(Cross-Site Request Forgery)与XSS(Cross-Site Scripting)的不同

  1. CSRF攻击利用用户已经登录的身份,在用户不知情的情况下发送恶意请求,执行未经授权的操作。攻击者利用受害者的身份在受害者不知情的情况下执行操作,比如更改密码或发送消息。而XSS攻击则是通过在网页中注入恶意脚本,当用户访问包含这些脚本的页面时,攻击者可以获取用户的信息、劫持会话或者执行其他恶意操作。

  2. CSRF攻击是针对用户身份验证机制的漏洞,攻击者利用受害者已经登录的身份来执行操作;而XSS攻击是利用网站对用户输入的信任,将恶意脚本注入到网页中,从而获取用户信息或执行恶意操作。

3.例子

pikachu靶场
1.点击提示,登录vince用户
2.进入到这个页面
3.通过html伪造修改的请求

<form method="get" action="http://192.168.168.128/pik/vul/csrf/csrfget/csrf_get_edit.php">

<input type="text" name="sex" value="1234"></p>

<input class="phonenum" type="text" name="phonenum" value="123"></p>

<input class="add" type="text" name="add" value="123"></p>

<input class="email" type="text" name="email" value="1231"></p>

<input class="sub" type="submit" name="submit" value="submit">

</form>

4.用浏览器打开html文件
5.点击submit

发现页面跳转并修改用户的个人信息

注:如果点击修改个人信息后出现空白

说明PHP版本较高,需要修改一下文件

进入到/var/www/html/pik/vul/csrf/csrfget/目录,修改csrf_get_edit.php文件

删除第七十行MYSQL_ASSOC(因为PHP这个版本识别不了)

然后刷新就可以出来了

4.预防CSRF漏洞

  1. 同源验证(Same-Site Cookies):使用 SameSite 属性,可以限制浏览器只在请求源站点 (same-site) 发送 Cookie,从而减少 CSRF 的风险

  2. CSRF Token:在每个表单中包含一个随机生成的 token,并且验证这个 token,确保请求是来源于合法的网站而不是恶意网站

  3. 验证 Referer 头:在服务端检查 HTTP 头中的 Referer 字段,确保请求来自合法的来源网站

  4. 双重提交 Cookie:将 CSRF Token 既以 Cookie 形式存储,也作为隐藏字段的形式加入到表单中,以确保提交请求时两者匹配

  5. 自定义请求头:要求所有的请求都携带自定义的请求头,服务端验证该请求头来确认请求的合法性

  6. 限制敏感操作:在网站上进行敏感操作时,要求用户再次输入密码或进行其他形式的二次确认

  7. 保持安全的开发实践:确保网站的代码安全,遵循最佳实践,包括输入验证、输出编码、使用安全的密码哈希算法等

二.SSRF漏洞

1.SSRF漏洞简介

SSRF(Server-Side Request Forgery)漏洞是一种安全漏洞,攻击者可以利用该漏洞向服务器发起伪造的请求。这些请求伪装成服务器本身发起的请求,因此可以绕过一些安全控制,访问本地系统资源、其他服务器资源,甚至内部网络

SSRF漏洞通常出现在允许用户提供URL并在服务端进行请求的场景中,比如Web应用中的URL解析、文件上传功能、图片处理等。攻击者可以利用这些功能,提供指向内部系统或受信任的外部系统的URL,并执行一系列恶意操作。

攻击者可以利用SSRF漏洞实施以下攻击:

  1. 访问内部系统信息:攻击者可以利用SSRF漏洞访问内部服务器的敏感信息,如配置文件、日志等。

  2. 攻击本地系统:攻击者可以利用SSRF漏洞将服务器定向到恶意URL,执行各种攻击,如端口扫描、攻击本地服务等。

  3. 攻击内部系统:通过SSRF漏洞,攻击者可以攻击内部系统,从而导致数据泄露、服务拒绝或其他安全风险。

为了防止SSRF漏洞,开发者可以采取以下措施:

  1. 限制请求的目标:仅允许访问受信任的URL,可以通过白名单或者正则表达式进行过滤。

  2. 使用安全代理:通过安全代理或反向代理,限制请求的目标并过滤恶意请求。

  3. 使用URL白名单:限制应用程序可以访问的URL范围,避免访问内部网络。

  4. 验证用户提供的URL:对用户提供的URL进行验证和安全性检查,确保其合法性。

2.CSRF(Cross-Site Request Forgery)和SSRF(Server-Side Request Forgery)有什么不同

  1. CSRF (Cross-Site Request Forgery):

    • CSRF 是一种利用用户当前已经认证的会话,在用户不知情的情况下执行非法操作的攻击方式。
    • 攻击者通过欺骗受害者访问包含恶意代码的网页,使受害者在已认证的会话中执行未经授权的操作。
    • 主要针对的是用户的浏览器和其在目标网站上的已验证会话,常见于对在线银行账户、社交媒体账户等进行未经授权的操作。
  2. SSRF (Server-Side Request Forgery):

    • SSRF 是一种攻击,攻击者能够利用目标服务器上的漏洞,以服务器的身份执行未经授权的网络请求。
    • 攻击者通过向应用程序发送包含恶意 URL 的请求,利用服务器端的漏洞执行一些未经授权的操作,例如访问内部系统、执行端口扫描等。
    • SSRF 的危害范围更广泛,可以直接影响到服务器上的资源和其他内部系统,而不是仅仅利用用户的会话。

CSRF 主要针对用户会话,而 SSRF 则主要利用服务器漏洞

3.例子

file协议

文件协议(file protocol),通常表示为 "file://",是用于访问本地或网络文件系统中文件和目录的 URL 方案。当浏览器或应用程序遇到以 "file://" 开头的 URL 时,它会理解需要访问的资源位于本地文件系统而不是互联网上。

例如,如果您有一个名为 "example.html" 的文件位于目录 "C:\Users\YourName" 中,您可以使用文件协议来访问它,像这样:

复制代码

file:///C:/Users/YourName/example.html

这将在您的默认 Web 浏览器中打开 "example.html" 文件。类似地,您可以使用文件协议来访问其他类型的文件,如图像、文本文档,甚至目录。然而,需要注意的是,使用文件协议可能会带来安全隐患,特别是当从不受信任的来源访问文件时,由于潜在的安全漏洞。

gopher协议

gopher协议是http出现之前,在internet上常见的且常用的协议

gopher协议可以做很多事情,特别是在SSRF中可以发挥很多重要的作用,利用此协议可以攻击内网的FTP,Telnet,Redis,Memcache,也可以进行GET,post请求

gopher://host:port/数据流

数据流第一个字符会被吞掉,所以第一个字符通常用_

换行符要用%0d%0a

?符号也要进行URL编码

nc -lvvp 888 #监听888端口

curl gopher://127.0.0.1:888/abc #使用gopher协议请求访问资源

发现监听到的第一个字符被吞掉需要再前面加一个_

dict协议

"dict 协议" 是一种用于在计算机网络上查询词典和参考资料的协议。它允许用户通过网络连接到远程词典服务器,并以特定的格式发送查询请求,然后接收并解析服务器返回的结果。dict 协议通常使用 TCP 或 UDP 连接,通常在端口 2628 上。

通过 dict 协议,用户可以查询词典、百科全书、单词释义等参考资料,并获得相关的定义、解释、用法等信息。dict 协议的查询通常基于一组事先定义好的规范和格式,这使得不同的词典服务器可以共同遵循相同的协议,以便客户端能够在不同的服务器上执行相似的查询操作。

file_get_contents()函数

根据关卡名字,可以看到会利用file_get_content函数,上面概述中有介绍这个函数的作用是把整个文件读入一个字符串中!读取时支持file协议和http协议以及php伪协议

file协议读到php源码后,无法采用file协议获取源码想要获取源码 可以通过php伪协议将代码编码一下才能获取代码

php://fi1ter/read=convert.base64-encode/resource=../../index.php

注:如果点击这里出现白屏

说明php-curl依赖没有下载

apt update #更新包管理器

apt install php-curl #下载php-curl依赖

systemctl restart apache2 #重启apache2

重新访问就有内容了

相关推荐
BullSmall2 小时前
第三方软件安全-Dependency‑Track Docker 部署
安全·docker·容器
AImatters3 小时前
国产算力底座,支撑油气储运数字化迈过关键分水岭
安全·cpu·算力·海光·油气储运
DsirNg4 小时前
凭证不是登录态:从攻击面重做浏览器认证设计
oauth·xss·csrf·token·cookie·认证授权·web 安全
叠叠乐6 小时前
中国移动家庭云电脑window关闭所有安全脚本
安全
Jmyd01236 小时前
实训室的 3D 模型涉及肖像文物,数据安全与合规怎么做?
安全·3d·数据安全·虚拟实训
芯盾时代6 小时前
《金融业网络安全管理办法(征求意见稿)》全条款深度拆解(三)
网络·安全·网络安全
敢敢是只喵i7 小时前
一个本地 AI Agent 要操作多个门店或 SaaS 账号,应该怎样安全切换身份?
人工智能·安全·ai·系统架构·业界资讯
Acrel12348 小时前
DC800V 大规模落地,算力机房安全该如何保障
安全
其实防守也摸鱼8 小时前
权限提升与横向移动:从内网渗透到域控的完整技术图谱
运维·服务器·数据库·安全·github·copilot·渗透
深圳海导科技9 小时前
资产防盗追踪系统:物联网高价值资产安全管理|海导科技navynav
科技·物联网·安全