目次
1. LDAP インジェクション
3. サンプル コード
3.1 欠陥コード
3.2 修正コード
ホームページ 運用・保守 安全性 LDAP インジェクションを理解する方法

LDAP インジェクションを理解する方法

May 22, 2023 pm 09:47 PM
ldap

1. LDAP インジェクション

LDAP (Light Directory Access Portocol) は、X.500 標準に基づく軽量のディレクトリ アクセス プロトコルで、ディレクトリ データベース メソッドにアクセスするためのサービスとプロトコルを提供します。一般に、ディレクトリ データベースを使用してディレクトリ サービスを形成するために使用されます。このディレクトリは、クエリ、参照、検索用に最適化された専門的な分散データベースであり、Linux/Unix システムのファイル ディレクトリに似たツリー構造でデータを編成します。公開証明書、セキュリティ キー、会社の物理デバイス情報など、頻繁に変更されないデータをディレクトリに保存するのに適しています。 SQL と同様に、LDAP はクエリ構文を備えた検索プロトコルであり、潜在的なインジェクション攻撃のリスクがあります。 LDAP インジェクションとは、クライアントがクエリ リクエストを送信する際の入力文字列に特殊文字が含まれることで、LDAP の元のクエリ構造が変更され、より多くの不正なデータへのアクセスが可能になる攻撃方法を指します。

この記事では、JAVA 言語のソース コードを例として、CWE ID 90 の LDAP インジェクションの脆弱性: LDAP クエリで使用される特殊な要素の不適切な中和 (「LDAP インジェクション」) の原因と修復方法を分析します。サンプル。詳細については、次を参照してください:

  • CWE ID 90: LDAP クエリで使用される特殊要素の不適切な中和 ('LDAP インジェクション')

    http:/ /cwe .mitre.org/data/settings/90.html

  • CWE ID 639: ユーザー制御キーによる認証バイパス

    http://cwe.mitre. org/ data/settings/639.html

2. LDAP インジェクションの危険

LDAP インジェクションは、によって導入されます。ユーザーパラメータを使用すると、LDAP フィルタを構築することでアクセス制御とユーザー権限昇格をバイパスする悪意のある LDAP クエリが生成されます。通常のフィルターの構築を通じて、AND および OR 演算の挿入が実装され、機密情報が取得されます。

2018 年 1 月から 2019 年 1 月にかけて、CVE に関連する脆弱性情報が合計 4 件ありました。脆弱性の一部は次のとおりです。

##CVE 番号##CVE-2018-12689phpLDAPadmin 1.2.2 は cmd.php 経由で許可されますか? cmd=loginform リクエスト内の細工された serverid パラメータ、またはログイン パネル内の細工されたユーザー名とパスワードを使用した LDAP インジェクション。 CVE-2018-5730MIT krb5 1.6 以降では、認証された kadmin が「linkdn」および「containerdn」データベース パラメーターを指定することで、プリンシパルを LDAP Kerberos データベースに追加できます。 DN コンテナ チェックをバイパスするか、DN 文字列を DN コンテナ チェックの拡張として提供します。 CVE-2016-8750 4.0.8 より前の Apache Karaf は、LDAPLoginModule を使用して LDAP 経由でユーザーを認証します。ただし、ユーザー名は正しくエンコードされていないため、LDAP インジェクション攻撃に対して脆弱であり、結果としてサービス妨害が発生します。 CVE-2011-4069PacketFence html/admin/login.php 3.0.2 より前では、リモート攻撃者が認証をバイパスする細工されたユーザー名を介して LDAP インジェクション攻撃を実行できます。 。

3. サンプル コード

