[web安全原理分析]-SSRF漏洞入门
SSRF漏洞
SSRF漏洞

SSRF意为服务端请求伪造(Server-Side Request Forge)。攻击者利用SSRF漏洞通过服务器发起伪造请求,就这样可以访问内网的数据,进行内网信息探测或者内网漏洞利用
SSRF漏洞形成的原因是:应用程序存在可以从其他服务器获取数据的功能,但对服务器的地址没有做严格的过滤,导致应用程序可以访问任意的URL链接。攻击者通过精心构造URL连接,可以利用SSRF漏洞进行以下攻击:
(1) 通过服务器获取内网主机、端口和banner信息
(2) 对内网的应用程序进行攻击,例如Redis、JBoss等
(3) 利用file://伪协议读取文件
(4) 可以攻击内网程序,造成缓冲区溢出
SSRF高危触发点:
(1)图片加载与下载:通过URL地址加载或下载图片
(2)从远程服务器请求资源
(3)数据库内置功能(Orage,MongoDB,MSSQL,Posgres,couchDB)
(4)Web Mail收取其他邮箱邮件
(5)文件处理、编码处理、属性信息处理(FFmpeg,docx,pdf,XML处理)
SSRF漏洞代码分析
漏洞示例代码:
<?php
if(isset($_GET['url']))
{
$link=$_GET['url'];
$filename='./'.rand().'.txt';
$curlobj=curl_init($link);
curl_setopt($curlobj,CURLOPT_FILE,$link);
curl_setopt($curlobj,CURLOPT_HEADER,0);
$result=curl_exec($curlobj);
curl_exec($curlobj);
curl_close($curlobj);
fclose($link);
file_put_contents($filename, $result);
echo $result;
}
?>
以上代码通过curl_exe函数对访问传入的URL数据进行请求,并返回请求的结果。
1.文件读取
通过file://伪协议读取常见的文件,例如/etc/passwd 我的是windows环境所以简单测试读取windows下的win.ini文件
pyaload:
http://192.168.1.6/index.php?url=file://C:\Windows\win.ini

2.端口探测
url没有经过严格的过滤,因此攻击者就可以构造任意的URL利用SSRF漏洞。例如可以通过http://127.0.0.1:3306来探测此服务器是否开启了3306端口
测试3306端口payload:
http://192.168.1.6/index.php?url=http://127.0.0.1:3306

测试3389端口payload:
http://192.168.1.6/index.php?url=http://127.0.0.1:3389
返回数据为空,返回延迟比较长 说明不存在此端口

3.内网应用攻击
通过SSRF漏洞可以进行端口信息探测,也可以对内网存在远程命令执行漏洞的应用进行攻击
(1)信息探测
利用SSRF端口信息探测方法通过内网发现了内网有一台主机开启了JB服务
(2)访问jmx控制台
(3)部署木马
(4)获得webshell
(5)执行命令
待更新。。。。。
其他常见漏洞代码
漏洞代码1 file_get_contents()
<?php
if(isset($_POST['url']))
{
$content=file_get_contents($_POST['url']);
$filename='./images/'.rand().'.img';
file_put_contents($filename,$content);
echo $_GET['url'];
$img="<img src=\"".$filename."\"/>"; }
echo $img;
?>
通过post请求传入我们要读取的文件 这样我们win.ini文件就写入到了图片中

打开图片查看 得到我们需要的信息

SSRF漏洞修复
(1)过滤请求协议,只允许http或者https开头的协议
(2)严格限制访问的IP地址,只允许访问特定的IP地址
(3)限制访问的端口,只允许访问特定的端口
(4)设置统一的错误信息,防止造成信息泄露

