


Cara menjalankan latihan jarak jauh dengan suntikan LDAP kotak lebah
Jika intipati SQL injection adalah splicing strings, maka intipati segala yang boleh disuntik adalah splicing strings tidak terkecuali sebagai sejenis suntikan juga menggabungkan kurungan, tetapi lebih konvensional untuk mengatakan bahawa ia menggabungkan rentetan).
Dalam bab konfigurasi persekitaran, konfigurasi persekitaran ldap dalam kotak lebah telah dibincangkan secara terperinci Bab latihan jarak tembak adalah lebih lanjut mengenai proses sambungan antara php dan ldap, dan pengenalan fungsi khas yang digunakan dalam proses. Beberapa petua untuk menyambung kurungan.
Mari kita bincangkan tentang proses log masuk julat menembak ldap di bwapp:
Pertama sekali, ini ialah antara muka log masuk LDAP, URL ialah http://192.168.3.184/bWAPP/ldap_connect.php, lihat apa yang tertulis dalam fail php ini.
Penjelasan terperinci tentang fungsi LDAP sambungan php
Bermula dari kod 133 fail ldap_connect.php, lima pembolehubah ialah $message, $login, $ kata laluan, $server, $dn.
Untuk apakah yang pertama daripada lima pembolehubah ini Yang kedua ialah nama pengguna untuk log masuk ke pelayan ldap, yang ketiga ialah kata laluan, yang keempat ialah alamat pelayan, dan yang kelima ialah nama yang terkenal (terangkan satu laluan LDAP penuh).
Pernyataan if pertama adalah untuk mengosongkan borang LDAP log masuk, dan pernyataan if kedua adalah untuk menentukan sama ada lima pembolehubah ini adalah nilai nol Perkara utama ialah perkara berikut else Pada permulaannya, terdapat beberapa pernyataan if and else Mari kita pergi satu persatu.
Pertama lihat tiga fungsi ldap_connect, ldap_set_option, ldap_bind sebelum yang pertama if, dan terangkan fungsi ketiga-tiga fungsi ini secara bergilir.
ldap_connect: digunakan untuk menyambung ke pangkalan data ldap, formatnya seperti berikut
$server = “localhost”
$LDAPCONN=LDAP_Connect($server)
Jika $ Nilai pulangan LDAPCONN ialah jenis angka Apabila hasil pulangan ialah 0, sambungan gagal dan apabila hasil pulangan ialah nilai lain, sambungan berjaya.
ldap_set_option($link_identifier,$option, &$retval): Menerima tiga parameter
$link_identifier
Pengecam sambungan LDAP dikembalikan oleh fungsi ldap_connect() (menentukan LDAP Sama ada sambungan berjaya)
Nilai yang boleh diterima untuk $option adalah seperti berikut:
LDAP_OPT_DEREF(int): Cara mengendalikan alias semasa mencari, julat nilai adalah seperti berikut: LDAP_DEREF_NEVER (0, nilai lalai), LDAP_DEREF_SEARCHING (1), LDAP_DEREF_FINDING(2), LDAP_DEREF_ALWAYS(3)
LDAP_OPT_NETWORK_TIMEOUT(int): Tamat masa rangkaian saat, LDAP_NO_LIMIT(0, nilai lalai) bermaksud tidak pernah tamat masa.
LDAP_OPT_PROTOCOL_VERSION(int): Menentukan versi protokol LDAP yang digunakan, julat nilai adalah seperti berikut: LDAP_VERSION2 (2, nilai lalai), LDAP_VERSION3 (3).
LDAP_OPT_REFERRALS(bool): Sama ada pustaka LDAP secara automatik mengikut rujukan yang dikembalikan oleh pelayan LDAP Julat nilai adalah seperti berikut: TRUE (1, nilai lalai), FALSE (0).
&$retval Pembolehubah yang menerima nilai pilihan
Sebagai contoh, kod dalam bwapp:
ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION, 3);
Ayat ini Maksud kod ialah jika sambungan ldap berjaya, maka nyatakan protokol yang digunakan oleh LDAP sebagai versi 3. (Tidak perlu terperinci di sini, semuanya adalah format yang berkenaan)
ldap_bind($link_identifier,$bind_rdn,$bind_password)
$link_identifier: LDAP sambungan pengecam dikembalikan oleh fungsi ldap_connect() (tentukan LDAP sama ada sambungan berjaya)
$bind_rdn: Gunakan rdn yang ditentukan, iaitu laluan log masuk, seperti cn=admin,dc=bwapp,dc=local
$ bind_password: Tentukan kata laluan log masuk.
ldap_search($link_identifier, $dn,$filter): Fungsi carian direktori LDAP, berjaya mengembalikan deskriptor sumber set hasil, yang biasanya dirujuk oleh fungsi lain sebagai $result_identifier dan mengembalikan FALSE apabila gagal.
$link_identifier: pengecam sambungan LDAP dikembalikan oleh fungsi ldap_connect() (untuk menentukan sama ada sambungan berjaya)
$dn: DN direktori yang hendak dicari
$filter: Cari penapis. Contohnya, "(objectClass=*)" bermaksud mencari semua entri (untuk fungsi baca, ia bermaksud semua atribut).
Kod sumber dalam bwapp: ldap_search($ds, $dn,$filter), di mana $ds=ldap_connect(),
$dn="DC=bwapp,DC=local", $filter=(cn=*) (iaitu, semua julat cn). Ketiga-tiga parameter ini menunjukkan bahawa fungsi ldap_search menunjukkan bahawa semua direktori pelayan semasa ditanya (berbanding dengan bwapp).
ldap_count_entries($link_identifier,$search): Mengembalikan bilangan hasil pertanyaan
$link_identifier: Pengecam sambungan LDAP dikembalikan oleh fungsi dap_connect() (untuk menentukan sama ada sambungan berjaya)
$search:= ldap_search($link_identifier, $dn, $filter) mengembalikan set hasil pertanyaan.
Pada ketika ini fungsi telah hampir dianalisis, mari kita lihat idea umum fail sambungan ini.
Dari baris 149 hingga 163, kod menentukan sama ada pelbagai nilai yang diperolehi adalah kosong Jika ia kosong, mesej segera dilemparkan.
Baris 165 hingga 198 digunakan untuk menentukan sama ada talian 165 hingga 184 digunakan untuk menentukan sama ada perkhidmatan ldap wujud ialah nama pembezaan (bersamaan dengan nama pangkalan data).
Dari baris 200 hingga baris 236 adalah untuk menentukan sama ada dn yang sepadan wujud, iaitu sama ada laluan ldap yang sepadan wujud Jika ia tidak wujud, mesej gesaan yang sepadan akan dilemparkan Jika wujud Panggil ldapi.php, iaitu pertanyaan ldap. Selepas mendapat keputusan pertanyaan dalam ldapi, hasilnya adalah output sebagai jadual.
Pengenalan kepada fail php hasil pertanyaan LDAP
Tempat di mana jadual dikeluarkan adalah dalam fail ldapi.php Seterusnya, lihat kod dalam ldapi.php.
Mulakan terus dari baris 231. Dari baris 231 hingga baris 240 semuanya disebutkan di atas di atas. Bahagian
Jika direktori LDAP berjaya diikat, pertanyaan akan bermula dari baris 242
Daripada menerima nilai pengguna parameter POST kepada mewujudkan alias ($search_field_1, $search_field_2, $search_field_3) dan menentukan penapis ($filter) (penapis ialah pernyataan pertanyaan, serupa dengan pernyataan sql) , peraturan sintaks adalah seperti berikut:
运算符 | 字符 | 用途 |
---|---|---|
等号 | = | 创建一个要求某一字段必须拥有给定值的过滤器。 |
任何 | * | 代表可以等于除 NULL 以外任何值的字段。 |
括号 | ( ) | 分离过滤器,以让其他逻辑运算符发挥作用。 |
与 | & | 结合过滤器。相应系列的所有条件都必须为真。 |
或 | | | 结合过滤器。相应系列中必须至少有一个条件为真。 |
非 | ! | 排除符合过滤条件的所有对象。 |
Kembalikan semua objek yang mungkin menyebabkan masalah pemuatan:
objectClass=*
Kembalikan semua objek pengguna yang dinyatakan sebagai "orang":
(&(objectClass =user) (objectCategory=person))
Kembalikan senarai mel sahaja:
(objectCategory=group)
Kembalikan folder awam sahaja:
(objectCategory=publicfolder)
Mengembalikan semua objek pengguna, tetapi tidak termasuk objek pengguna yang alamat e-mel utamanya bermula dengan "ujian":
(&(&(objectClass=user)(objectCategory=person ))(!(mail =test*)))
Mengembalikan semua objek pengguna kecuali objek yang alamat e-mel utamanya berakhir dengan "test":
(&(&(objectClass =user)(objectCategory=person))( !(mail=*test)))
Mengembalikan semua objek pengguna, tetapi tidak termasuk objek yang alamat e-mel utamanya mengandungi perkataan "test":
(&(&(objectClass=user)( objectCategory=person))(!(mail=*test*)))
Mengembalikan semua fail yang dinyatakan sebagai "orang" dan tergolong dalam kumpulan tertentu Atau tetapkan senarai semua objek pengguna dan objek alias:
(|(&(objectClass=user)(objectCategory=person))(objectCategory=group))
Mengembalikan semua objek yang dinyatakan sebagai objek pengguna "orang", semua objek kumpulan dan semua kenalan, tetapi kecualikan sebarang objek yang nilainya ditakrifkan sebagai "extensionAttribute9":
(&(|((|(&(objectClass=user)(objectCategory =person))(objectCategory=group))(objectClass=contact) )(!(extensionAttribute9=*)))
Kembalikan semua pengenalan DN (CN=GRoup,OU=Users,DC=Domain,DC) Pengguna yang merupakan ahli kumpulan:
( &(objectClass=user)(objectCategory=person)(memberof=CN=Group,CN=Users,DC=Domain,DC=com))
Mengembalikan semua pengguna:
Microsoft® Active Directory® LDAP Server: (&(objectCategory=person)(objectClass=user))
OpenLDAP™ Server: (objectClass=inetOrgPerson)
IBM® Notes®Domino LDAP Server: (objectClass= dominoPerson)
Cari IBM Notes Domino LDAP untuk semua objek yang alamat e-melnya ditakrifkan sebagai "orang" atau "kumpulan":
(&(|(objectClass=dominoPerson)(objectClass=dominoGroup) (objectClass=dominoServerMailInDatabase))(mail=*))
Direktori Aktif: Mengembalikan semua pengguna yang sah (tidak dinyahaktifkan) dengan alamat e-mel:
(&(objectCategory=person)(objectClass=user )(mail=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
Kembali ke semua kumpulan DN Kumpulan mengenal pasti pengguna yang menjadi ahli Kumpulan_1 atau Kumpulan_2.
(&(objectClass=user)(objectCategory=person)(|(memberof=CN=Group_1,cn=Users,DC=Domain,DC=com)(memberof=CN=Group_2,cn=Users, DC=Domain,DC=com)))
Mengembalikan semua pengguna yang nilai extensionAttribute1 ialah "Kejuruteraan" atau "Jualan"
(&(objectCategory=user)(|(extensionAttribute1=Engineering) (extensionAttribute1=Sales)))
Peraturan sintaks diperkenalkan, dan kemudian kod bermula dari 267 dianalisis
$ldap_fields_to_find mentakrifkan tatasusunan untuk memudahkan Cetak borang output dan terima hasil pertanyaan ldap Gunakan $ldap_fields_to_find sebagai parameter keempat fungsi ldap_search, yang bermaksud menggunakan alias ini untuk menyimpan hasil yang diterima, iaitu, dalam bentuk pasangan nilai kunci. , dan kemudian kembalikan hasil kepada tatasusunan $info , dan akhirnya memetakan setiap kunci kepada setiap pembolehubah dari baris 287 ke baris 291, dan akhirnya menggelungkan output dan mencetak jadual Pada ketika ini, pertanyaan selesai.
Pengenalan ringkas kepada sintaks penyambungan suntikan LDAP
Memandangkan penapis LDAP adalah serupa dengan pernyataan pertanyaan sql, lihat sahaja cara menulis penapis dalam bwapp. Lihat terus pada pembolehubah $filter dalam fail ldapi.php:
$filter="(|($search_field_1=$search_for)($search_field_2=$search_for)($search_field_3=$search_for))";
Intipati pernyataan sql terletak pada penyambungan petikan tunggal, dan intipati pernyataan ldap terletak pada penyambungan kurungan.
Sekarang saya ingin menanyakan semua pengguna, hanya masukkan * terus dalam pengguna, kemudian $filter akan menjadi $filter="(|($search_field_1=*)($search_field_2=*)($ search_field_3=*) )";
Tengok keputusan dalam bwapp
Banyak pengguna dipulangkan tetapi tidak cukup kerana saya ingin melihat pentadbir saya, maka saya akan bina penapis LDAP sedemikian.
$filter="(|($search_field_1=*)(objectclass=*)($search_field_2=*)($search_field_3=*))";
Dengan cara ini saya boleh menanyakan semua Bagi pengguna, termasuk pentadbir, objectclass=* bermaksud mencari selagi ia wujud, iaitu secara global.
Kemudian masukkan *)(objectclass=* pada pengguna.
Lihat hasilnya. Pentadbir muncul dan suntikan berjaya.
Atas ialah kandungan terperinci Cara menjalankan latihan jarak jauh dengan suntikan LDAP kotak lebah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



1. Suntikan LDAP LDAP (Light Directory Access Portocol) ialah protokol akses direktori ringan berdasarkan standard X.500 Ia menyediakan perkhidmatan dan protokol untuk mengakses pangkalan data direktori. Ia sering 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. Data yang tidak kerap diubah suai, seperti sijil awam, kunci keselamatan dan maklumat peranti fizikal syarikat, sesuai untuk penyimpanan dalam direktori. LDAP boleh difahami sebagai protokol carian, yang serupa dengan SQL dan mempunyai sintaks pertanyaan, tetapi juga mempunyai risiko serangan suntikan. Suntikan LDAP merujuk kepada pelanggan

Jika intipati suntikan sql adalah untuk menyambung rentetan, maka intipati segala yang boleh disuntik adalah untuk menyambungkan rentetan LDAP tidak terkecuali sebagai sejenis suntikan Apa yang lebih menarik adalah bahawa ia adalah kurungan splicing juga menggabungkan kurungan, tetapi lebih konvensional untuk mengatakan bahawa ia menggabungkan rentetan). Dalam bab konfigurasi persekitaran, konfigurasi persekitaran ldap dalam kotak lebah telah dibincangkan secara terperinci Bab latihan jarak tembak adalah lebih lanjut mengenai proses sambungan antara php dan ldap, pengenalan fungsi khas yang digunakan di tengah, dan. beberapa teknik penyambungan kurungan. Mari kita bincangkan dahulu tentang proses log masuk julat penangkapan ldap di bwapp: Pertama, ini ialah antara muka log masuk LDAP, URLnya ialah http://192.168.3.184/bW

1. Gambaran Keseluruhan Menurut proses pembelajaran saya, saya mesti tahu apakah model dan kelemahan serangan web saya Sekarang saya telah menghadapi situasi yang tidak dijangka menemui yang tidak popular (dibenarkan) dan menarik minat saya terhadapnya. Konsep LDAP: Nama penuh: Lightweight Directory Access Protocol (Lightweight Directory Access Protocol), ciri: Saya tidak akan bercakap tentang protokol, ia terlalu esoterik, ia boleh difahami sebagai pangkalan data untuk menyimpan data, ciri khasnya ialah ia adalah pokok Pangkalan data dalam bentuk pangkalan data Pertama, nama pangkalan data adalah bersamaan dengan akar pokok (iaitu DB=dc), dan kemudian proses dari akar ke nod daun adalah.

Apabila membangunkan aplikasi web menggunakan PHP, kita selalunya perlu menggunakan pengesahan LDAP untuk melindungi akses aplikasi. Walau bagaimanapun, dalam beberapa kes, apabila kami cuba menggunakan fungsi LDAP PHP untuk melaksanakan pengesahan, kami mungkin menghadapi mesej ralat berikut: "PHPFatalerror:Calltoundefinedfunctionldap_bind()". Mesej ralat ini biasanya berlaku apabila aplikasi memanggil fungsi ldap_bind().

Dengan peningkatan dalam kelemahan keselamatan rangkaian, serangan suntikan LDAP telah menjadi risiko keselamatan yang dihadapi oleh banyak tapak web. Untuk melindungi keselamatan tapak web dan mencegah serangan suntikan LDAP, beberapa langkah keselamatan perlu digunakan. Antaranya, Nginx, sebagai pelayan web berprestasi tinggi dan pelayan proksi terbalik, boleh memberikan kami banyak kemudahan dan perlindungan. Artikel ini akan memperkenalkan cara menggunakan Nginx untuk mencegah serangan suntikan LDAP. Serangan suntikan LDAP Serangan suntikan LDAP ialah kaedah serangan yang menyasarkan pangkalan data LDAP yang digunakan oleh penyerang

LDAP (LightweightDirectoryAccessProtocol) ialah protokol untuk mengakses perkhidmatan direktori teragih. Ia boleh digunakan untuk tugas seperti pengesahan pengguna, kebenaran, penyelenggaraan akaun dan penyimpanan data. Dalam aplikasi PHP, LDAP boleh digunakan sebagai mekanisme pengesahan yang berkuasa untuk menyediakan fungsi pengesahan dan kebenaran yang berkuasa untuk aplikasi. Artikel ini akan memperkenalkan cara menggunakan LDAP untuk pengesahan pengguna dalam PHP Kandungan khusus termasuk: Pemasangan dan konfigurasi L

Memandangkan isu keselamatan rangkaian semakin mendapat perhatian, semakin ramai pengaturcara mula memberi perhatian dan mempelajari cara menghalang kod daripada diserang. Antaranya, kaedah serangan biasa termasuk suntikan SQL, XSS, CSRF, dll. Walau bagaimanapun, terdapat satu lagi kaedah serangan biasa yang dipandang remeh: kelemahan suntikan LDAP. Artikel ini akan memperkenalkan prinsip kaedah serangan ini dan cara menggunakan PHP untuk mencegah kelemahan suntikan LDAP. LDAP pengenalan LDAP (LightweightDirectoryAccessProtocol)

Memandangkan skala perusahaan dan keperluan perniagaan terus berkembang, pengurusan dan kebenaran kumpulan pengguna telah menjadi bahagian penting. LDAP (Lightweight Directory Access Protocol), sebagai protokol perkhidmatan direktori yang digunakan secara meluas dalam rangkaian perusahaan, menyediakan cara yang cekap untuk melaksanakan pengurusan dan kebenaran kumpulan pengguna. Artikel ini akan memperkenalkan cara menggunakan PHP dan LDAP untuk melaksanakan pengurusan dan kebenaran kumpulan pengguna. 1. Apakah itu LDAP LDAP ialah protokol akses direktori ringan yang digunakan secara meluas sebagai protokol perkhidmatan direktori dalam rangkaian perusahaan. LDAP adalah berasaskan pelanggan/pelayan
