[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/ ...
随机推荐
- Redis Lua脚本完全入门
1. 前言 Redis是高性能的KV内存数据库,除了做缓存中间件的基本作用外还有很多用途,比如胖哥以前分享的Redis GEO地理位置信息计算.Redis提供了丰富的命令来供我们使用以实现一些计算.R ...
- <!DOCTYPE>,<address>,<applet>的用法
希望以下内容能让大家有所收获 HTML <!DOCTYPE> 标签 实例 <!DOCTYPE html> <html> <head> <title ...
- IDEA 半天卡住buid(编译)不动
[号外号外!] 最终解决办法并不复杂,关键在于"遇见问题,怎么样层层分析,多条路径试错,最终解决问题的思路或者能力"--资深码农的核心竞争力之一 背景 今天结束完最近2个月的一个项 ...
- 解决加密PDF文档无法复制文字的问题
有的时候在网络上搜索到一篇心仪的PDF文档,想复制其中内容时提示无法复制. 如果只想摘抄其中部分文字内容,可以使用Firefox浏览器打开这篇加密文档. Firefox浏览器自带PDF插件,打开后即可 ...
- Asp.Net实现局部刷新,ScriptManager和UpdatePanel控件的使用
<asp:CheckBoxList ID="LimitCollegeNo" runat="server" CellPadding="5" ...
- H5移动端实现图片上传
转至 :https://blog.csdn.net/qq_37610423/article/details/84319410 效果图: 我在用这个的时候发现博主少写了一些东西,导致功能无法实现,所以我 ...
- Spring之IOC/DI(反转控制/依赖注入)_入门Demo
在平时的java应用开发中,我们要实现某一个功能或者说是完成某个业务逻辑时至少需要两个或以上的对象来协作完成,在没有使用Spring的时候,每个对象在需要使用他的合作对象时,自己均要使用像new ob ...
- vue学习笔记(一)---- vue指令( v-bind 属性绑定 )
看栗子: <body> <div id="app"> <input type="button" value="按钮&qu ...
- 使用Socket通信(一)
使用socket需要一个服务器,我用的是tomcat,好像AS不支持Tomcat了,还有什么好的服务器求推荐,使用Tomcat去官网下载,然后还要安装Java的jdk,然后配置jak环境变量,然后配置 ...
- Hive Sql的窗口函数
date: 2019-08-30 11:02:37 updated: 2019-08-30 14:40:00 Hive Sql的窗口函数 1. count.sum.avg.max.min 以 sum ...