
مُفجّر اختراق WAF معياري مع تعدد الخيوط، والتلاعب بالطلبات، وتشفير الحمولة، لاختبار تطبيقات الويب للفريق الأحمر.
pFuzz هي أداة متقدمة للتجربة العشوائية (fuzzing) في الفريق الأحمر، قمنا بتطويرها لأبحاثنا. تساعدنا في تجاوز جدار الحماية لتطبيقات الويب باستخدام طرق مختلفة في نفس الوقت.
pFuzz هي أداة متقدمة للتجربة العشوائية طورناها لأبحاث تطبيقات الويب. تم تطويرها لتسريع عملية اختبار طرق هجوم مختلفة على تطبيقات الأمن المختلفة.
pFuzz هي أداة مطورة بلغة بايثون للحصول على قدرة متقدمة في التجربة العشوائية في أبحاث تطبيقات الويب. نظرًا لأن التطبيق ذو هيكل معياري، فإنه يمتلك القدرة على إضافة طرق تجاوز WAF المكتشفة حديثًا / التي سيتم اكتشافها بسرعة إلى pFuzz واختبارها على جميع WAFs الأخرى. بالإضافة إلى الهيكل المعياري، تم استخدام هياكل متعددة الخيوط، متعددة المعالجة، وقوائم الانتظار لجعل الأداة أكثر مرونة، وتم إنشاء البنية التحتية للتطورات المستقبلية.
تمت برمجة الأداة بحيث يمكن تحليل طلب معين وتغييره بسهولة عبر كائن. بفضل هذه البنية، سيتمكن المطورون الذين سيطورون التطبيق من المساهمة بسهولة وتطوير الأداة وفقًا لاحتياجاتهم الخاصة دون تغيير الهيكل الأساسي للتطبيق ودون الحاجة إلى التعلم.
ملاحظة: إذا كنت ترغب في المساهمة في التطوير، يمكنك القيام بذلك ليس فقط عن طريق تطوير pFuzz ولكن أيضًا عن طريق إضافة وحدات جديدة. لا تتردد في فتح PR جديد :)
pFuzz هي أداة مطورة بلغة بايثون للحصول على قدرة متقدمة في التجربة العشوائية في أبحاث تطبيقات الويب. نظرًا لأن التطبيق ذو هيكل معياري، فإنه يمتلك القدرة على إضافة طرق تجاوز WAF المكتشفة حديثًا / التي سيتم اكتشافها بسرعة إلى pFuzz واختبارها على جميع WAFs الأخرى. بالإضافة إلى الهيكل المعياري، تم استخدام هياكل مثل تعدد الخيوط، تعدد المعالجة، وقوائم الانتظار لجعل الأداة أكثر مرونة، وتم إنشاء البنية التحتية للتطورات المستقبلية.
تمت برمجة الأداة بحيث يمكن تحليل طلب معين وتغييره بسهولة عبر كائن. بفضل هذه البنية، سيتمكن المطورون الذين سيطورون التطبيق من المساهمة بسهولة وتطوير الأداة وفقًا لاحتياجاتهم الخاصة دون تغيير الهيكل الأساسي للتطبيق ودون الحاجة إلى التعلم.
ملاحظة: إذا كنت ترغب في المساهمة في التطوير، يمكنك القيام بذلك ليس فقط كتطوير أساسي 'core'، ولكن أيضًا عن طريق إضافة وحدة جديدة. نحن في انتظار PR الجديدة :)
_____
_ __ | ___|_ _ ____ ____
| '_ \ | |_ | | | ||_ /|_ /
| |_) || _| | |_| | / / / /
| .__/ |_| \__,_|/___|/___|
|_|

