SSRF相关知识点总结

1 篇文章 0 订阅

SSRF(Server-Side Request Forgery)服务端请求为伪造

一、容易产生SSRF漏洞的函数

file_get_contents()、fsockopen()、curl_exec()

1、file_get_contents()

该函数的作用是将整个文件读入一个字符串中

<?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、fsockopen()

该函数用于打开一个网络连接或者一个Unix套接字连接

<?php
	function GetFile($host,$port,$link)
	{
		$fp=fsockopen($host,int($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
	if(isset($_POST['url']))
	{
		$link = $_POST['url'];
		$curlobj=curl_init();
		curl_setopt($curlobj,CURLOPT_POST,0);
		curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,TRUE);
		curl_setopt($curlobj,CURLOPT_URL,$link);
		$result=curl_exec($curlobj);
		curl_close($curlobj);
		$filename='../images/'.rand().'.jpg';
		file_put_contents($filename,$result);
		$img="<img src=\"".$filename."\"/>";
		echo $img;
	}
?>

二、过滤绕过技巧

1、用@绕过

http://www.baidu.com@127.0.0.1http://127.0.0.1请求是相同的

该请求得到的内容都是127.0.0.1的内容,此绕过同样在URL跳转绕过中适用

2、利用函数的解析不同进行绕过

此处图片和解析来自:
https://www.cnblogs.com/hetianlab/p/14012135.html

(1)readfile和parse_url解析差异,可用于绕过端口限制

image

readfile函数获取的端口是前面一部分的,而parse_url则是最后冒号的端口

(2)readfile和parse_url解析host的时候也有差异

image

parse_url函数解析的是前面的网址,readfile则是后面的

(3)curl和parse_url解析差异

image

curl解析的是第一个@后面的网址,而parse_url解析的是第二个@的网址

参考来自:
https://blog.csdn.net/weixin_44300286/article/details/108061457
https://www.cnblogs.com/hetianlab/p/14012135.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值