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)
| Fitur | URL | Ringkasan |
|---|---|---|
| Home Page | / | Ringkasan layanan perusahaan dan foto staf |
| Latest News | /news | Daftar artikel berita terbaru, setiap artikel memiliki parameter id (contoh: /news/article?id=1) |
| News Article | /news/article?id=1 | Menampilkan artikel individual, beberapa artikel hanya untuk pelanggan premium |
| Contact Page | /contact | Form kontak dengan input: nama, email, pesan |
| Customers | /customers | Redirect ke halaman login pelanggan |
| Customer Login | /customers/login | Form login dengan username dan password |
| Customer Signup | /customers/signup | Form pendaftaran dengan username, email, password, konfirmasi password |
| Customer Reset Password | /customers/reset | Form reset password dengan input email |
| Customer Dashboard | /customers | Daftar tiket user dan tombol "Create Ticket" |
| Create Ticket | /customers/ticket/new | Form input masalah IT dan upload file |
| Customer Account | /customers/account | Edit username, email, password |
| Customer Logout | /customers/logout | Logout 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
2. Anchor Tag (Link)
Link dalam HTML menggunakan:
<a href="...">Parameter di dalam href sering menjadi target analisis, contoh:
/news/article?id=1Parameter seperti id bisa berpotensi:
- IDOR
- SQL Injection
- Akses tidak sah
3. Hidden Link
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.txtdapat 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

https://10-49-136-122.reverse-proxy.cell-prod-ap-south-1b.vm.tryhackme.com/tmp.zip
- What is the framework flag?
- https://LAB_WEB_URL.p.thmlabs.com/<file.zip> - Find the file on the framework changelog page.
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)
- Klik kanan pada notifikasi premium
- Pilih Inspect
- Cari elemen:
div class="premium-customer-blocker" - Pada bagian CSS, temukan:
display: block; - 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:
- Buka Developer Tools
- Masuk ke folder assets
- 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:
- Klik nomor baris
flash['remove'](); - Baris akan berubah warna (breakpoint aktif)
- 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

- 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:
- Buka Developer Tools
- Pilih tab Network
- 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:
- Buka tab Network
- Isi form kontak
- 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
/loginmenjadi/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.txtKenapa 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:
- Buka Firefox di AttackBox
- Akses:
https://static-labs.tryhackme.cloud/sites/favicon/ - Perhatikan favicon di tab browser
- Lihat Page Source
- Temukan link:
images/favicon.ico
Mengambil Hash Favicon (Linux)
Gunakan perintah:
curl https://static-labs.tryhackme.cloud/sites/favicon/images/favicon.ico | md5sumOutput:
- 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 MD5Kenapa 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
# f276b19aabcb4ae8cda4d22625c6735fwindows
curl https://static-labs.tryhackme.cloud/sites/favicon/images/favicon.ico -UseBasicParsing -o favicon.ico
Get-FileHash .\favicon.ico -Algorithm MD5- gunakan website ini wiki.owasp.org/index.php/OWASP_favicon_database untuk mencari tahu framework apa yang digunakan berdasarkan hash favicon yang didapatkan.
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 -vOpsi -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}