ウェブサイトの情報漏洩攻撃 - 越権行為、ディレクトリトラバーサル、ソースコード公開

 

このセクションでは、実際には、前述した有名な悪名高い攻撃の脆弱性のものに加えて、他の多くの抜け穴があるサーバー、多くの場合、簡単に見落とさは、また少しいくつか説明します。

不正な脆弱性

あなたはログインシステムを持っている場合は制御され、それが最も可能性の高いシステムが越権行為の脆弱性であるため、不正操作の脆弱性は、単にのように要約することができ、余分な注意が必要だろう「ユーザー、ユーザーのプライバシーやオペレータBの内容を見ることができます」あなたのアクセス制御システムは、より慎重になる必要性が存在する場合。したがって、各要求は、ユーザIDの判断を行う必要があります

以下は、バックエンドの模式コードでのいくつかの抜け穴です。

1 
2
3
4
5
6
7
// CTX要求コンテキストのコンテキストがある
。MSGID = ctx.params.msgIdを聞かせ

mysql.queryは('msg_table MSG_ID WHERE SELECT * FROM ='、〔のMsgId] )。



上記のコードは、誰もがそのようにそれを改善する必要性などの典型的な越権の抜け穴であり、これは、限り、あなたはMSG_IDできるよう、すべてのユーザーのメッセージを照会することができます:

1 
2
3
4
5
6
7
8
// CTX要求コンテキストのコンテキストがある
MSGID = ctx.params.msgIdを聞かせ;
のuserId = ctx.session.userIdを聞かせ; // userIdを、現在のログインセッションから削除

mysql.query(「SELECT * = AND MSG_ID msg_table FROM? ?USER_ID =」、[MSGIDは、ユーザーID] )。



必要性は考慮に関連付けられているのuserIdを検討するときああ、おそらくより厳格なアクセス制御がある場合は、データベースの操作に関与している者は、厳密に各要求を検証する必要があること、およびデータベーステーブルの設計では、意味と権利団体。

ディレクトリトラバーサルの脆弱性

ディレクトリトラバーサルの脆弱性は、URLや建設パラメータを指し  .././ および同様のクロスASCIIエンコードする親ディレクトリ文字列、ユニコードコーディング、完全なディレクトリのジャンプは、また任意」として知られている各ディレクトリオペレーティングシステム、内の機密ファイルを読みますファイルには、脆弱性を読んで。」

ディレクトリトラバーサルの脆弱性の原則:プログラムは十分にユーザーの入力サニタイズしない  ../ 、ディレクトリスキップ看板などをユーザーがジャンプを提出することによって、サーバーのディレクトリ上の任意のファイルを通過する可能性があります。複数の使用.. シンボルは、ジャンプアップし、最終的にルートに滞在し続けて  /、絶対パスを介して任意のファイルを読むために。

ディレクトリトラバーサルの脆弱性とテストいくつかの例を、一般的な構成のURLと、その後は、テスト手順を自己書かれたことができ、直接アクセスするブラウザを使用するか、もちろん、検出するために、Web脆弱性スキャンツールを使用します。

1 
2
3
4
5
6
7
8
http://somehost.com/../../../../../../../../../etc/passwd 
http://somehost.com/some/path? = ..ファイル/ .. SYSTEM.INIのの/ Windowsの/

00パーセント空の文字切り捨てで#は、攻撃の多くの古典的な方法である
http://somehost.com/some/path?file=../../Windows/system %が.INI 00.js

IISスクリプトディレクトリを使用して#をし、ディレクトリを移動するためのコマンドを実行
http://somehost.com/scripts/..%5c../Windows/System32/cmd.exe?/c+dir+c :\

この方法は、防衛やURLのパラメータが必要である  .././ ろ過などの文字をエスケープ。

物理パス開示

物理パスの開示は、その害は、一般的に、多くの場合、システムエラーエラーメッセージ500ページ目に見える原因に直接戻される「攻撃者は、システム上のさらなる攻撃に、情報を取得するために、この脆弱性を悪用」と記載されている、低リスクレベルの欠陥であります脆弱性。時々、あなたは、次のようないくつかの有用な情報、持って攻撃者への物理パスを取得することができます:システムファイルのディレクトリ構造の概要を説明し、それがシステムで使用されるサードパーティ製ソフトウェアを見ることができます。おそらく、有効なユーザ名を取得します(多くの人がサイトのディレクトリ名として自分のユーザー名を入れているため)。

これは良いエラーハンドリングバックエンドプログラム、特別なカスタム500エラーページの漏洩を防止することです。

ソースの脆弱性が公開します

そして、攻撃者によってその要求に類似した物理パスの開示は、あなたのサイトのバックエンドに直接ソースコードを入手することができ、あなたは、システム上のさらなる攻撃を学ぶことができます。だから、どのような露出されたソースコードを引き起こしているのですか?基本的には、サーバの設定に何が起こるか、ファイルサーバは、KOAのサービスは、通常のKOA指定されたディレクトリ・サーバーは、KOA-静的なミドルウェアによって静的リソースに行くことができます例えば、直接アクセスすることができますセットのパスを、することができ、静的リソースはルーティングパスを介してアクセスすることができるようになります。例えば、このようなあなたのシステムのソースコードのディレクトリ:

1 
2
3
4
5
| -プロジェクト
| - SRC
| -静的
| - ...
| - server.js

あなたは、静的なフォルダが静的リソースディレクトリをペアにしたい、あなたがする必要があり  server.js 、次のような構成を作るために:

1 
2
3
4
5
CONST興亜= (必要'KOAを'); 
CONSTサーブ= (必要'KOA-静的');
constのアプリ= 新しい興亜();

app.use(サーブ(__ dirnameは+ '/プロジェクト/静的'));

しかし、間違って、おそらく主要なイベント、などの静的リソースディレクトリの場合:

1 
2
// ... 
app.use(サーブ(__ dirnameは+ '/プロジェクト'));

だから、ソースコードのすべてが、すべてのサーバへの経路を介してアクセスすることができるという静的リソースメカニズムを提供し、そのサーバーを介して静的リソースディレクトリとパスを設定するとき、テスト、または可能性抜け穴を作成することであるに注意を払う必要があります。

最後に、我々は、コードのセキュリティ問題に注意し、Web開発者が独自のプライバシーコードを管理することを願って、このような製品は、外部のサードパーティのサイトに機密情報コードが含まれているか、外部のユーザーに公開、特にフロントエンドのコードは、プライベート、似ていませんコードまたはページに直接何かの機密性の出力を行います。おそらく、そこにその点は注目に値する多くのですが、ライブに安全に伸ばし、最終的な分析・フラナガン文字列で、精査の多くでなければなりませんコードの各行を扱います。

おすすめ

転載: www.cnblogs.com/bonelee/p/12499885.html