
ماسح سريع لتهريب خفض إصدار HTTP مكتوب بلغة Go.
SmuggleFuzz، ماسح ضوئي سريع وقابل للتخصيص لثغرات التهريب عبر خفض مستوى HTTP. يُمكّن المستخدمين من قوائم أدوات قابلة للتخصيص، مما يوفر رؤى أعمق حول أسباب فشل هجمات التهريب. أنا واثق من أن العديد من ثغرات التهريب القائمة على خفض مستوى HTTP لا تزال غير مكتشفة. للأسف، يتوقف الكثيرون عن استكشافهم بعد مسح سطحي. باستخدام SmuggleFuzz، يمكنك اكتشاف ثغرات التهريب التي قد يغفل عنها الآخرون.
لمزيد من المعلومات، راجع https://moopinger.github.io/blog/smugglefuzz/fuzzing/smuggling/2024/01/31/SmuggleFuzz.html
قم بتنزيل نسخة من صفحة الإصدارات: https://github.com/Moopinger/smugglefuzz/releases
go install github.com/moopinger/smugglefuzz@latest
طريقة أخرى:
git clone https://github.com/moopinger/smugglefuzz.git
cd smugglefuzz
go build .
./smugglefuzz
هناك ثلاثة أوامر لـ SmuggleFuzz:
Usage:
smugglefuzz scan [flags]
Examples:
smugglefuzz scan -u https://example.com/ --confirm
smugglefuzz scan -u https://example.com/ --filter TIMEOUT --confirm
smugglefuzz scan -u https://example.com/ -w wordlist.txt -t 10 --confirm --filter TIMEOUT
smugglefuzz scan --dc -u https://example.com/ -w wordlist.txt -x PUT --confirm
//Multiple targets? just use -f instead of -u and provide a file with the targets in it:
smugglefuzz scan -f multiple_targets.txt --confirm -t 10
smugglefuzz scan -f multiple_targets.txt -w wordlist.txt --confirm -s ./save-success.txt --filter TIMEOUT
smugglefuzz scan -f multiple_targets.txt -w wordlist.txt -H "Cookie: date=...; session=...;" -s ./save-success.txt -x PUT --filter TIMEOUT
Flags:
-c, --confirm Enable this flag to send a confirmation to the target when a timeout is encountered. Helps confirm if the target is vulnerable.
-d, --data string HTTP/2 Data frame to send. eg: 99\r\n (default "99\r\n")
--dc Disable colour in the output. This is useful when you want to save the output to a file.
-f, --file string A file containing multiple targets in url format. One target per line.
--filter string Filter responses by string or frame type, etc. For example: 405, 200, 502, TIMEOUT, RST, GOAWAY, etc.
-H, --header string Insert a custom header. It should be provided in the regular header format: "Cookie: date=...; session=...;"
-h, --help help for scan
-i, --interval int The timeout interval in seconds. (default 5)
-x, --method string The HTTP request method to be used. (default "POST")
-s, --save-success string If a request is confirmed to be successful (via the --confirm flag), it will be saved to a file. This is useful when dealing with lots of targets.
-t, --threads int The number of threads to run. Smugglefuzz can go fast, so set the desired number. However, too many may upset any WAFs. (default 4)
-u, --url string The target URL to be scanned.
-w, --wordlist string Provide a custom list of gadgets to use. If not provided, the default list will be used.
Usage:
smugglefuzz request [flags]
Examples:
smugglefuzz request -u https://www.example.com/ -a "content-length\t; 13"
smugglefuzz request -u https://www.example.com/ -a "content-length\t; 13" -x PUT
smugglefuzz request -u https://www.example.com/ -a "content-length\t; 13" -H "Cookie: date=...; session=...;" --data "223\r\n"
Flags:
-a, --attack string Attack Header, separated by (; ) like the wordlist in 'scan' mode.
-d, --data string HTTP/2 Data frame content to send. (default "99\r\n")
--dc Disable colour in the output.
-H, --header string Insert custom header. eg "Cookie: values"
-h, --help help for request
-i, --interval int Detection timeout interval in seconds. (default 5)
-x, --method string The method to use. (default "POST")
-u, --url string The target URL to submit the request to.
سيقوم هذا فقط بإخراج الأدوات الافتراضية للتهريب. حاليًا، يعمل التأكيد المبني فقط مع H2.CL و H2.TE. ولكن لا يزال من الممكن اكتشاف H2.0 عبر timeout (–filter TIMEOUT) أو OAST على نطاق خاص بك. (انظر قسم الرؤوس الزائفة أدناه)
يتيح SmuggleFuzz للمستخدمين التحكم الكامل في الطلبات من خلال قوائم كلمات مخصصة. هذه القوائم لها بنية أساسية يجب اتباعها لتحقيق معالجة مثلى للطلبات. على سبيل المثال، يتم تقسيم الرؤوس وقيمها باستخدام فاصلة منقوطة ومسافة (; ) بدلاً من النقطتين المعتادتين، مما يسهل تضمين القيم ذات النقطتين في طلبات التهريب. كما يفتح هذا الاحتمالات لتحويرات مختلفة وأساليب إبداعية. للحصول على إرشادات مفصلة حول إنشاء حمولاتك الخاصة، راجع: أبحاث James Kettle حول HTTP/2.
تتضمن الأداة قائمة جاهزة مكونة من 125 أداة تهريب، على الرغم من أن هناك دائمًا مجال للتوسع. يمكن عرض هذه الأدوات باستخدام الأمر 'output'، مما يوفر رؤى حول هيكلة الاستعلام. يمكن للمستخدمين إجراء عمليات المسح باستخدام قوائم كلمات مخصصة باستخدام علامة 'w'. تدعم القائمة ترميز URL (%00) لقيم البايت غير القابلة للطباعة، مثل إرجاع السطر وتغذية السطر ممثلة بـ '%0d%0a' أو '\r\n'. على الرغم من أن القائمة المقدمة شاملة، فإن صياغة أدواتك الخاصة يمكن أن تزيد بشكل كبير من معدلات النجاح.
هل تحتاج إلى دعم h2c؟ تحقق من فرع "experimental-h2c" الخاص بـ SmuggleFuzz.
الرؤوس الزائفة مدعومة بالكامل ويمكن تخصيصها باستخدام صيغة ":name":
:authority:scheme:methodهذه الرؤوس مفيدة بشكل خاص عند اختبار ناقلات هجوم H2.0. على سبيل المثال، في اختبار تهريب H2.0 باستخدام طرق تعتمد على OAST، يمكن أن تكون إدخالات قائمة الكلمات التالية فعالة:
اعتبارًا من الإصدار v0.1.8، يمكن استخدام [HOSTNAME] كعنصر نائب. سيقوم SmuggleFuzz باستبداله باسم المضيف في وقت التشغيل.
:authority; [HOSTNAME]\r\n\r\nGET / HTTP/1.1\r\nHost: uniqid.oastify.com\r\nX-HEADER:%20أو
:authority; [HOSTNAME]\r\n\r\nGET https://uniqid.oastify.com/ HTTP/1.1\r\nHost: [HOSTNAME]\r\nX-HEADER:%20طريقة الكشف المستخدمة في SmuggleFuzz مماثلة لتلك التي استخدمها Albinowax في أبحاثه عن تهريب HTTP/1 و defparam's Smuggler، ولكن مع تعديلات لتناسب HTTP/2. لحسن الحظ، نظرًا لأن هذه الهجمات تتضمن تخفيضات، يمكن استخدام نفس حمولة الجسم/إطار DATA لكل من كشف H2.CL و H2.TE.
مبدأ توجيهي مهم لقوائم الكلمات هو أن الرؤوس التي تم تهريبها بنجاح يجب أن تتضمن القيم التالية لهجوم تأكيدي:
CL: 13
TE: chunked
يتضمن كل طلب "Body"/DATA-Frame بقيمة "99\r\n". إذا تم تهريب رأس TE، يتم تفسيره على أنه طول محتوى مجزأ يبلغ 153 (0x99) من قبل الخادم إذا تم تهريبه بنجاح، مما يؤدي إلى انتهاء المهلة. وبالمثل، فإن تهريب رأس CL بطول محتوى 13 يؤدي أيضًا إلى انتهاء المهلة بسبب عدم استيفاء الطول.
يقوم طلب التأكيد بإعادة إرسال نفس الاستعلام الذي أدى إلى انتهاء المهلة، ولكن مع بيانات: "3\r\nABC\r\n0\r\n\r\n". هذا يلبي كلاً من TE المجزأ و CL بقيمة 13، مما يؤدي إلى استجابة ناجحة وربما يشير إلى وجود ثغرة تهريب.