Web
Soal dalam kategori web sangat bervariasi dari segi kelemahan dan juga bahasa/teknologi yang dipakai. Daftar topik ini baru di permukaan saja, karena topiknya luas sekali.
Perlu dicatat juga beberapa kelemahan real world seperti unrestricted redirect biasanya tidak muncul di berbagai CTF karena sulit mencari skenario yang pas.
View source
Hal paling dasar yang perlu dilakukan adalah view source. Kadang ada petunjuk yang menyatakan di mana kita bisa mendapatkan source codenya. Misalnya diberi tahu bahwa source ada di file .phps
.
Check SSL
Jika sertifikat SSL tidak standar atau menimbulkan warning, coba cek sertifikatnya.
Tools
Gunakan burpsuite atau OWASP ZAP (favorit saya karena open source) untuk melihat request dan respons ke websitenya.
Gunakan wappalyzer untuk mengetahui stack teknologi apa yang dipakai (apa server/clientnya).
Directory busting (brute force direktori/file)) hanya perlu dilakukan jika sudah mentok. Sekitar 90% kasus CTF tidak perlu brute force direktori.
Saat ini kebanyakan soal masih memakai HTTP tapi sebentar lagi topik HTTP2 akan muncul. Saat ini saya banyak menggunakan curl
untuk testing awal. Di Google Chrome kita bisa mencopy as curl
untuk dipaste dan dimodifikasi di command line.
Ada banyak tips curl yang bisa dipelajari di tutorial ini
Test lokal
Jika source code diberikan (tentunya tanpa flag), lakukanlah testing lokal, ini merupakan cara testing tercepat.
HTTP
Di level protokol HTTP, perhatikan header dan terutama cookienya
Header
Beberapa soal sangat mudah: kita hanya perlu membaca flag di header, baik itu langsung, atau kadang diencode. Perhatikan juga jika ada header yang tidak standar. Untuk tahu yang mana yang "standar" dan tidak, Anda perlu melihat banyak situs.
Cookie
Beberapa soal CTF intinya adalah memanipulasi cookie agar kita bisa melewati pemeriksaan yang dilakukan. Manipulasinya bisa mudah (sekedar mengubah nilai) atau kadang ini berhubungan dengan kriptografinya.
XSS
Kita bisa mengecek berbagai XSS yang mungkin menggunakan cheatsheet ini:
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
Biasanya saya memakai "Filter bypass based polyglot" untuk melakukan pengecekan awal.
Attack kriptografi
Contoh yang cukup sering muncul: hash extension attack.
JSON web token (JWT)
Beberapa library versi awal memiliki bug memakai "alg":"none"
https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/
SQL Injection
Ini salah satu hal pertama yang layak dicoba. Cek jika ada hal tidak standar, misalnya biasanya orang memakai id=0
jika ada yang memakai versi encoded (misalnya base64) id=MQ%3d%3d
, maka ada kemungkinan bisa terkena SQL injection. Kasus seperti ini tidak hanya ditemui di CTF, tapi di banyak website.
Restriksi IP/Region
Jika dilakukan restriksi IP, maka kemungkinan bisa dibypass dengan HTTP Header
Local file inclusion
Kadang kita bisa mengeksekusi file yang kita upload.
Image upload
Jika memakai ImageMagick, rawan bug ini: (kebanyakan sekarang sudah dipatch)
https://blog.hrdn.us/how-i-hacked-imagetragick/
Cek apakah server menerima ekstensi file apa saja, contohnya: file ekstensi gambar (JPG_ bisa mengandung metadata atau data berupa skrip php <?php ?>
, jika ekstensinya tidak dicek (hanya dicek bahwa filenya JPG) dan ekstensinya PHP, server akan memparse dan mengeksekusi file itu.
Deserialization
Fungsi unserialize
di PHP, pickle
di Python, dan fungsi-fungsi lain sejenis itu rawan manipulasi.
Spesifik PHP
Ada beberapa hal yang spesifik PHP
strcmp(a, b)==0
akan mengembalikan true jika a atau b adalah arrayis_numeric(a)
bisa diberi parameter eksponen seperti9e10
- Beberapa fungsi regex bisa digunakan untuk eksekusi kode (seperti
eval
)
Setiap kali bertemu soal PHP biasanya saya akan membaca dokumentasi PHP untuk mengetahui sifat dari setiap fungsi yang digunakan (apakah menerima array, apakah menerima kosong, dsb) dan kemudian saya akan mengetes sifatnya secara lokal menggunakan php -a
(mode interaktif PHP di command line)
Contol soal
Northeastern univ
Soal strcmp php
http://blog.rentjong.net/2015/03/boston-key-party-2015-northeastern-univ.html
Symphony
Mengenai bilangan di PHP
http://blog.rentjong.net/2015/03/boston-key-party-2015-symphony.html
Prudential
Soal mengenai array di PHP
http://blog.rentjong.net/2015/03/boston-key-party-2015-prudential.html
Brigham Circle
Mengenai regex di PHP
http://blog.rentjong.net/2015/03/boston-key-party-2015-brigham-circle.html
Big Lie
Forensic PCAP, tapi perlu pengetahuan mengenai HTTP/WEB.
https://github.com/rentjongteam/write-ups-2015/tree/master/asis-finals-2015/biglie
MBTI
Forensic PCAP, butuh pengetahuan mengenai enkripsi standar, juga kemampuan programming
https://github.com/rentjongteam/write-ups-2015/tree/master/asis-finals-2015/mbti
Dalton's Corporate Security Safe for Business
Captcha yang digenerate di client, butuh programming untuk bisa menyelesaikan ini
http://blog.rentjong.net/2014/10/hacklu-ctf-2014-dalton-corporate.html
Dragon CTF 2014 Teaser (WEB400)
Soal web, tapi butuh pengetahuan mendalam tentang PHP dan juga enkripsi
http://blog.rentjong.net/2014/04/confidence-dragon-sector-ctf-teaser.html
Mtpox
Soal LFI
http://blog.rentjong.net/2014/04/plaidctf2014-write-up-mtpox-web150.html
Copyright © 2009-2018 Yohanes Nugroho