この例は、Samate Juliet Test Suite for Java v1.3 (https://samate.nist.gov/SARD/testsuite.php) からのものです。ソース ファイル名: CWE90_LDAP_Injection__connect_tcp_01.java。

3.1 欠陥コード

LDAP インジェクションを理解する方法LDAP インジェクションを理解する方法

上記のコード例 39 ~ 61 行目では、プログラムは TCP 接続を確立し、ソケットを読み取ります。 データは変数 data に割り当てられ、LDAP クエリ ステートメントが 118 行目で動的に構築され、119 行目で実行されます。 LDAP は、人事組織の共通オブジェクト クラスをカプセル化します。たとえば、個人には、姓 (sn)、名 (cn)、電話番号 (telephoneNumber)、パスワード (userPassword) などの属性が含まれます。このクエリは、変数 data という名前の従業員が存在するかどうかを確認するものですが、変数 data の内容に対してフィルタリングは実行されません。最も単純なインジェクション方法を使用すると、受信パラメータの値が「*」の場合、構築される動的クエリ条件は「(cn=*)」となり、全従業員の情報をクエリする可能性があり、情報漏洩につながります。

上記のサンプルコードを 360 Code Guard でテストした結果、「LDAP インジェクション」の脆弱性があることが判明し、セキュリティ レベルは高いと評価されました。データ汚染の原因とデータ フローの方向は、トレース パス分析を通じて取得でき、図 1


LDAP インジェクションを理解する方法

に示すように、コードの 120 行目で欠陥が報告されます。 #図 1: LDAP インジェクション検出の例

3.2 修正コード


LDAP インジェクションを理解する方法

上記の修正コードでは、119 行目で次のようになります。 javax.naming.ldap パッケージ下の拡張クラス BaseControl は、処理する必要があるパラメータを受け取ります (120 行目) control オブジェクトは、getEncodedValue( ) パラメータを受け取るメソッド data はエンコードされており、エンコードされた値は文字に対応する ASN.1BER エンコード値です。エンコードされたバイト配列にはコマンドの解析に関与する特殊文字が含まれていないため、通常の構造と内容を持つ LDAP クエリ ステートメントを構築できるため、LDAP インジェクションの発生を回避できます。

360 Code Guard を使用して修復されたコードを検出すると、「LDAP インジェクション」欠陥がないことがわかります。図 2 に示すように:


LDAP インジェクションを理解する方法

図 2: 修復後の検出結果

4. LDAP インジェクションを回避する方法

LDAP インジェクションの根本原因は、攻撃者が LDAP メタキャラクターを使用して LDAP クエリの意味を変更することです。 LDAP フィルタを構築するとき、プログラマはどの文字をコマンド解析として扱い、どの文字をデータ解析として扱うべきかを明確にする必要があります。攻撃者がプログラマの事前設定されたさまざまな状況に侵入するのを防ぐために、ホワイトリスト方式を使用して、LDAP クエリ内のユーザー制御の値が完全に事前に決定された文字セットからのものであり、LDAP メタ文字が含まれないようにする必要があります。ユーザー制御の数値範囲要件に LDAP メタキャラクタを含める必要がある場合は、対応するエンコード メカニズムを使用して、LDAP クエリ内のこれらのメタキャラクタの意味をエスケープする必要があります。 ###############のように&、! ,|,=,,,,,-,",',; これらの文字は通常の状況では使用されません。これらの文字がユーザーの入力に表示される場合は、バックスラッシュでエスケープする必要があります。

    #また、(,)、\、*、/、NUL などの文字も含まれます。これらの文字はバックスラッシュで処理するだけでなく、対応する ASCII コード値に変換する必要があります。 .
概要

以上がLDAP インジェクションを理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

LDAP インジェクションを理解する方法 LDAP インジェクションを理解する方法 May 22, 2023 pm 09:47 PM

1. LDAP インジェクション LDAP (Light Directory Access Portocol) は、X.500 標準に基づく軽量のディレクトリ アクセス プロトコルです。ディレクトリ データベースにアクセスするためのサービスとプロトコルを提供します。ディレクトリ データベースでディレクトリ サービスを形成するためによく使用されます。このディレクトリは、クエリ、参照、検索用に最適化された専門的な分散データベースであり、Linux/Unix システムのファイル ディレクトリに似たツリー構造でデータを編成します。公開証明書、セキュリティ キー、会社の物理デバイス情報など、頻繁に変更されないデータは、ディレクトリへの保存に適しています。 LDAP は、SQL に似ていてクエリ構文を備えた検索プロトコルとして理解できますが、インジェクション攻撃のリスクもあります。 LDAP インジェクションはクライアントを指します

Bee-box LDAP インジェクションを使用して範囲練習を行う方法 Bee-box LDAP インジェクションを使用して範囲練習を行う方法 May 13, 2023 am 09:49 AM

SQL インジェクションの本質が文字列の結合である場合、注入できるすべての本質は文字列の結合です。LDAP インジェクションも一種のインジェクションとして例外ではありません。さらに興味深いのは、括弧の結合であることです (SQL インジェクションは括弧も連結しますが、文字列を連結すると言ったほうが一般的です)。環境構築編ではbee-boxのldap環境構築について詳しく解説しており、射撃練習編ではphpとldapの接続処理や途中で使用する特殊機能の紹介、括弧を接続するためのいくつかのテクニック。まず、bwapp での LDAP 射撃場のログイン プロセスについて説明します。まず、これは LDAP ログイン インターフェイスであり、URL は http://192.168.3.184/bW です。

Bee-box LDAP インジェクションの環境を構成する方法 Bee-box LDAP インジェクションの環境を構成する方法 May 12, 2023 pm 08:37 PM

1. 概要 私の学習プロセスによれば、Web 攻撃のモデルと脆弱性が何であるかを知る必要がありました。今、私は予期せぬ状況に遭遇しました。私が初めて LDAP を目にしたのは、ある国営企業でのペネトレーション テスト中でした。人気のないもの(公認)を見つけて興味をそそられました。 LDAPの概念:正式名称:Lightweight Directory Access Protocol(Lightweight Directory Access Protocol)、特徴:プロトコルについては難解すぎるので説明しませんが、データを保存するデータベースとして理解できます、その特徴はそれはツリーです データベースの形式をとったデータベースです まず、データベースの名前はツリーのルート (つまり DB=dc) に相当し、ルートからリーフ ノードまでのプロセスは次のようになります。

PHP 致命的エラーの解決策: 未定義関数 ldap_bind() の呼び出し PHP 致命的エラーの解決策: 未定義関数 ldap_bind() の呼び出し Jun 22, 2023 pm 11:37 PM

PHP を使用して Web アプリケーションを開発する場合、多くの場合、アプリケーションのアクセスを保護するために LDAP 認証を使用する必要があります。ただし、場合によっては、PHP の LDAP 機能を使用して認証を実装しようとすると、次のエラー メッセージが表示されることがあります。このエラー メッセージは通常、アプリケーションが ldap_bind() 関数を呼び出したときに発生します。

Nginx を使用して LDAP インジェクション攻撃から保護する方法 Nginx を使用して LDAP インジェクション攻撃から保護する方法 Jun 10, 2023 pm 08:19 PM

ネットワーク セキュリティの脆弱性の増加に伴い、LDAP インジェクション攻撃は多くの Web サイトが直面するセキュリティ リスクとなっています。 Web サイトのセキュリティを保護し、LDAP インジェクション攻撃を防ぐには、いくつかのセキュリティ対策を使用する必要があります。中でも、Nginx は、高性能 Web サーバーおよびリバース プロキシ サーバーとして、多くの利便性と保護を提供します。この記事では、Nginx を使用して LDAP インジェクション攻撃を防ぐ方法を紹介します。 LDAP インジェクション攻撃 LDAP インジェクション攻撃は、LDAP データベースをターゲットとする攻撃手法です。

PHP でのユーザー認証に LDAP を使用する PHP でのユーザー認証に LDAP を使用する Jun 20, 2023 pm 10:25 PM

LDAP (LightweightDirectoryAccessProtocol) は、分散ディレクトリ サービスにアクセスするためのプロトコルです。ユーザーの認証、認可、アカウントの保守、データの保存などのタスクに使用できます。 PHP アプリケーションでは、LDAP を強力な認証メカニズムとして使用して、アプリケーションに強力な認証および認可機能を提供できます。この記事では、PHP でのユーザー認証に LDAP を使用する方法を紹介します。具体的な内容は次のとおりです。 インストールと構成 L

PHP を使用して LDAP インジェクションの脆弱性から保護する方法 PHP を使用して LDAP インジェクションの脆弱性から保護する方法 Jun 24, 2023 am 10:40 AM

ネットワーク セキュリティの問題がますます注目されるようになるにつれて、ますます多くのプログラマが注意を払い、コードの攻撃を防ぐ方法を学び始めています。その中でも一般的な攻撃手法としては、SQLインジェクション、XSS、CSRFなどが挙げられます。ただし、過小評価されているもう 1 つの一般的な攻撃手法が LDAP インジェクションの脆弱性です。この記事では、この攻撃手法の原理と、PHP を使用して LDAP インジェクションの脆弱性を防ぐ方法を紹介します。 LDAP の概要 LDAP (LightweightDirectoryAccessProtocol)

PHP と LDAP を使用してユーザー グループの管理と認可を実装する方法 PHP と LDAP を使用してユーザー グループの管理と認可を実装する方法 Jun 25, 2023 am 08:22 AM

企業の規模とビジネス ニーズが拡大し続けるにつれて、ユーザー グループの管理と承認は重要な部分になっています。 LDAP (Lightweight Directory Access Protocol) は、企業ネットワークで広く使用されているディレクトリ サービス プロトコルとして、ユーザー グループの管理と認可を実装する効率的な方法を提供します。この記事では、PHP と LDAP を使用してユーザー グループの管理と認可を実装する方法を紹介します。 1. LDAP とは LDAP は、企業ネットワークのディレクトリ サービス プロトコルとして広く使用されている軽量のディレクトリ アクセス プロトコルです。 LDAP はクライアント/サーバーベースです

See all articles