sudo pip3 install virtualenv
python3 -m venv myvenv
source myvenv/bin/activate
pip3 install -r requirements.txt
python3 pfuzz.py --help
cffi==1.14.3
cryptography==3.1.1
numpy==1.19.2
pandas==1.1.3
pycparser==2.20
pyOpenSSL==19.1.0
python-dateutil==2.8.1
pytz==2020.1
six==1.15.0
xlrd==1.2.0
python3 pfuzz.py --help
python3 pfuzz.py -r request.txt -m
python3 pfuzz.py -r request.txt -cf
python3 pfuzz.py -r request.txt -f
python3 pfuzz.py -r request.txt -f --proxy 127.0.0.1:8080
python3 pfuzz.py -r request.txt -f -d 3
python3 pfuzz.py -r request.txt -f -s
python3 pfuzz.py -r request.txt -f -l
python3 pfuzz.py -r request.txt -f -e
python3 pfuzz.py -r request.txt -f -fe
python3 pfuzz.py -r request.txt -f -t 5
python3 pfuzz.py -r request.txt -f -o terminal
python3 pfuzz.py -r request.txt -f -od terminal
python3 pfuzz.py -r request.txt -f -o ~/Desktop/
python3 pfuzz.py -r request.txt -f -od ~/tmp/
_____
_ __ | ___|_ _ ____ ____
| '_ \ | |_ | | | ||_ /|_ /
| |_) || _| | |_| | / / / /
| .__/ |_| \__,_|/___|/___|
|_|
------------------------------------
@EmreOvunc | @merttasci | @xsuperbug
------------------------------------
v0.2.4
------------------------------------
usage: pfuzz.py [-h] [--request REQUEST] [--proxy PROXY] [--log] [--ssl]
[--threads THREADS] [--output OUTPUT] [--delay TIME]
[--output-details OUTPUT] [--full-encode] [--encode]
[--fuzz] [--charfuzz] [--manipulate] [--version]
optional arguments:
--help/-h show this help message and exit
--proxy/-p PROXY proxy [IP:PORT]
--log/-l enable logging
--ssl/-s enable ssl
--threads/-t NUMBER thread(s) number [default=1]
--version/-v show program's version number and exit
[Request Options]:
--request/-r REQUEST request file
--delay/-d TIME set a delay between requests [default=0.05]
--encode/-e encode space chars in uri/body
--full-encode/-fe encode all chars in uri/body
[Output Options]:
--output/-o OUTPUT output important info [terminal/folder name]
--output-details/-od OUTPUT
output all details [terminal/folder name]
[Modules]:
--fuzz/-f run fuzzing module
--charfuzz/-cf run char fuzzing module
--manipulate/-m run manipulating headers module
Usage: python3 pfuzz.py -r req.txt --log -s --fuzz -d 1 --encode -o terminal --threads 2
Usage: python3 pfuzz.py -r req.txt -f -l --proxy 127.0.0.1:8080 --output-details ~/output
- modules
- charfuzzer.py
- exparse.py
- fuzzer.py
- headeroperations.py
- manupilatingheaders.py
from reqparser import HTTPReq
myreq = HTTPReq.getobj()
...
myreq.uri
myreq.body
myreq.http
myreq.referer
myreq.origin
myreq.host
myreq.cookie
...
إذا كنت ترغب في الحصول على الحمولات من ملف Excel، يمكنك استخدام طرق getpayloads من modules.exparse.
from modules.exparse import getpayloads
getpayloads(fuzzsheetName, genericcolmnName, fuzzingpayloads)
# Fuzzing Module in static/statics.py
fuzzsheetName = 'Fuzzing'
genericcolmnName = 'Payload'
fuzzingpayloads = []
الآن، يمكنك تغيير/إضافة/حذف السمات كما تريد.
myreq.uri = tmpuri + payload
myreq.addheader(header, "127.0.0.1")
myreq.content_type = "text/html"
from modules.exparse import getpayloads
for payload in fuzzingpayloads:
if payload == '#exitme#':
statics.exitCall = True
else:
[OPERATIONS]
from reqsender import sendit
sendit(myreq)
![]() Emre Övünç | ![]() Mert Taşçı | ![]() Evren Yalçın |
| الهدف | الوحدة/الفئة | الوظيفة | المعامل (المعاملات) |
|---|
| لإرسال طلب | reqsender.py | sendit() | كائن |
| لاستخدام كائن طلب | reqparser.py/HTTPReq | getobj() | - |
| لإضافة رأس مخصص | reqparser.py/HTTPReq | OBJECT.addheader() | اسم الرأس الجديد، القيمة |
| لحذف رأس | reqparser.py/HTTPReq | OBJECT.delheader() | اسم الرأس |
| لتغيير رأس | reqparser.py/HTTPReq | OBJECT.changeheader() | اسم الرأس، اسم الرأس الجديد |
| للحصول على حمولة من الملف | exparse.py | getpayloads() | اسم الورقة، اسم العمود |
| لكتابة سجل معلومات/تصحيح/تحذير | waflogger.py | loginfo/logdebug/logwarn() | رسالة السجل |