
Language Sloth Sloth Bot 1.0 è vulnerabile a Directory Traversal nelle funzioni gif() e png(). Le funzioni costruiscono percorsi dei file utilizzando input utente non sanitizzato per il parametro 'name', consentendo agli aggressori di fare riferimento a file al di fuori delle directory di risorse previste.
Il bot Discord Language Sloth è vulnerabile a Directory Traversal nelle funzioni gif() e png(). Le funzioni costruiscono percorsi di file utilizzando input utente non sanificati per il parametro 'name', consentendo agli attaccanti di fare riferimento a file al di fuori delle directory di risorse previste.
Le funzioni "gif" e "png" nel file files.py sono vulnerabili al directory traversal poiché usano "open" per recuperare localmente file dal server che ospita il bot. I payload seguenti consentono a qualsiasi utente di Discord di recuperare file ".gif" e ".png" ospitati ovunque sul server che ospita il bot.
async def gif(self, ctx, name: str = None):
'''
(ADM) Sends a gif from the bot's gif folder.
:param name: The name of the gif file.
'''
await ctx.message.delete()
try:
with open(f'./gif/{name}.gif', 'rb') as pic:
await ctx.send(file=discord.File(pic))
except FileNotFoundError:
return await ctx.send("**File not found!**")
async def png(self, ctx, name: str = None):
'''
(ADM) Sends a png from the bot's png folder.
:param name: The name of the png file.
'''
await ctx.message.delete()
try:
await ctx.send(file=discord.File(f'./png/{name}.png'))
except FileNotFoundError:
return await ctx.send("**File not found!**")
Il parametro name viene interpolato direttamente nel percorso del file senza validazione o sanitizzazione:
f'./gif/{name}.gif'
f'./png/{name}.png'
Payload di esempio:
z!gif ..\..\..\..\Windows\filename
z!png ..\..\..\..\Windows\filename
L'immagine sopra mostra l'estrazione di un'immagine situata in C:\Windows\cat.gif