序文
サイトに遭遇すると、バックエンドはNode.jsによって作成されます。このタイプのサイトの場合、シェルを取得することは一般に困難ですが、バックグラウンド権限を取得するという最終的な目標も達成します。
情報収集
まず、定期的な情報収集、サブドメインスキャン、ポートスキャン、ディレクトリスキャンなどを実行します。
このサイトのバックエンドスクリプト言語はNode.jsです
ディレクトリ検出により、404インターフェイスもNode.jsの404ページと非常によく似ており、後でjsファイルに焦点が当てられることがわかりました。
画期的なインターフェース
ディレクトリスキャンを実行しているときに、便利なディレクトリが見つかりました。
前述のように、jsファイルに注目し、ページのソースコードを確認して、興味深いjsファイルを見つけてください。このファイルが興味深いのはなぜですか。このjsのファイル名は製品名と同じであるため
入ってから、新しい世界を発見しました
このWebサイトのフロントエンドインターフェイスは、jsファイルのdocument.write関数を介して構築されます
ページの動的にレンダリングされたデータは、js関数のajaxリクエストを介して取得されます
$ . ajax ({
url : host + "/agent/getPlayerInfo" ,
type : "post" ,
dataType : 'json' ,
headers : { "content-type" : "application/json" },
data : JSON . stringify ({ "uid" : uid })
}). done ( function ( data ){
console . log ( data );
コアのすべての機能インターフェイスは不正アクセスです。さまざまなjsファイルのajaxリクエストに従って、postmanを使用してデータパケットを直接構築すると、バックグラウンドで対応する機能を実現できます。
ログインの背景
上記のインターフェースを介して、ユーザーのuidを介してユーザーのユーザー名を取得し、すべてのユーザー名を辞書として使用し、それらをげっぷに入れて弱いパスワードを爆破することができます
バックグラウンドログインパッケージを分析します。パスワードは暗号化されています
jsで暗号化方式を見つけ、16ビットのmd5をインターセプトします
jsコードのifロジックによると、パッケージコードの戻り値101100がパスワードエラーであり、200が正常なログインであることがはっきりとわかります。
弱いパスワードで複数のユーザーを爆破することに成功
間違ったパスワード:
パスワードは正しいです:
管理者の経歴を入力してください
ブラストユーザーを使用してバックグラウンドにログインし、管理者ではないことを確認します
ただし、引き続きjsコードを読み、次のコードを見つけます。ログインに成功した後、data.code == 200、返されたパッケージのagentClass値に従って、管理者インターフェイス、カスタマーサービスインターフェイス、または第1レベルまたは第2レベルのユーザーインターフェイスが表示されます。これはフロントエンドの判断であり、インターフェイスはdocument.write関数を介してレンダリングされるため、フロントエンドをバイパスでき、返されたパッケージのagentClass値を管理者の値に直接変更してから、管理者インターフェースを入力でき、バックエンドのすべてのインターフェースは上記のとおりです。認証がないため、
agentClass = 1の場合、管理者のバックグラウンドのすべての機能を使用できます。
agentClass = 2-4の場合:
次に、返されたパッケージのagentClass=1を変更するだけです。
管理者のバックグラウンドに正常に入る