Shikata Ga Nai

Private? There is no such things.

Hacking into school management systems. Reflected XSS To RCEを訳してみた

Hello there, ('ω')ノ

 

学校管理システムへのハッキング。 XSS から RCE への反映を。

 

脆弱性:

 XSS

 CSRF

 

記事:

 https://noob3xploiter.medium.com/hacking-into-school-management-systems-reflected-xss-to-rce-74880c423024

 

学校システムをハッキングして成績を変えることができるかどうか、

これまでに何百万回も尋ねられてきて。

そこで、もう少し踏み込んで実際に学校管理システムについて

研究してみることに。

今回は、最も有名なフリースクール管理システムの 1 つである Gibbon を選択し。

Gibbon は、世界中で使用されている無料のオープンソースの学校管理システムで。


CSRF

Gibbon では、ほぼすべての機能に csrf 保護がなく。

csrf チェックがない非常に興味深い機能の 1 つは、パスワード変更で。

 

 

これは csrf に対して脆弱であると思われるかもしれませんが、そうではなく。

これに対して csrf を試しても機能せず、ログアウトされるだけで。

 

 

少し調べたところ、HttpOnly と SameSite が原因で csrf poc が

機能していないことがわかり。

そのため、関数を保護する csrf トークンがなくても、単純な csrf メソッドによって

悪用することはできず。

そして、xss https://security.stackexchange.com/questions/121971/will-same-site-cookies-be-sufficient-protection-against-csrf-and-xss

ある場合はバイパスできることがわかり。


XSS

反映された xss を探し始めたところ、いくつか見つかり。

見つかった xss のインスタンスを 1 つだけ示し。

StaffDashboard.php では、取得パラメータ gibbonTTID が

適切なフィルタリングなしでページに反映されて。

 

 

反射xssにつながり。

 

 

反映された xss ができたので、これを上記の csrf で使用できて。


アカウント乗っ取り

xss と csrf の両方が利用可能になったので、ユーザ ID 1 のパスワードを変更して

アカウントの引き継ぎを続行でき。

ユーザ ID 1 は通常、サイトのスーパー管理者であるため、

彼のアカウントを引き継ぐと、システムへのフル アクセスが許可され。

このペイロードを思いついて。

 

 

次に、ペイロードを URL エンコードして xss に追加して。

xss ペイロードをトリガーした後

 

 

ペイロードが機能し、ユーザ ID 1 のユーザ名とパスワードを

admin:Password123! に変更するポスト リクエストを行っていることがわかり。

これで、管理者としてログインし、認証されたアクセスができるようになって。


認証済みRCE

認証されたユーザとして、レッスン プランナーを作成する機能にアクセスし、

そこでファイルをアップロードでき。

 

 

ファイルのアップロードは適切に実装されており、特定のファイル拡張子のみが

許可されており、そのうちの 1 つは txt ファイルで。

この機能は後で使用するので覚えておいて。

 

見つけた興味深いファイルの 1 つは、export.php で。

このエンドポイントには、認証されたユーザーのみがアクセスできて。

 

 

ここでは、パラメーター q を受け入れ、それを以下の include ステートメントで

使用していることがわかり。

また、次のこともチェックして。

したがって、lfi に対して脆弱ではなく。

インクルードしたファイルに php コードが含まれている場合、

インクルードしたファイルが php でなくても実行されることがわかり。

上記のファイル アップロード機能と組み合わせると、rc を実現できて。

 

そこで、poc.txtという名前のtxtファイルを作成し。

その中には単純な  <?php システム(whoami); ?>

そして、上記の機能を使用してアップロードして。

 

 

ファイル名とディレクトリが応答に表示され。

次に、そのパスをexport.phpのqパラメータに渡して。

http://localhost/gibon/export.php?q=/uploads/2022/01/poc_ckxsuyxkrm4pehkd.txt 

リンクにアクセスしてみたところ…。

 

 

コマンドが実行され。

これからレースが始まり。

 

Best regards, (^^ゞ