Rumah > Operasi dan penyelenggaraan > Keselamatan > Bagaimana untuk memahami suntikan LDAP

Bagaimana untuk memahami suntikan LDAP

王林
Lepaskan: 2023-05-22 21:47:13
ke hadapan
3123 orang telah melayarinya

1. Suntikan LDAP

LDAP (Light Directory Access Portocol) ialah protokol akses direktori ringan berdasarkan standard X.500, menyediakan perkhidmatan dan protokol untuk mengakses kaedah pangkalan data direktori. Biasa digunakan untuk membentuk perkhidmatan direktori dengan pangkalan data direktori. Direktori ialah pangkalan data teragih profesional yang dioptimumkan untuk pertanyaan, menyemak imbas dan carian Ia mengatur data dalam struktur pokok, serupa dengan direktori fail dalam sistem Linux/Unix. Ia sesuai untuk menyimpan data yang tidak kerap berubah, seperti sijil awam, kunci keselamatan dan maklumat peranti fizikal syarikat, dalam direktori. Sama seperti SQL, LDAP ialah protokol carian dengan sintaks pertanyaan dan risiko kemungkinan serangan suntikan. Suntikan LDAP merujuk kepada kaedah serangan di mana rentetan input apabila klien menghantar permintaan pertanyaan mengandungi beberapa aksara khas, menyebabkan struktur pertanyaan asal LDAP diubah suai, dengan itu membenarkan akses kepada lebih banyak data yang tidak dibenarkan.

Artikel ini mengambil kod sumber bahasa JAVA sebagai contoh untuk menganalisis punca dan kaedah pembaikan kerentanan suntikan LDAP dalam CWE ID 90: Peneutralan Tidak Betul Elemen Khas yang digunakan dalam Pertanyaan LDAP ('Suntikan LDAP') sampel. Untuk butiran, sila lihat:

  • CWE ID 90: Peneutralan Tidak Betul Elemen Khas yang digunakan dalam Pertanyaan LDAP ('Suntikan LDAP')

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

  • ID CWE 639: Pintasan Kebenaran Melalui Kunci Kawalan Pengguna

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

2 Bahaya suntikan LDAP

Suntikan LDAP diperkenalkan. oleh pengguna Parameter menjana pertanyaan LDAP berniat jahat untuk memintas kawalan akses dan peningkatan keistimewaan pengguna dengan membina penapis LDAP. Melalui pembinaan penapis biasa, suntikan operasi DAN dan ATAU dilaksanakan untuk mendapatkan maklumat sensitif.

Dari Januari 2018 hingga Januari 2019, terdapat sejumlah 4 maklumat kerentanan yang berkaitan dengannya dalam CVE. Beberapa kelemahan adalah seperti berikut:

CVE 编号 概述
CVE-2018-12689 phpLDAPadmin 1.2.2 允许通过 cmd.php?cmd = loginform 请求中精心设计的 serverid 参数或登录面板中精心设计的用户名和密码进行 LDAP 注入。
CVE-2018-5730 MIT krb5 1.6 或更高版本允许经过身份验证的 kadmin 将主体添加到 LDAP Kerberos 数据库,以通过提供 “linkdn” 和 “containerdn” 数据库参数来绕过DN容器检查,或者通过提供作为扩展的DN字符串来绕过 DN 容器检查。
CVE-2016-8750 4.0.8 之前的 Apache Karaf 使用 LDAPLoginModule 通过 LDAP 对用户进行身份验证。但是没有正确编码用户名,因此容易受到 LDAP 注入攻击,导致拒绝服务。
CVE-2011-4069 PacketFence 3.0.2 之前的 html / admin / login.php 允许远程攻击者进行 LDAP 注入攻击,从而通过精心设计的用户名绕过身份验证。

3. Kod sampel

