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 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

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 array
  • is_numeric(a) bisa diberi parameter eksponen seperti 9e10
  • 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)

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-2010 Yohanes Nugroho