web安全基础--SSRF漏洞

SSRF

定义与成因

SSRF(Server-Side Request Forgery:服务器请求伪造)是一种由攻击者构造形成,由服务器段发起请求的一个安全漏洞。

一般情况下,SSRF攻击目标是从外网无法访问的内部系统。(正是因为它是由服务器端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)

SSRF漏洞形成的原因大都是由于服务器端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等

具体代码

<?php
	if(isset($_POST['url']))
	{
		$content = file_get_contents($_POST['url']);
		$filename='./images/'.read().'.jpg';
		$file_put_contents($filename,$contents);
		echo $_POST['url'];
		$img = "<img src=\"".$filename."\"/>";
		echo $img;
	}
	else
	{
		echo "no url";
	}
?>

**isset()**检查变量是否非空

危害

内网探测

利用file协议读取本地文件等

向内部任意主机的任意 端口发送精心构造的payload,从而攻击内网的应用(web应用等),主要是使用GET参数就可以实现的攻击(比如struts2,sqli等)

DOS攻击(请求大量文件,适中保持连接Keep-Alive Always)

验证

排除法:F12查看源代码是否在本地进行了请求

使用dnslog等工具进行测试,看是否被访问

其他代码

<?php

    function GetFile($host,$post,$link){
		$fp=fsockopen($host,intval($post),$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='';
			wile(!feof($fp)){
				$contents.=fgets($fp,1024);
			}
			fclose($fp);
			return $contents;
		}
	}
<?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);
		$result=curl_exec($curlobj);
		curl_close($curlobj);
		
		$filename = './curled/'.read().'.txt';
		file_put_contents($filename,$result);
		echo $result;
	}
?>

fsockopen可以用来模拟HTTP连接

**curl_init()**初始化一个cURL 会话

一些绕过

加端口

例如:127.0.0.1:80

短网址

指向任意IP的域名xip.io

127.0.0.1.xip.io依然指向这个Ip

IP限制绕过(进制转换)

@绕过(http://www.beidu.com@127.0.0.1)

(因为url网址是协议://用户名:密码@网址/网址文件?参数名=参数值#锚点

后面加参数(http://127.0.0.1?a=sdafwasdwfa)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值