Sampel datang daripada Samate Juliet Test Suite untuk Java v1.3 (https://samate.nist.gov/SARD/testsuite.php), sumber Nama fail: CWE90_LDAP_Injection__connect_tcp_01.java.

3.1 Kod Kecacatan

Bagaimana untuk memahami suntikan LDAPBagaimana untuk memahami suntikan LDAP

Dalam baris 39-61 kod contoh di atas, atur cara membuat sambungan TCP dan membaca Soket Data diberikan kepada pembolehubah data, pernyataan pertanyaan LDAP dibina secara dinamik pada baris 118 dan dilaksanakan pada baris 119. LDAP merangkum kelas objek biasa untuk organisasi kakitangan Sebagai contoh, seseorang mengandungi atribut seperti nama akhir (sn), nama pertama (cn), nombor telefon (Nombor telefon) dan kata laluan (userPassword). Pertanyaan ini adalah untuk mengesahkan sama ada terdapat pekerja bernama pembolehubah data, tetapi ia tidak melakukan sebarang penapisan pada kandungan pembolehubah data. Menggunakan kaedah suntikan yang paling mudah, jika nilai parameter masuk ialah "*", maka keadaan pertanyaan dinamik yang dibina ialah "(cn=*)", yang boleh menanyakan maklumat semua pekerja, yang membawa kepada kebocoran maklumat.

Selepas menguji kod sampel di atas dengan 360 Code Guard, didapati terdapat kelemahan "suntikan LDAP" dan tahap keselamatan dinilai sebagai tinggi. Sumber pencemaran data dan arah aliran data boleh diperolehi melalui analisis laluan surih dan kecacatan dilaporkan pada baris 120 kod, seperti ditunjukkan dalam Rajah 1. Contoh pengesanan


3.2 Kod pembaikanBagaimana untuk memahami suntikan LDAP

Dalam kod pembaikan di atas, baris 119 dibungkus dengan

Kelas lanjutan

menerima parameter yang perlu diproses pada baris 120 , objek
memanggil kaedah Bagaimana untuk memahami suntikan LDAP untuk mengekod parameter yang diterima

Nilai yang dikodkan ialah

nilai pengekodan yang sepadan dengan aksara. Tatasusunan bait yang dikodkan tidak mengandungi aksara khas yang terlibat dalam penghuraian arahan, dan pernyataan pertanyaan LDAP dengan struktur dan kandungan biasa boleh dibina, dengan itu mengelakkan berlakunya suntikan LDAP. javax.naming.ldapBaseControlGunakan 360 ​​Code Guard untuk mengesan kod yang telah dibaiki dan anda dapat melihat bahawa kecacatan "suntikan LDAP" tidak lagi wujud. Seperti yang ditunjukkan dalam Rajah 2: controlgetEncodedValue()dataASN.1BER

Rajah 2: Hasil pengesanan selepas pembaikan


4. Cara mengelakkan suntikan LDAPBagaimana untuk memahami suntikan LDAP

Punca suntikan LDAP ialah penyerang menggunakan aksara meta LDAP untuk mengubah suai maksud pertanyaan LDAP. Apabila membina penapis LDAP, pengaturcara perlu menjelaskan aksara yang harus dianggap sebagai penghuraian arahan dan aksara yang harus dianggap sebagai penghuraian data. Untuk mengelakkan penyerang daripada melanggar pelbagai situasi pratetap pengaturcara, kaedah senarai putih harus digunakan untuk memastikan nilai yang dikawal pengguna dalam pertanyaan LDAP datang sepenuhnya daripada set aksara yang telah ditetapkan dan tidak boleh mengandungi sebarang aksara meta LDAP. Jika keperluan julat berangka yang dikawal pengguna mesti mengandungi aksara meta LDAP, mekanisme pengekodan yang sepadan harus digunakan untuk mengelakkan maksud aksara meta ini dalam pertanyaan LDAP.

Suka &,! , |, =, ,,, +, -, ", ',; aksara ini tidak digunakan dalam keadaan biasa. Jika ia muncul dalam input pengguna, ia perlu dilepaskan dengan garis miring ke belakang.

    Terdapat juga aksara seperti (,),,*,/,NUL yang bukan sahaja perlu dirawat dengan garis miring ke belakang, tetapi juga perlu ditukar kepada nilai kod ASCII yang sepadan
  • .

Atas ialah kandungan terperinci Bagaimana untuk memahami suntikan LDAP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan