
AES-CBC एन्क्रिप्शन के विरुद्ध पैडिंग ओरेकल हमले (padding oracle attack) को प्रदर्शित करता है, जिसमें एक असुरक्षित Flask डिक्रिप्ट एंडपॉइंट और एक Python एक्सप्लॉइट स्क्रिप्ट का उपयोग करके बिना कुंजी के मनमाने सिफरटेक्स्ट को डिक्रिप्ट किया जाता है।
# padding_oracle_server.py - Server that returns padding error
from flask import Flask, request
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import os
key = os.urandom(16)
app = Flask(__name__)
@app.route('/decrypt', methods=['POST'])
def decrypt():
ct = bytes.fromhex(request.form['ciphertext'])
cipher = AES.new(key, AES.MODE_CBC, iv=ct[:16])
try:
pt = unpad(cipher.decrypt(ct[16:]), 16)
return "OK"
except ValueError:
return "Padding error", 400
if __name__ == '__main__':
app.run(port=5000)
एक वेब एप्लिकेशन AES‑CBC का उपयोग करके डेटा को डिक्रिप्ट करता है और बता देता है कि पैडिंग मान्य है या नहीं। एक हमलावर संशोधित सिफरटेक्स्ट सबमिट कर सकता है और सर्वर की त्रुटि प्रतिक्रियाओं के आधार पर, कुंजी जाने बिना किसी भी डेटा को पुनरावृत्त रूप से डिक्रिप्ट या एन्क्रिप्ट कर सकता है।
pip install flask pycryptodome
python padding_oracle_server.py
python exploit_padding_oracle.py
ओरेकल डिटेक्शन भेद्यता की पुष्टि करता है; पूर्ण शोषण padbuster जैसे टूल का उपयोग करता है।