Web开发

首页 » 常识 » 预防 » web安全SSRF的各种利用方式
TUhjnbcbe - 2022/12/12 21:13:00

什么是SSRF

SSRF(服务端请求伪造漏洞)由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据。

一般情况下,SSRF针对的都是一些外网无法访问的内网,所以需要SSRF使目标后端去访问内网,进而达到我们攻击内网的目的。

通过SSRF,我们可以访问目标内网的redis服务,mysql服务,smpt服务,fastcgi服务等

造成漏洞的一些函数

file_get_contents():将整个文件或一个url所指向的文件读入一个字符串中。

readfile():输出一个文件的内容。

fsockopen():打开一个网络连接或者一个Unix套接字连接。

curl_exec():初始化一个新的会话,返回一个cURL句柄,供curl_setopt(),curl_exec()和curl_close()函数使用。

fopen():打开一个文件文件或者URL。

1、网络安全学习路线2、电子书籍(白帽子)3、安全大厂内部视频4、份src文档5、常见安全面试题6、ctf大赛经典题目解析7、全套工具包8、应急响应笔记

file_get_contents()/readfile()

?php$url=$_GET[url];;echofile_get_contents($url);?

fsockopen()

fsockopen($hostname,$port,$errno,$errstr,$timeout)用于打开一个网络连接或者一个Unix套接字连接,初始化一个套接字连接到指定主机(hostname),实现对用户指定url数据的获取。该函数会使用socket跟服务器建立tcp连接,进行传输原始数据。fsockopen()将返回一个文件句柄,之后可以被其他文件类函数调用(例如:fgets(),fgetss(),fwrite(),fclose()还有feof())。如果调用失败,将返回false

?php$host=$_GET[url];$fp=fsockopen($host,80,$errno,$errstr,30);if(!$fp){echo"$errstr($errno)br/\n";}else{$out="GET/HTTP/1.1\r\n";$out.="Host:$host\r\n";$out.="Connection:Close\r\n\r\n";fwrite($fp,$out);while(!feof($fp)){echofgets($fp,);}fclose($fp);}?

curl_exec()

?php$url=$_POST[url];$ch=curl_init($url);//创造一个curl资源curl_setopt($ch,CURLOPT_HEADER,0);//设置url和相应的选项curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);$result=curl_exec($ch);//抓取url并将其传递给浏览器curl_close($ch);//关闭curl资源echo($result);?

接下来我就SSRF涉及的协议和一些bypass结合一些CTF进行分析

SSRF攻击中涉及的一些协议

因为只是展示各个协议的用途,所以这里就不自己搭环境,直接用CTFHUB的技能树了

1
查看完整版本: web安全SSRF的各种利用方式