Ich versuche, CVE-2024-30251 zu reproduzieren, eine Verleugnung des Service-Anfälligkeit in AIOHTTP (Python Async Web Framework), das die Versionen vor 3.9.4 betrifft. Nach den Ratschlägen wird diese Sicherheitsanfälligkeit durch Senden einer speziell gefertigten Multipart/Form-Data Post-Anforderung ausgelöst, die dazu führt, dass der AioHTTP-Server eine Infinite-Schleife eingibt und nicht reagiert, was zu einem minimalischen Mindestgerät zurückzuführen ist. AIOHTTP-Server und getestet mit beiden Versionen
3.8.6 (bekannt als betroffen) und 3.9.5 (gepatcht). /> Beobachtetes Verhalten < /h2>
In 3.8.6 und 3.9.5 hängt der Server nicht. Stattdessen erhalte ich konsequent einen gehandhabten Fehler wie "Ausnahme beim Upload -Handling: Lesen nach EOF" oder eine 400 schlechte Anfrage. /> Was ist das genaue Nutzlast- und Verbindungsverhalten, das erforderlich ist, um die in CVE-2024-30251 beschriebene Infinit-Loop /DOS in Aiohttp 3.8.6 zuverlässig auszulösen? jemand konnte dies in einem minimalen Exploit -Skriptformat reproduzieren, und wenn ja, können Sie die genauen Schritte und die Nutzlast teilen? />
logging.basicconfig (Level = logging.info)
logger = logging.getLogger ("Multipart-server")
async def upload_handler (Anfrage):
logger.info ("Empfangsanforderung. /> logger.info ("Initialisierte Multipart -Leser.")
part_num = 0
wob += 1
logger.info (f "Teil {part_num}: headers = {dict (part.Headers)}")
chunk_num = 0
wob part.read_chunk ()
Wenn nicht Chunk:
logger.info (f "Ende des Teils {part_num}.")
break
logger.info (f "Read Chunk {chunk_num} von {len (kugel)} bytes von partes {part_num}."). /> logger.info("Finished reading all parts.")
return web.Response(text="Upload processed successfully.")
except Exception as e:
logger.error(f"Exception during upload handling: {e}")
return web.Response(text=f"Exception: {e}", status=400)
app = web.application ()
app.router.add_post (' /upload', Upload_handler)
Wenn __name__ == "__main __":
logger.info ("Start Aiohttp Server auf http:/127.0.0.0.1:8080 ..."))) port = 8080)
< /pre>
Client '----MALFORMED_BOUNDARY'
body = (
f'--{boundary}\r\n'
'Content-Disposition: form-data; name="field1"\r\n'
'\r\n'
'value1\r\n'
f'--{boundary}\r\n'
'Inhaltsdisposition: Form-Data; f'post /hochladen http /1.1 \ r \ n '
f'host: {host}: {port} \ r \ n'
f'content-type: MultiPart /Form-Data; oder body.encode ('utf-8'))
Versuchen Sie:
response = sock.Recv (4096)
print ("Server antwortet:")
print (reaktion.decode ('utf-8', Fehler = 'Ersatz'))
Ausnahme von E:
print (f "frücken (frücken): {e {bb /> print (f" br /> print (f "br /> print (frinte): {e}")) /> < /pre>
Referenzen < /h2>
Github-Sicherheitsberatung < /p>
nvd cve-2024-30251 < /p>
Zusammenfassung < /H2>
Wie kann ich CVE-2024-30251 (AIOHTTP Multipart/Form-Data DOS) mit einem minimalen POC-Skript auslösen? [Benötigen Sie ei ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post