- 5 May 2023
- 744
- 5
- 348
- 24
merhaba ,sistemlerdeki guvenlik duvarlarini bula bilen bir kod yazmaya calistim , kendim test etdim 100/100 sonuc verdigini idda edemem .
Onerilerinden dolayi @alexandre20 @yosabe06 hocalarima tesekkur ederim
Anlatim
headerarama(): koddaki bu fonksiyon http headerlerini inceleyerek WAF belirtilerini arar (cf-ray vb. ) . Headerler icinde gezinerek, header ismi(name) veya header degeri (value) içinde WAF isimlerinin geçip geçmediğini düzenli ifadelerle(import re amaci buydu) kontrol eder.
htmlara() : html(parse edilmis) içeriği üzerinde gezinerek WAF belirtilerini bulmaya calisir . BeautifulSoup kütüphanesi kullanarak html içeriğini okur ve html (verdigimiz urlde request yapinca karsimiza gelen sayfadaki) yorumları (comment) içerisinde WAF isimleri arar.
cevapdara() : Bu fonksiyon http yanıtının (response) metini içeriğinde doğrudan WAF belirtilerini arar. Metin içeriği üzerinde doğrudan bir arama yapar(onceden belirttigim liste icinde) ve WAF isimlerini içeren kisimlari bulmaya calisir.
wafbul(): Bu aslinda bizim ana fonksiyonumz, cunki verilen bir urle http isteği gönderir ve yanıtı alır. Ardından, bu yanıtı önce headerarama(), htmlara() ve cevapdara() fonksiyonlarına göndererek her birinin WAF belirtilerini tespit etmeye sağlar. Son olarak, tüm tespit edilen WAF belirtilerini (yukarida anlattigim 3 fonksiyonda buldugu belirtileri) birleştirerek bir set oluşturur ve bu seti ciktiya verir.
Firewall Listesi :
Listeye ekleme yaparsaniz sevinirim (listeyi yapay zeka kullanarak aldim)
liste = [
'aesecure', 'airlock', 'aliyundun', 'astra', 'awaf', 'barracuda', 'bekchy', 'bigip', 'binarysec',
'blockdos', 'bluedon', 'bulletproof', 'cisco', 'cloudflare', 'comodo', 'denyall', 'distil',
'dotdefender', 'f5', 'fortiweb', 'fortinet', 'frontdoor', 'greywizard', 'hyperguard', 'incapsula', 'indusguard',
'isaserver', 'jiasule', 'kona', 'limelight', 'litespeed', 'malcare', 'modsecurity', 'neustar', 'newdefend',
'nsfocus', 'naxsi', 'onmessage', 'openresty', 'paloalto', 'perimeterx', 'radware', 'reblaze', 'rsfirewall',
'safedog', 'safeline', 'secucloud', 'sectigo', 'secureentry', 'sentry', 'shadowd', 'shield', 'sitelock',
'sonicwall', 'sophos', 'stackpath', 'sucuri', 'trustwave', 'wallarm', 'websecurify', 'webshield', 'webtotem',
'yundun', 'yunjiasu', 'zenedge',
'a10', 'ace', 'akamai', 'appgate', 'armorlogic', 'aruba', 'azure', 'barracudawebappfirewall', 'bitninja', 'checkpoint',
'denypal', 'distil', 'fortiguard', 'imperva', 'kaspersky', 'modsecurity', 'netscaler', 'naxsi',
'varnish', 'wallarm', 'wordfence', 'zscaler'
]
Onerilerinden dolayi @alexandre20 @yosabe06 hocalarima tesekkur ederim
Python:
import requests
from bs4 import BeautifulSoup, Comment
import re
def headerarama(cevap):
headerlar = cevap.headers
waflar = set()
for header_isim, header_deger in headerlar.items():
for waf_isim in liste:
if re.search(waf_isim, header_isim, re.IGNORECASE) or re.search(waf_isim, header_deger, re.IGNORECASE):
waflar.add(waf_isim)
return waflar or set()
def htmlara(html_icerik):
soup = BeautifulSoup(html_icerik, 'html.parser')
waflar = set()
yorumlar = soup.find_all(string=lambda text: isinstance(text, Comment))
for yorum in yorumlar:
for waf_isim in liste:
if waf_isim.lower() in yorum.lower():
waflar.add(waf_isim)
return waflar or set()
def cevapdara(cevap):
waflar = set()
for waf_isim in liste:
if waf_isim.lower() in cevap.text.lower():
waflar.add(waf_isim)
return waflar or set()
def wafbul(url):
cevap = requests.get(url)
header_waflar = headerarama(cevap)
html_waflar = htmlara(cevap.text)
cevap_waflar = cevapdara(cevap)
tespitler = header_waflar.union(html_waflar).union(cevap_waflar)
return tespitler
liste = [
'aesecure', 'airlock', 'aliyundun', 'astra', 'awaf', 'barracuda', 'bekchy', 'bigip', 'binarysec',
'blockdos', 'bluedon', 'bulletproof', 'cisco', 'cloudflare', 'comodo', 'denyall', 'distil',
'dotdefender', 'f5', 'fortiweb', 'fortinet', 'frontdoor', 'greywizard', 'hyperguard', 'incapsula', 'indusguard',
'isaserver', 'jiasule', 'kona', 'limelight', 'litespeed', 'malcare', 'modsecurity', 'neustar', 'newdefend',
'nsfocus', 'naxsi', 'onmessage', 'openresty', 'paloalto', 'perimeterx', 'radware', 'reblaze', 'rsfirewall',
'safedog', 'safeline', 'secucloud', 'sectigo', 'secureentry', 'sentry', 'shadowd', 'shield', 'sitelock',
'sonicwall', 'sophos', 'stackpath', 'sucuri', 'trustwave', 'wallarm', 'websecurify', 'webshield', 'webtotem',
'yundun', 'yunjiasu', 'zenedge',
'a10', 'ace', 'akamai', 'appgate', 'armorlogic', 'aruba', 'azure', 'barracudawebappfirewall', 'bitninja', 'checkpoint',
'denypal', 'distil', 'fortiguard', 'imperva', 'kaspersky', 'modsecurity', 'netscaler', 'naxsi',
'varnish', 'wallarm', 'wordfence', 'zscaler'
]
url = input("URL : ")
tespitler = wafbul(url)
if tespitler:
print("Bulunanlar :", tespitler)
else:
print("Bulunmadi")
headerarama(): koddaki bu fonksiyon http headerlerini inceleyerek WAF belirtilerini arar (cf-ray vb. ) . Headerler icinde gezinerek, header ismi(name) veya header degeri (value) içinde WAF isimlerinin geçip geçmediğini düzenli ifadelerle(import re amaci buydu) kontrol eder.
htmlara() : html(parse edilmis) içeriği üzerinde gezinerek WAF belirtilerini bulmaya calisir . BeautifulSoup kütüphanesi kullanarak html içeriğini okur ve html (verdigimiz urlde request yapinca karsimiza gelen sayfadaki) yorumları (comment) içerisinde WAF isimleri arar.
cevapdara() : Bu fonksiyon http yanıtının (response) metini içeriğinde doğrudan WAF belirtilerini arar. Metin içeriği üzerinde doğrudan bir arama yapar(onceden belirttigim liste icinde) ve WAF isimlerini içeren kisimlari bulmaya calisir.
wafbul(): Bu aslinda bizim ana fonksiyonumz, cunki verilen bir urle http isteği gönderir ve yanıtı alır. Ardından, bu yanıtı önce headerarama(), htmlara() ve cevapdara() fonksiyonlarına göndererek her birinin WAF belirtilerini tespit etmeye sağlar. Son olarak, tüm tespit edilen WAF belirtilerini (yukarida anlattigim 3 fonksiyonda buldugu belirtileri) birleştirerek bir set oluşturur ve bu seti ciktiya verir.
Firewall Listesi :
Listeye ekleme yaparsaniz sevinirim (listeyi yapay zeka kullanarak aldim)
liste = [
'aesecure', 'airlock', 'aliyundun', 'astra', 'awaf', 'barracuda', 'bekchy', 'bigip', 'binarysec',
'blockdos', 'bluedon', 'bulletproof', 'cisco', 'cloudflare', 'comodo', 'denyall', 'distil',
'dotdefender', 'f5', 'fortiweb', 'fortinet', 'frontdoor', 'greywizard', 'hyperguard', 'incapsula', 'indusguard',
'isaserver', 'jiasule', 'kona', 'limelight', 'litespeed', 'malcare', 'modsecurity', 'neustar', 'newdefend',
'nsfocus', 'naxsi', 'onmessage', 'openresty', 'paloalto', 'perimeterx', 'radware', 'reblaze', 'rsfirewall',
'safedog', 'safeline', 'secucloud', 'sectigo', 'secureentry', 'sentry', 'shadowd', 'shield', 'sitelock',
'sonicwall', 'sophos', 'stackpath', 'sucuri', 'trustwave', 'wallarm', 'websecurify', 'webshield', 'webtotem',
'yundun', 'yunjiasu', 'zenedge',
'a10', 'ace', 'akamai', 'appgate', 'armorlogic', 'aruba', 'azure', 'barracudawebappfirewall', 'bitninja', 'checkpoint',
'denypal', 'distil', 'fortiguard', 'imperva', 'kaspersky', 'modsecurity', 'netscaler', 'naxsi',
'varnish', 'wallarm', 'wordfence', 'zscaler'
]