歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

利用基于AngularJS的XSS實現提權

來源:本站整理 作者:佚名 時間:2019-10-06 TAG: 我要投稿

大家好,我是Shawar Khan。自我上次寫作以來已經時隔好幾個月了,這段時間我一直忙于不同的測試目標。最近我在某個目標中發現了一個有趣的XSS漏洞,通過該漏洞我可以將我的權限提升為管理員用戶。
XSS是一個非常有趣的漏洞,在發現它之后,你可以直接與應用程序進行通信,而無需擔心同源策略。一切都在我們的控制之中,大部分保護都被打破了。
管理員用戶擁有應用程序的最高權限可以對任意用戶執行添加/刪除/編輯操作。而我最終得以提升到管理員權限就是通過XSS做到的。每當我發現XSS,我都會嘗試使用一些獨特的方式來利用它們。令牌抓取,CSRF保護繞過或是抓取cookie,現在看來已經顯得有些過時。
在我的測試期間,在用戶配置文件頁面我發現了多個XSS漏洞。每個注冊用戶都有不同的配置文件頁面,如“https://www.site.com/users/username-here”。

發現基于 AngularJS 的XSS
這是一個所有特權用戶均可訪問包含用戶帳戶名和姓的頁面。應用簡單的測試探針,如“>并沒有顯示任何結果,所以這說明該應用已做了適當的XSS保護。所有特殊字符都被正確過濾,這引發了我的另一思考,為什么不嘗試獲取基于AngularJS的XSS呢?轉到“ settings”并將帳戶名更改為“{{alert(1)}}”。

因此,我以不同的特權用戶身份測試了相同的內容,并導航到了我的配置文件/users/username_page(任何用戶均可訪問)觸發payload。

當嘗試提升權限時,你的主要目標是尋找能夠編輯你角色的功能或是邀請你進入不受限區域的功能。在我的例子中,管理員用戶有權編輯/添加用戶。
在我的例子中,我有一個測試管理員帳戶來測試這些問題,所以我知道要添加一個新的管理員特權用戶需要復制什么請求。在沒有訪問權限的情況下,你只需嘗試通過發送document.body.innerHTML的輸出來獲取管理帳戶的源碼,并嘗試獲取有關內部功能的信息。可以利用XSSHunter和其他一些工具來獲取此類信息。
如何提供 payload ?
無論如何,用戶名字段的長度限制很短,因此無法在該字段中編寫整個漏洞利用代碼。用戶名還會將條目添加到配置文件頁面,此外它也會顯示為惡意內容。同樣受限于長度,無法注入引用外部JavaScript的腳本標記。
與往常一樣,我通過window.name提供payload。我總是通過window.name提供payload,因為它沒有利用限制,加載我們的漏洞利用代碼的payload限制為20個字符,因為我們將只加載給定的payload并將其提供給eval(atob(top.name))使用這種技術的另一個好處是,可以繞過繞過許多惡意關鍵字的驗證檢查,因為我們的主要漏洞利用代碼不會被輸入到易受攻擊的應用程序中。因此簡而言之,我們的攻擊代碼不會被驗證和檢查。
因此,可以通過使用window.open(url,”window name here”) 打開一個URL來設置window name,我們將漏洞利用代碼設置為base64。因此,通過調用window.name,它將返回我們的漏洞代碼,這些代碼將由eval()執行
定位用戶修改功能:
此功能發現于管理用戶門戶,并且最高權限用戶能夠任意更改應用程序中用戶的數據和權限。這里有不同的選項,如電子郵件更改和復選框,以確認用戶是否具有更高的權限。通過設置參數“csc=1”,用戶將被授予full權限,但此操作只能由管理員用戶執行。如果僅檢索源碼,則可以通過執行源碼審查來了解哪些端點采用哪些參數來映射所有功能。
以下是將用戶修改為管理員和完全權限用戶的請求:
POST /users/attackers-username HTTP/1.1
Host: vulnerablesite.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 141
_method=PUT&_token=CSRF_TOKEN_HERE&name=USERNAME&email=USER_EMAIL&phone=&csc=1
為了提升我們的權限,應該再現以上請求,這樣當更高權限用戶訪問我們的漏洞利用代碼時,我們的用戶將被修改。
編寫漏洞利用代碼:
我們首先要檢索的是CSRF令牌,這樣我們就可以驗證請求。有時它會出現在cookie中,因此從document.cookie中檢索它非常容易,但在本例中,是在一個meta標記中找到的:

[1] [2]  下一頁

【聲明】:黑吧安全網(http://www.gkrbnd.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        福彩原副主任