SSRF及防御

一,PHP的curl

PHP中使用curl进行网络请求

如下代码(PHP):

<?php
// 初始化curl
$ch = curl_init();

// 设置curl选项
curl_setopt($ch, CURLOPT_URL, 'http://example.com/api'); // 设置请求的URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将请求的结果以字符串返回,而不是直接输出

// 执行curl请求
$response = curl_exec($ch);

// 检查请求是否成功
if($response === false){
    echo 'Curl error: ' . curl_error($ch);
}

// 关闭curl
curl_close($ch);

// 处理请求结果
echo $response;
?>

在这个示例中,我们使用curl库来发送一个GET请求到http://example.com/api,并将返回的结果打印出来。您可以根据具体的需求来设置不同的curl选项,比如设置请求方法、请求头、请求体等。 

扩展的作用:

  • 获取网页资源——>爬虫
  • webservice——>获取接口数据
  • FTP——>下载文件

其中curl支持的协议不仅仅有HTTP;

1,file协议,用来的读取文件;如:file:///etc/password;

2,dict协议,可以用来查看端口;如:dict://127.0.0.1:3306;

3,http协议,可以用来访问网站;

二,什么是SSRF

SSRF (Server-Side Request Forgery) 服务端请求伪造是一种安全漏洞,攻击者可以利用该漏洞向目标服务器发起恶意请求,从而绕过访问控制和安全策略,可能导致信息泄露、服务拒绝、甚至服务器被入侵。攻击者通常会利用SSRF漏洞来获取内部系统信息、执行未经授权的操作或攻击内部系统。

实质:是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。

PHP中可能导致出现SSRF的函数:

curl_exec()   //执行 cURL 会话
file_get_contents()   //将整个文件读入一个字符串
fsockopen()   //打开一个网络连接或者一个Unix套接字连接

危害(利用):

  • 扫描资产;
  • 读取敏感文件;
  • 用来攻击内网服务器(绕过防火墙);
  • 访问大文件,造成溢出;
  • 通过Redis写入WebShell或建立反弹连接;

三,SSRF出现的场景及挖掘

1,社会化分享(将网站分享给其他人)

2,转码服务

转码服务是将一个格式的数据转换为另一个格式的服务。通常用于将音频、视频、图片等文件从一种编码或格式转换为另一种,以便在不同设备或平台上播放或显示。

3,图片,文章的收藏功能

4,在线翻译(将整个网站进行翻译);

由于解析,读取其他网站的内容;

5,图片的加载下载功能

针对有可能出现SSRF的漏洞的网站;

可以观察有无出现url的参数或者访问其他网站;

请求其他的资源;

四,SSRF的防御:

1. 输入验证(设置url的白名单):对用户输入的URL进行严格的验证,只允许特定的URL格式或特定的域名。可以使用白名单来限制允许访问的URL。

2. 使用安全代理:通过使用安全代理服务器来过滤和验证所有外部请求,可以防止恶意请求通过。

3. 内部网络隔离:将服务器部署在内部网络中,限制服务器对外部网络的访问权限,避免直接访问外部资源。

4. 使用防火墙:配置防火墙规则,限制服务器对外部网络的访问,只允许特定的端口和IP地址进行通信。

5. 更新和监控:定期更新服务器和相关组件的漏洞,监控服务器的访问日志,及时发现异常请求并进行处理。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕舟舟.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值