SSRF(Server-Side Request Forgery:服务器端请求伪造)
一般都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制
服务器端的验证没有对其请求获取图片的参数做出严格的过滤以及限制,导致网站可以从其他服务器的获取数据
一般来说SSRF是可以探测内网端口开放信息
使用这些函数不会有SSRF漏洞file_get_contents()、fsockopen()、curl_exec()
ssrf形成的原因大都是服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从制定url地址获取网页文本内容。加载指定地址的图片,文档等等
file_get_contents:
SRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有检测这个请求是否合法的,然后服务器以他的身份来访问其他服务器的ssrf攻击可能存在任何语言编写的应用,我们通过一些php实现的代码来作为样例分析。代码的大部分来自于真实的应用源码。
share、wap、url、src、 link、source 、target、u 、display 、sourceURl 、imageURL 、domain
可以对外网、内网web应用进行指纹识别、通过访问默认文件实现
攻击内外网的web应用。主要是使用get参数就可以实现的攻击(比如struts、sqli等)
利用file协议读取本地文件
1.利用解析URL出现的问题
- 限制为http://www.xxx.com 域名时(利用@)
可以尝试采用http基本身份认证的方式绕过
如:http://[email protected]@www.ccc.com,在对@解析域名中,不同的处理函数存在处理差异
在PHP的parse_url中会识别www.ccc.com,而libcurl则识别为www.bbb.com。
2.采用短网址绕过
比如百度短地址https://dwz.cn/
3.采用进制转换
127.0.0.1八进制:0177.0.0.1。十六进制:0x7f.0.0.1。十进制:2130706433.
输入baidu.com
他就会把百度的搜索框调出来
继续试试校园网
点击here进入了官网
这里再读一首诗
查看源码,发现有一个这样的函数。这个函数可以对本地文件进行读取,也可以对远程文件进行读取
一样的,这里我们也可以将百度搬过来。但是这个php配置文件说了读取源码,那我们复制打开试试
复制
解码
/**
* Created by runner.han
* There is nothing new under the sun
*/
$SELF_PAGE = substr($_SERVER['PHP_SELF'],strrpos($_SERVER['PHP_SELF'],'/')+1);
if ($SELF_PAGE = "ssrf.php"){
$ACTIVE = array('','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','active open','active','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','');
}
$PIKA_ROOT_DIR = "../../";
include_once $PIKA_ROOT_DIR.'header.php';
<div class="main-content">
<div class="main-content-inner">
<div class="breadcrumbs ace-save-state" id="breadcrumbs">
<ul class="breadcrumb">
<li>
<i class="ace-icon fa fa-home home-icon"></i>
<a href="ssrf.php"></a>
</li>
<li class="active">概述</li>
</ul>
</div>
<div class="page-content">
<b>SSRF(Server-Side Request Forgery:æœåŠ¡å™¨ç«¯è¯·æ±‚ä¼ªé€ )</b>
<p>å
¶å½¢æˆçš„åŽŸå› å¤§éƒ½æ˜¯ç”±äºŽæœåŠ¡ç«¯<b>æ供了从å
¶ä»–æœåŠ¡å™¨åº”用获å–æ•°æ®çš„功能</b>,但åˆæ²¡æœ‰å¯¹ç›®æ ‡åœ°å€åšä¸¥æ ¼è¿‡æ»¤ä¸Žé™åˆ¶</p>
导致攻击è€
å¯ä»¥ä¼ å
¥ä»»æ„的地å€æ¥è®©åŽç«¯æœåŠ¡å™¨å¯¹å
¶å‘起请求,å¹¶è¿”å›žå¯¹è¯¥ç›®æ ‡åœ°å€è¯·æ±‚çš„æ•°æ®<br>
<br>
æ•°æ®æµ:攻击è€
----->æœåŠ¡å™¨---->ç›®æ ‡åœ°å€<br>
<br>
æ ¹æ®åŽå°ä½¿ç”¨çš„函数的ä¸åŒ,对应的影å“和利用方法åˆæœ‰ä¸ä¸€æ ·
<pre style="width: 500px;">
PHPä¸ä¸‹é¢å‡½æ•°çš„使用ä¸å½“会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()
</pre><br>
如果一定è¦é€šè¿‡åŽå°æœåŠ¡å™¨è¿œç¨‹åŽ»å¯¹ç”¨æˆ·æŒ‡å®š("或è€
预埋在å‰ç«¯çš„请求")的地å€è¿›è¡Œèµ„æºè¯·æ±‚,<b>则请åšå¥½ç›®æ ‡åœ°å€çš„过滤</b>。
<br>
<br>
ä½ å¯ä»¥æ ¹æ®"SSRF"里é¢çš„项目æ¥æžæ‡‚问题的原å›
</div><!-- /.page-content -->
</div>
</div><!-- /.main-content -->
<?php
include_once $PIKA_ROOT_DIR . 'footer.php';
?>
?>