Security-testing-insecure-direct-object-reference
提供:Dev Guides
安全でない直接オブジェクト参照
開発者がファイル、ディレクトリ、データベースキーなどの内部実装オブジェクトへの参照を公開するときに、オブジェクトへの直接参照が発生する可能性があります。
単純な図を使用して、この欠陥の脅威エージェント、攻撃ベクトル、セキュリティの弱さ、技術的影響、ビジネスへの影響を理解しましょう。
例
アプリは、アカウント情報にアクセスしているSQL呼び出しで未検証のデータを使用します。
String sqlquery = "SELECT * FROM useraccounts WHERE account = ?";
PreparedStatement st = connection.prepareStatement(sqlquery, ??);
st.setString( 1, request.getParameter("acct"));
ResultSet results = st.executeQuery( );
攻撃者はブラウザのクエリパラメータを変更して、Adminを指すようにします。
http://webapp.com/app/accountInfo?acct=admin
ハンズオン
- ステップ1 *-Webgoatにログインし、アクセス制御の欠陥セクションに移動します。 目標は、tomcat-users.xmlが存在するパスに移動して、tomcat-users.xmlを取得することです。 以下は、シナリオのスナップショットです。
- ステップ2 *-ファイルのパスは「現在のディレクトリ」フィールドに表示されます-C:\ Users \ userName $ \。extract \ webapps \ WebGoat \ lesson_plans \ enそしてtomcat-users.xmlファイルはC:\ xampp \ tomcat \ confに保存されます
- ステップ3 *-現在のディレクトリから最後まで移動し、C:\ドライブから移動する必要があります。 Burp Suiteを使用してトラフィックを傍受することにより、同じことを実行できます。
- ステップ4 *-試行が成功すると、Tomcat-users.xmlに「おめでとうございます。 このレッスンは正常に完了しました。」
予防メカニズム
開発者は、次のリソース/ポイントをガイドとして使用して、開発フェーズ自体での安全でないオブジェクトの直接参照を防ぐことができます。
- 開発者は、間接オブジェクト参照に1人のユーザーまたはセッションのみを使用する必要があります。
- 信頼できないソースからの直接オブジェクト参照を使用する前に、アクセスを確認することもお勧めします。