Cara Membuat Tool Scanner Clickjacking dengan Python
Clickjacking merupakan metode yang digunkan oleh ettacker untuk mengelabui user, hal ini biasanya dilakukan dengan menyematkan situs web yang sah di dalam iframe yang tidak terlihat dan melapisinya di atas halaman yang berbahaya. Saat pengguna berinteraksi dengan halaman tersebut, mereka tanpa sadar melakukan tindakan pada situs yang disematkan, seperti menyukai kiriman, mengirimkan formulir, atau bahkan melakukan transaksi.
Clickjacking juga dapat di gunakan untuk
- Pencurian Data : Penyerang dapat memanfaatkan clickjacking untuk mencuri informasi sensitif dengan menipu pengguna agar mengirimkan formulir atau memasukkan kredensial.
- Distribusi Malware : Clickjacking dapat digunakan untuk mengunduh dan mengeksekusi malware di komputer korban.
Tips Melindungi diri dari clickjacking
Untuk dapat melindungi diri dari clickjacking seorang developer dapat menggunakan header HTTP tertentu yang mengontrol cara situs web disematkan dalam bingkai. Header utamanya adalah:
1. X-Frame-Options : Header ini memiliki tiga nilai:
- DENY: Mencegah halaman ditampilkan dalam iframe.
- SAMEORIGIN: Mengizinkan halaman dibingkai hanya oleh halaman-halaman pada asal yang sama.
- ALLOW-FROM uri: Memungkinkan halaman dibingkai hanya berdasarkan asal yang ditentukan. Namun, metode ini sudah tidak digunakan lagi dan tidak didukung secara luas.
2. Content-Security-Policy (CSP) : Secara khusus, frame-ancestorsarahan ini dapat digunakan untuk mengendalikan domain mana saja yang diizinkan untuk membingkai konten.
Memeriksa Kerentanan Clickjacking dengan Python
Untuk memulainya kita akan menggunakan pusta request, kamu bisa menginstalnya.
$ pip install requests
lalu buat file python baru terserah kamu mau buat nama apa, dan copy code di bawah ini.
import requests, argparse #argparse for parsing command-line arguments
# Function to check if a website is vulnerable to clickjacking
def check_clickjacking(url):
try:
# Add https:// schema if not present in the URL
if not url.startswith('http://') and not url.startswith('https://'):
url = 'https://' + url
# Send a GET request to the URL
response = requests.get(url)
headers = response.headers
# Check for X-Frame-Options header
if 'X-Frame-Options' not in headers:
return True
# Get the value of X-Frame-Options and check it
x_frame_options = headers['X-Frame-Options'].lower()
if x_frame_options != 'deny' and x_frame_options != 'sameorigin':
return True
return False
except requests.exceptions.RequestException as e:
print(f"An error occurred while checking {url} - {e}")
return False
Fungsi ini
check_clickjacking
memeriksa apakah suatu situs web rentan terhadap clickjacking dengan mengirimkan permintaan GET ke URL, memverifikasi keberadaan header X-Frame-Options
, dan memastikan nilainya adalah deny
atau sameorigin
, yang menunjukkan perlindungan terhadap clickjacking.Kemudian kita akan membuat
main
fungsi untuk menerima argumen pengguna (url) melalui baris perintah dan memeriksa kerentanan clickjacking.# Main function to parse arguments and check the URL
def main():
parser = argparse.ArgumentParser(description='Clickjacking Vulnerability Scanner')
parser.add_argument('url', type=str, help='The URL of the website to check')
parser.add_argument('-l', '--log', action='store_true', help='Print out the response headers for analysis')
args = parser.parse_args()
url = args.url
is_vulnerable = check_clickjacking(url)
if is_vulnerable:
print(f"[+] {url} may be vulnerable to clickjacking.")
else:
print(f"[-] {url} is not vulnerable to clickjacking.")
if args.log:
# Add https:// schema if not present in the URL for response printing
if not url.startswith('http://') and not url.startswith('https://'):
url = 'https://' + url
print("\nResponse Headers:")
response = requests.get(url)
for header, value in response.headers.items():
print(f"{header}: {value}")
if __name__ == '__main__':
main()
Fungsi ini
main
mengurai argumen baris perintah untuk memeriksa URL yang diberikan untuk kerentanan clickjacking, mencetak hasilnya, dan secara opsional mencatat header respons HTTP jika ditentukan (menggunakan --logatau -l flags).Untuk menjalankannya kamu bisa menggunakan contoh perintah di bawah ini.
$ python clickjacking_scanner.py phpwebvuln.com/ – -log
Atau kamu bisa menguji pada website yang tidak rentan.
$ python clickjacking_scanner.py phpwebvuln.com —l