MissingCSRFTokenthatcouldIllegallySendaMessage
August29th,2016
@YoKoAcc([email protected])
[IndonesianVersion]
MissingCSRFTokenthatcouldIllegallySendingaMessage|page|2
RevisionDetail
Version Date Detail
0.1 August29th,2016 -
MissingCSRFTokenthatcouldIllegallySendingaMessage|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....................................................................................................................................9
TableofFigures
Figure1FiturBerkirimPesanpadaTokopedia.......................................................................................4
Figure2MessagewasSentSuccessfully................................................................................................6
Figure3SuccessSendingaMessageviaCSRF.......................................................................................7
MissingCSRFTokenthatcouldIllegallySendingaMessage|page|4
I. ABSTRACT
Berkirimpesan di dalam transaksi jual belimerupakan suatu hal yang lumrah dilakukan baik oleh
pembelimaupunpenjual.Didalamrealita,pengirimanpesaniniditujukandenganbanyakkebutuhan
baikdengantujuanbertanya,konfirmasipembelian/penjualan,ataupunpemberianinformasisensitif
sepertinomorrekeninguntukprosespembayaran.
Figure1FiturBerkirimPesanpadaTokopedia
AkantetapipermasalahanmunculketikaTokopediabelummemberikanperlindunganberupaunique
tokenpadafiturmengirimpesanini.Denganmemanfaatkankerentananini,makaseorangAttacker
yang berhasilmembawa pengguna ke halaman palsu yang dituju akan dapatmembuat pengguna
dimaksud untuk mengirim pesan secara tidak langsung kepada pengguna yang diharapkan oleh
Attacker.Sebagaicontohnyayaituseorangpenjualterpecayadiperdayauntukmengunjungihalaman
tertentudariAttackersehinggasecaratidak langsungdanotomatismengirimkanpesanpalsu(dari
Attacker)kepadapembelinyamengenainilaijualberikutrekeningpalsu.
MissingCSRFTokenthatcouldIllegallySendingaMessage|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 “memaksa”
korbannya mengirim pesan kepada pengguna lain dikarenakan belum terdapatnya perlindungan
berupauniquetoken.
IV. INFORMATIONANDSITUATIONOFTHISPOC
Untukdapatmemahamidenganbaikakanpermasalahanyangada,padabagianiniakandisampaikan
kembali secara spesifikmengenaibeberapa informasi yangberkaitandenganprosesyangberjalan
secaraumumdariaplikasimaupunakardaripermasalahanyangada.
Tokopediamemilikibeberapahalyangdi-requestmenujuserveruntukdapatmelakukanbeberapa
hal,yaitu:
4.1. message_subject:Merupakanparameteryangberisikaninformasimengenaijudulpesanyang
ingindikirimkanseorangpenggunakepadapenggunalain;
4.2. message : Merupakan parameter yang berisikan informasi mengenai isi pesan yang ingin
dikirimkan;
MissingCSRFTokenthatcouldIllegallySendingaMessage|page|6
4.3. action:merupakanparameteryangdigunakanuntukmemerintahaplikasiuntukmengirimpesan
baru;
4.4. friend_id: merupakan parameter yang berisikan informasi mengenai nomor ID terdaftar dari
penggunayangdituju.
Adapuncontohrequestyangdikirimkanterkaitprosespengirimanpesaniniyaitusebagaiberikut:
POST/ajax/people-4.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:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:en-US,en;q=0.5
Accept-Encoding:gzip,deflate,br
Cookie:someofcookiesvaluehere
Connection:close
Content-Type:application/x-www-form-urlencoded
Content-Length:124
message_subject=Halooo&message=You+sent+an+illegal+message+to+Dicky&action=event_dialog_new_message&friend_id=11340826&shop=
Table1RequestforSendingaMessage
Dalamkonteksini,Attackerdapatmenggantisetiapvalueyangdiberiwarnamerahuntukkeperluan
fraud yang ingin dilakukan kepada korbannya. Ketika pengiriman pesan berhasil dilakukan, maka
aplikasiakanmengeluarkanresponssepertiberikutini:
Figure2MessagewasSentSuccessfully
MissingCSRFTokenthatcouldIllegallySendingaMessage|page|7
V. STEPTOREPRODUCE
5.1. Persiapkanterlebihdahulukorbanyangingindituju.Dalamsituasiini,ketikaseorangAttacker
telahmenentukantargetnya,makaAttackerhanyaperlumencariIDdaripenggunadimaksud.
Seperti yang telah dijelaskan pada report terkait enumerasi nama pemiliki rekening bank,
informasi mengenai nomor ID ini dapat diperoleh Attacker dengan mengunjungi halaman
https://www.tokopedia.com/people/XdenganXmerupakanparameteryangdapatdigantikan
dengan angka. Setelah berhasil memperoleh nomor ID ini, maka Attacker hanya perlu
memasukannyakedalamparameter“friend_id”padascriptyangtelahdipersiapkan.
5.2. LangkahberikutnyayaituAttacker“diharuskan”untukmenentukansubjekpesandanisipesan.
Sebagaicontoh,seorangAttackeringinmembuatYongkimengirimpesankepadaDicky,maka
.htmlscriptsederhanayangperludibuatadalahsebagaiberikut:
<html>
<body>
<formaction="https://www.tokopedia.com/ajax/people-4.pl?aws=1"method="POST">
<inputtype="hidden"name="message_subject"value="Halooo"/>
<inputtype="hidden"name="message"value="YousentanillegalmessagetoDicky"/>
<inputtype="hidden"name="action"value="event_dialog_new_message"/>
<inputtype="hidden"name="friend_id"value="11340826"/>
<inputtype="hidden"name="shop"value=""/>
<inputtype="submit"value="Submitrequest"/>
</form>
</body>
</html>
Table2Simple.htmlScript–SendingaMessagefromYongkitoDicky
5.3. Setelah itu,Attackerhanyaperlumenunggu korbanmengunjungiURL yang telahdisiapkan.
Ketika korbanmengunjungihalamandimaksud,maka korbanpunakanmendapati tampilan
berikutini:
Figure3SuccessSendingaMessageviaCSRF
MissingCSRFTokenthatcouldIllegallySendingaMessage|page|8
VI. ADDITIONALINFORMATION
Untuk dapat memaksimalkan informasi yang disampaikan pada laporan ini, berikut ini terlampir
beberapakondisitambahanyangperludiperhatikan:
6.1. .htmlfileyangdipersiapkansepertipadatable2dapat“dieksekusi”olehpenggunamanapun
yangsedangdalamkeadaanlogin.Dalamkonteksini, isipesanakantetapsamasepertiyang
telah ditentukan oleh Attacker. Bentuk lain pemanfaatan hal ini yaitu denganmengirimkan
pesanyangberisikanmaliciousprogramdariseorangpenjualataupenggunaterpercaya;
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/-sRfMsRB8nY
VII. RECOMMENDATION
Dalamhalini,penambahanparametertokenyangbersifatunikdisetiappengirimanactiontertentu
akanmenjadirekomendasiyangdapatditerapkanuntukmenutupikerentananyangada.
PenggunaanCAPTCHApadadasarnyamemangsudahcukupdalammenanganihalini,namunperlu
menjadi catatan bahwapenggunaanCAPTCHA ini sendiri dapatmemberikan sedikit dampak tidak
menyenangkankepadaparapenggunakarenamerekadiharuskanbertemudengansuatuhal yang
menyulitkanmerekadalammengirimpesan.Jadi,penggunaanuniquetokenyangdisisipkandengan
actiontertentutentusudahcukupmenutupikerentananyangada.
Penggunaan CAPTCHA baru akan efektif apabila pihak Tokopedia hendak membatasi seorang
pengguna dalammengirim pesan yang banyak dalam satu waktu yang berdekatan. Perlu diingat
bahwafiturCAPTCHAinimerupakanfituryangpadadasarnyadigunakanuntukmembedakanantara
kegiatanmesinataukegiatanmanusia.
Kesimpulansederhana:
7.1. Ketikainginmembatasiaktivitasmesin(sepertiaktivitasautomationscannerataupunautomation
request),makafiturCAPTCHAdapatbermanfaatdenganbaik.Akanatetapi,dalamkonteks ini,
“userfriendly”akanmenjadipertimbanganutama;
7.2. Ketika inginmelindungipenggunadariadanyapengirimanpesan illegal secaraotomatis,maka
pemberianuniquetokendisetiapactiontentuakanbermanfaatdenganbaik.
MissingCSRFTokenthatcouldIllegallySendingaMessage|page|9
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)