Pemindai situs web dasar untuk subhalaman dengan Python
Halo semuanya! Pada artikel hari ini, saya akan berbicara tentang bagaimana kita dapat membuat versi sederhana dari alat yang dapat digunakan dalam pengujian penetrasi untuk menemukan subhalaman yang ada untuk situs web. Seperti judulnya, saya akan menggunakan Python, tetapi ini tidak wajib, karena bisa dilakukan dalam bahasa lain juga.
● Apa yang dilakukan pemindai situs web?
Tujuan dari jenis pemindai ini adalah untuk mendeteksi apakah ada subhalaman tertentu di situs web tertentu. Jika Anda sudah familiar dengan istilah serangan brute force untuk kata sandi, prinsipnya hampir sama, hanya saja alih-alih kata sandi Anda memiliki subhalaman.
Ada 2 bagian wajib: situs web tempat pemindaian harus dilakukan dan file teks yang berisi daftar kemungkinan subhalaman.
● Sebuah contoh sederhana untuk pemahaman yang lebih baik
Mari pertimbangkan https://www.nicevintagecars.com sebagai situs web kami (hipotetis, tidak ada). Cukup sederhana, hanya dengan 4 item di menu: Home , About , Gallery dan Contact . Jika seseorang menjelajahi situs tersebut, dia hanya akan menemukan halaman yang disebutkan di atas. Namun, itu tidak secara otomatis berarti hanya itu yang tersedia. Terkadang, hal-hal ada, meski tidak terlihat.
Kami mendapatkan salah satu dari 2 elemen yang diperlukan, masih ada satu lagi yang tersisa. Berkas teks kita dapat terdiri dari beberapa kemungkinan subhalaman: admin , secret , luxury , auction , dan owner .
Berdasarkan 2 komponen contoh kami, pemindai akan menguji keberadaan tautan berikut:
▪ https://www.nicevintagecars.com/admin
▪ https://www.nicevintagecars.com/secret
▪ https://www.nicevintagecars.com/luxury
▪ https://www.nicevintagecars.com/auction
▪ https ://www.nicevintagecars.com/owners
Beberapa dari mereka mungkin ada, beberapa tidak. Atau mungkin tidak ada satupun yang ada. Tetapi pemindai dapat membantu kami menemukan.
● Bagaimana kami mengetahui apakah suatu halaman ada?
Anda akan mengatakan Anda cukup mengetik tautan di browser, tekan <Enter> dan lihat apakah ada sesuatu yang muncul. Yang mana yang benar. Tapi itu bukan pilihan yang cocok untuk program kami. Ini bukan solusi yang layak bahkan untuk Anda, jika daftar Anda panjangnya 1000 baris.
Kisah di balik pemeriksaan ini adalah: ketika klien mengakses halaman web di browser mereka, klien mengirimkan permintaan ke server tempat situs web dihosting. Dalam permintaan itu, ia menuntut sumber daya. Server mengirimkan kembali tanggapan dan, berdasarkan kode status yang diterima, hasilnya ditentukan. Jika 200, halaman dimuat dengan baik (ini adalah kode yang paling umum). Kode status 404 menyiratkan tidak menemukan halaman.
Halaman dapat ada di situs web, meskipun kode status yang diterima bukan 200. Misalnya, Anda bisa mendapatkan 401 atau 403. Ini tidak berarti halaman tersebut tidak ditemukan, Anda hanya tidak diautentikasi atau tidak sah.
● Langkah-langkah dalam algoritme kami
Ada 3 fase yang saya anggap penting:
▪ mendapatkan masukan
Seperti yang dikatakan, kita perlu mengatur 2 item yang diperlukan, halaman web dan daftar direktori (atau bahkan file, ini juga berfungsi dalam kasus ini).
▪ membuat daftar lengkap URL yang akan dipindai
Pada langkah ini, untuk setiap baris dalam file teks kita, kita akan mengambil nilai tersebut dan menambahkannya di akhir URL utama, memisahkannya dengan karakter “/”. Selanjutnya, kami akan menyimpan tautan terakhir dalam variabel tipe daftar.
▪ mengirim permintaan untuk setiap URL dan menentukan statusnya
Sebagai langkah terakhir, kami akan mengambil daftar yang dibuat sebelumnya dan menguraikannya. Untuk setiap tautan, kami akan mengirimkan permintaan dapatkan dan memverifikasi apakah kode statusnya 200. Jika demikian, kami hanya akan menunjukkan bahwa tautan itu valid.
Ada pendekatan berbeda yang saya miliki saat membuat versi lanjutan dari alat ini. Saya tidak memfilter hasil dengan kode status 200, saya hanya mengecualikan yang dengan 404. Seperti yang saya nyatakan sebelumnya, beberapa halaman ada meskipun kode statusnya bukan 200.
Anda dapat menemukan versi ini di profil GitHub saya, menggunakan tautan di bawah ini:
● Mengkodekan program kami
Kode yang akan saya sajikan di sini adalah kode dasar, minimum yang diperlukan agar alat ini berfungsi.
Menurut langkah-langkah yang disajikan sebelumnya, hal pertama yang harus dilakukan adalah mendapatkan input kami. Saya telah membuat 2 variabel untuk menyimpan masing-masing dari 2 item tersebut, tetapi juga mengimpor modul permintaan . Kami akan membutuhkan ini nanti ketika kami akan mengirimkan permintaan get. Pertimbangkan ini bukan modul Python default, jadi Anda harus menginstalnya terlebih dahulu.
import requests
# Define variables
main_url = "https://www.nicevintagecars.com"
wordlist = "directories.txt" # Directories must be each on a different row
# Create list of URLs to scan
full_url_list = []
dirs = open(wordlist, 'r')
for directory in dir:
url = main_url + "/" + directory.strip()
full_url_list.append(url)
# Send get requests to URLs
print("Scan started...\n")
for url in full_url_list:
url_request = requests.get(url)
if url_request.status_code == 200:
print("Found:", url)
print("\nScan finished!")
Dalam video di bawah ini, Anda dapat melihat seluruh tutorial tempat saya membuat pemindai ini, menjalankannya, dan juga memverifikasi hasil yang saya peroleh. Lihat!
● Penafian
Artikel ini hanya untuk tujuan pendidikan. Penggunaan alat untuk menyerang target tanpa persetujuan bersama sebelumnya adalah ilegal. Saya tidak bertanggung jawab dan saya tidak bertanggung jawab atas penyalahgunaan atau kerusakan yang disebabkan oleh alat ini.
Itu saja untuk saat ini, saya harap Anda menikmatinya. Terima kasih atas waktu yang Anda luangkan untuk membaca ini! Sampai jumpa di artikel saya selanjutnya!

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