前言
参考学习:https://www.cnblogs.com/wangshuwin/p/7642693.html
《web安全原理分析与实践》——SSRF漏洞
[web安全原理分析]-SSRF漏洞入门的更多相关文章
- [web安全原理分析]-XEE漏洞入门
前言 1 前言 XXE漏洞 XXE漏洞全称(XML External Entity Injection)即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致 ...
- [web安全原理]PHP反序列化漏洞
前言 这几天一直在关注新管状病毒,从微博到各大公众号朋友圈了解感觉挺严重的看微博感觉特别严重看官方说法感觉还行那就取中间的吧 自己要会对这个东西要有理性的判断.关注了好两天所以耽搁了学习emmm 希望 ...
- web安全原理-文件包含漏洞
前言 起来吃完早饭就开始刷攻防世界的题,一个简单的文件包含题我竟然都做不出来我服了 拿出买的书开始从头学习总结文件包含漏洞! 一.文件包含漏洞 文件包含漏洞 文件包含函数的参数没有经过过滤或者严格的 ...
- SSRF漏洞入门篇
SSRF漏洞,又名服务端请求伪造漏洞. PHP中下列函数使用不当会导致SSRF: file_get_contents().fsockopen().curl_exec()函数(源码审计的时候注意点儿): ...
- [web安全原理分析]-文件上传漏洞基础
简介 前端JS过滤绕过 待更新... 文件名过滤绕过 待更新 Content-type过滤绕过 Content-Type用于定义网络文件的类型和网页编码,用来告诉文件接收方以什么形式.什么编码读取这个 ...
- web安全原理分析-SQL注入漏洞全解
简介 靶场:榆林学院信息安全协会--入侵榆大实验靶场 数字型注入 1 字符型注入 1 布尔注入 1.布尔注入简介 mysql bool注入是盲注的一种.与报错注入不同,bool注入没有任何报错信息输出 ...
- [web安全原理]PHP命令执行漏洞基础
前言 PHP命令执行漏洞 应用程序的某些功能功能需要调用可以执行系统命令的函数,如果这些函数或者函数的参数被用户控制,就有可能通过命令连接符将恶意命令拼接到正常的函数中,从而随意执行系统命令,这就是命 ...
- 【Android漏洞复现】StrandHogg漏洞复现及原理分析_Android系统上的维京海盗
文章作者MG1937 CNBLOG博客:ALDYS4 QQ:3496925334 0x00 StrandHogg漏洞详情 StrandHogg漏洞 CVE编号:暂无 [漏洞危害] 近日,Android ...
- Linux内核[CVE-2016-5195] (dirty COW)原理分析
[原创]Linux内核[CVE-2016-5195] (dirty COW)原理分析-二进制漏洞-看雪论坛-安全社区|安全招聘|bbs.pediy.com https://bbs.pediy.com/ ...
随机推荐
- 使用PyPdf2合并PDF文件(没有空白、报错)
使用PyPdf2合并PDF文件(没有空白.报错) 对于合并之后pdf空白,或者出现 'latin-1' codec can't encode characters in position 8-11: ...
- Anderson《空气动力学基础》5th读书笔记 第2记——流体静力学初步
与物体在水中受到水的浮力一样,空气中的物体也会受到空气的浮力,但由于这个浮力往往比较小,实际中的很多问题我们常常将它忽略,而对于像热气球这样的靠空气的浮力产生升力的飞行器来说,空气的浮力是不能忽略的. ...
- ssh执行命令
执行一条命令 ssh user@ip command 执行多条命令 ssh user@ip "command1;command2" #分号隔开 关于转义 ssh user@ip ' ...
- centos7 添加环境变量
修改/etc/profile文件使其永久性生效,并对所有系统用户生效 PATH=$PATH:/usr/local/php/bin export PATH source /etc/profile
- Redis基础(一)数据结构与数据类型
Redis数据结构 Redis一共有六种数据结构,分别是简单动态字符串.链表.字典.跳表.整数集合.压缩列表. 简单动态字符串(SDS) Redis只会使用C字符串作为字面量,在大多数情况下,Redi ...
- Oracl Linux KVM虚拟机备份
Oracle Linux KVM 作为Oracle Linux的一部分,基于KVM的Oracle Linux 服务器虚拟化解决方案在功能上得到了增强.用户可以利用Oracle Linux旧版本,将操 ...
- Mybatis---07Mybatis配置文件浅析(五)
1.environments:MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做.例如,开发.测试和生产环境需要有不同的配置: ...
- Shell脚本实现----Kubernetes单集群二进制部署
Shell脚本实现----Kubernetes单集群二进制部署 搭建Kubernetes集群环境有以下三种方式: 1. Minikube安装方式Minikube是一个工具,可以在本地快速运行一个 ...
- python获取响应某个字段值的三种方法
近期将要对两个接口进行测试,第一个接口的响应值是第二个接口的查询条件.为了一劳永逸,打算写个自动化测试框架.因为请求和响应都是xml格式的,遇到的问题就是怎么获取xml响应的某一个值.尝试了很多博客的 ...
- vue-cli3使用jq
第一步安装 npm install jquery --save 第二部配置vue.config.js, 没有这个文件就创建 主要是框框出来的那些: 忽略我配置的另一个uglifyjs-webpack- ...