Celah Dos pada Regex (ReDos)


Regular Expression (REGEX) adalah konstruksi bahasa untuk mencocokkan teks berdasarkan pola tertentu, terutama untuk kasus-kasus kompleks. Contoh misalkan mencari teks berawalan karakter tertentu, memiliki jumlah perulangan dari suatu teks, dan lain sebagainya. Selain itu, REGEX juga sangat manjur (powerful) terutama untuk proses penguraian kata (text parsing). Salah satu penggunaan regex yang paling sering dijumpai pada web apps adalah pada fitur form email dimana jika ada user yang memasukkan email akan divalidasi apakah sudah menggunakan format yang benar ([email protected])


Denial of Service atau yang biasa dipanggil DoS adalah penyerangan dengan cara membuat targetnya menjadi overload sehingga membuat sistem tidak memiliki cukup ruang untuk berjalan seperti normal dan menyebabkan para user tidak bisa mengaksesnya.

Oke, Sekarang mari kita belajar teknik dos regex.

Reconnaissance
Jika kalian berfikir semua form email menggunakan regex untuk melakukan filtering maka kalian salah, untuk itu kita bisa melakukan percobaan untuk melihat apakah fitur ini memiliki celah Dos

Disediakan satu fitur check email pada sebuah webite.


Ketika kita masukkan email yang valid, maka respond akan seperti berikut.

Dan jika kita memasukkan email yang salah maka akan ada respond seperti berikut.

Didapat kesimpulan aplikasi menggunakan regex untuk mengidentifikasi email yang valid. Regex mencoba menemukan pola kombinasi dalam teks:

match = re.search(r"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@{1}([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$", str(email))

Exploitasi
Pertama mari kita lihat apakah situs tersebut rentan terhadap redos, dengan cara inspect element (ctrl+shift+i) dan masuk ke bagian network.

Setelah itu coba lakukan invalid post data dan lihat time (ms) pada inspect element, contoh:

Sekarang kita coba post invalid data dengan legth char yang lebih panjang

Setelah kita post ternyata loading web menjadi lebih lama dari sebelumnya, inilah ciri website yang memiliki kerentanan dos regex,

Attacking
Kalian bisa menambah legth menjadi sangat panjang atau mengunakan looping post untuk membuat situs atau app crash.
Mungkin itu saja untuk artikel kali ini, jika ada yang kurang dipahami atau ingin bertanya silahkan menghubungi kami via fanspage.

Catatan: Hanya anggota dari blog ini yang dapat mengirim komentar.