RCE sobre Lambda
Lab: Custom
import json
import subprocess
def execute_command(cmd: str) -> str:
# ejecuta el comando y captura la salida y los errores
try:
data = subprocess.Popen([cmd], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
output, errors = data.communicate()
except subprocess.SubprocessError as e:
# si hay algún error al ejecutar el c.omando, devuelve un mensaje de error
return f"Error al ejecutar el comando: {e}"
return output
def lambda_handler(event, context):
# extrae el comando de la solicitud HTTP
cmd = event.get('queryStringParameters', {}).get('cmd')
if not cmd:
# si no se proporcionó un comando, devuelve un mensaje de error
return {
'statusCode': 400,
'body': 'Debe proporcionar un comando para ejecutar.'
}
# ejecuta el comando
output = execute_command(cmd)
# construye una respuesta HTTP con la salida como cuerpo
return {
'statusCode': 200,
'body': json.dumps(output)
}



Última actualización