html个人网站,桂林建站,手机页面,网站建设咨询话术技巧SSRF漏洞
在了解ssrf漏洞前先了解curl命令的使用
1.curl命令的使用
基本格式#xff1a;curl参数值请求地址
get请求#xff1a;curl http://127.0.0.1
post请求#xff1a;curl -X POST -d a1b2 http://127.0.0.1/(其中#xff0c;使用-X参…SSRF漏洞
在了解ssrf漏洞前先了解curl命令的使用
1.curl命令的使用
基本格式curl参数值请求地址
get请求curl http://127.0.0.1
post请求curl -X POST -d a1b2 http://127.0.0.1/(其中使用-X参数来指定请求模式-d参数来指定发送数据)
带cookie请求curl -- cookie PHPSESSIDxxxxxxx http://127.0.0.1
上传文件:curl -F file/etc/passwd http://127.0.0.1-F参数来表示上传文件请求,file是文件上传 中html form表单的name值,是格式,后面跟要上传的本地文件路径。 协议补充 file协议一般用于读取本地文件。 Gopher协议是一个可以发送自定义TCP数据的协议。由于可以发送任意的TCP数据这也大大拓宽了攻击面。将HTTP包转换成Gopher只需要把特殊字符URL编码即可。 eg http请求 发送的URL格式 其他的TCP数据只要将其不可见字符URL编码后按照格式即可发送。 dict协议当我们发送dict://127.0.0.1:80/test123时我们可以使用nc监听80端口然后接收到的数据如下我们仅仅能控制其中一行内容那么对于这个协议可以用于攻击那些支持单行命令的应用如Redis。Redis的控制命令如SET user admin是可以单行输入执行的。而像HTTP这类命令必须有一个跨多行的完整的请求格式才算正常请求不然就不会被解析。 2. SSRF漏洞的基础概念
1概念SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。ssrf是利用存在缺陷的web应用作为代理攻击远程和本地的服务器。一般情况下SSRF攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的所以它能够请求到与它相连而与外网隔离的内部系统
2形成原因SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。 3.SSRF漏洞挖掘
1分享通过URL地址分享网页内容 2在线翻译:通过URL地址翻译对应文本的内容。提供此功能的国内公司有百度、有道等。 (3)图片、文章收藏功能:此处的图片、文章收藏中的文章收蒙就类似于分享功能中获取URL地址中title以及文本的内容作为显示,目的还是为了更好的用户体验。
例如title参数是文章的标题地址,代表了一个文章的地址链接,请求后返回文章是否保存,收藏的返回信息。如果保存,收藏功能采用了此种形式保存文章,则在没有限制参数的形式下可能存在SSRF。 (4)从URL关键字中寻找 利用google 语法加上这些关键字去寻找SSRF漏洞 share wap url link src source target u display sourceURl imageURL domain 4.产生SSRF漏洞的函数
1、file_get_contents:
下面的代码使用file_get_contents函数从用户指定的url获取图片。然后把它用一个随即文件名保存在硬盘上并展示给用户。
?php
if (isset($_POST[url]))
{
$content file_get_contents($_POST[url]);
$filename ./images/.rand().;img1.jpg;
file_put_contents($filename, $content);
echo $_POST[url];
$img img src\.$filename.\/;
}
echo $img;
?2、sockopen():
以下代码使用fsockopen函数实现获取用户制定url的数据文件或者html。这个函数会使用socket跟服务器建立tcp连接传输原始数据。
?php
function GetFile($host,$port,$link)
{
$fp fsockopen($host, intval($port), $errno, $errstr, 30);
if (!$fp) {
echo $errstr (error number $errno) \n;
} else {
$out GET $link HTTP/1.1\r\n;
$out . Host: $host\r\n;
$out . Connection: Close\r\n\r\n;
$out . \r\n;
fwrite($fp, $out);
$contents;
while (!feof($fp)) {
$contents. fgets($fp, 1024);
}
fclose($fp);
return $contents;
}
}
?3、curl_exec():
cURL这是另一个非常常见的实现它通过 PHP获取数据。文件/数据被下载并存储在“curled”文件夹下的磁盘中并附加了一个随机数和“.txt”文件扩展名。
?php
if (isset($_POST[url]))
{
$link $_POST[url];
$curlobj curl_init();
curl_setopt($curlobj, CURLOPT_POST, 0);
curl_setopt($curlobj,CURLOPT_URL,$link);
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
$resultcurl_exec($curlobj);
curl_close($curlobj);$filename ./curled/.rand()..txt;
file_put_contents($filename, $result);
echo $result;
}
?五、SSRF漏洞利用(危害)
主要是用来进行内网探测,也可以说是内网信息收集,存活主机和开放端口。
1.可以对外网服务器所在的内网进行端口扫描,获取一些服务的banner信息;
2.有时候还可以攻击运行在内网或本地的应用程序;比如通过ssrf给内网的redis写定时任务,实现反弹shell
3.对内网web应用进行指纹识别;
4.攻击内外网的web应用,比如struts2,sq注入等;
6.SSRF中URL的伪协议