SSRF渗透与防御

什么是ssrf?

image-20240813233928212

ssrf的危害

image-20240813234107085

php的curl扩展,一般需要在php.ini配置文件下查看是否被注释掉。

image-20240813232534009

php也有其他函数可能使得产生ssrf漏洞。

image-20240813233144996

curl也支持其他的协议,比如从攻击的角度来看,dict协议可以用于探测端口

image-20240813233232736

但实际上dict协议是用于搭建在线字典服务

image-20240813233617841

ssrf示例演示

首先为了保证实验成功,必须在php.ini配置文件确保没有注释extension=php_curl.dll

把提供的php文件放入到ssrf目录下,然后在phpstudy创建网站即可。

image-20240816011701518

解读ssrf1.php这段源代码,主要就是通过get请求获取url并通过游览器去访问。

比如传递百度的url就可以跳转到百度。

image-20240816012521552

此时也就发现了ssrf漏洞,因为curl也支持文件协议,那么就可以访问本地敏感文件。

image-20240816012645198

由于curl支持dict协议,那么也可用来检测服务器端口。

比如检测到有3306端口开放,但是如果是3307则无法加载出来。

image-20240816012806374

pikachu演示

首先点击ssrf的链接,发现是通过url参数进行传递。

image-20240816013222048

于是利用这个漏洞进行端口检测,比如3306

image-20240816013312139

比如访问敏感文件host

image-20240816013458212

如果要访问敏感文件是php代码,则需要使用php伪协议访问,当然结果是base64编码,需要进行解码,php文件是不能直接通过file协议访问内容的。

这里使用的pikachu第二个ssrf靶场,其中点击链接是通过file进行传参。

image-20240816014343259

在base64编码的内容进行解码,即可获得源代码。

image-20240816014504214

ssrf的常见场景

比如分享功能,要分享到其它网站,则需要解析其他网站的地址,但是如果把解析的内容换成服务器的敏感文件,即可获取敏感信息。

image-20240813234448187

转码主要是为了解决页面显示尺寸奇怪的情况,转码会加载本地服务器的文件,如果此时改为加载敏感文件,将会形成攻击漏洞。

image-20240813235527631

在线翻译,可能会解析本页面的英文,从而翻译为中文,如果把解析的内容换成敏感文件,同样可攻击。

image-20240813235815001

图片加载上传,如果提供图片链接,那么就会进行解析,也可拿来解析服务器的本地敏感文件

image-20240814000043857
image-20240814000235384
image-20240814000318685

其中cms系统也有过ssrf的漏洞。

image-20240814000402038

如何检测是否有ssrf漏洞?

image-20240814000956289

如何防御ssrf漏洞?

比如禁止使用file协议去访问服务器本地文件

image-20240814002733328

Last updated