![反殺黑客教程—還敢連shell嗎?蟻劍RCE第二回合](http://p2.ttnews.xyz/loading.gif)
0x00 前言
本文由我們原創,被許多媒體轉載過,黑客教程、技術文章,關注:掌控安全EDU
hello我是掌控安全學院的聶風,早前中國蟻劍爆出客戶端RCE,不過官方第一時間修復了。於是實驗室的老師們看了一下,於是繞過了防護,於是有了新的RCE漏洞。~_~
Tips:我們有開課講解部分文章漏洞原理、歡迎掃描文末二維碼報名課程
0x01 環境搭建
中國蟻劍
windows直接下載運行
如果是Linux或者是MAC
可以使用AntSword加載器
0x02 漏洞分析
首先對蟻劍進行復測,發現分類目錄處的XSS並沒有被修復,可能因為過於雞肋項目方忽略了。(不過需要右鍵點擊空白處)
![反殺黑客教程—還敢連shell嗎?蟻劍RCE第二回合](http://p2.ttnews.xyz/loading.gif)
接著我們複測了之前的RCE,發現該漏洞已被過濾修復,我們來簡單分析一下是怎麼修復的。
新加上用來過濾的noxss函數 在source/app.entry.js文件中
這裡很明顯使用了JS的替換,而我們能看到替換的內容,其實也就是類似於進行了html實體編碼
接著問題來了,它過濾了尖括號和雙引號,但是沒有過濾單引號?
So 我們可以通過單引號來閉合雙引號。首先我們需要找到一個標籤之內可以XSS的地方
我們發現它調用了dhtmlx框架
接著我們來看這個UI框架
通過分析,該框架的dhtmlxtoolbar.js文件有點兒小毛病
文件地址: https://github.com/liuhuisheng/dhtmlx_web/blob/8a637bac7e92c76764e95cdd61f2e0fe60220822/assets/lib/dhtmlx/v403_pro/sources/dhtmlxToolbar/codebase/dhtmlxtoolbar.js
該文件第1775行
這段代碼會將獲取到的參數直接拼接到input標籤裡面,而UI框架沒有任何過濾
於是乎我們找到了文件路徑處,這裡存在一個我們可以控制的標籤(可Xss)
0x03 攻擊手法
這裡原本是一個input標籤,我們可以構建oninput事件來觸發該XSS
Payload: ‘oninput=alert(1) ;’
輸入語句,很明顯該XSS生效了,接著輸入字符,成功彈窗
那麼有個小問題,這個oninput標籤是需要交互式觸發的,看起來很雞肋,但是經過一個微妙組合,就可以自動觸發了
科普:
autofocus:是能夠讓input自動獲取焦點的屬性。
onfocus:當input自動獲取焦點時會觸發事件。
那麼我們在input標籤中包含一個autofocus的屬性(讓它自動獲取焦點)。
然後自動觸發onfocus事件內的Js腳本。
觸發點在路徑上,如果我將一個文件夾命名為我們的payload,當蟻劍連接時就可以成功觸發漏洞。
我們還可以將網站的根目錄設置為這個文件夾,當攻擊者想要連接我們站上的shell時,我們就能反殺回去-.-
XSS部分概述完畢,但我們最終是要進行RCE命令執行。
我們將構建語句完成一次SSJI(服務器端JavaScript注入)
利用障礙
Linux文件名的長度限制是255個字符 windows下完全限定文件名必須少於260個字符,目錄名必須小於248個字符,且不能參雜特定字符給文件夾命名。
繞過障礙
正常payload基本大於長度限制。我們需要縮短payload長度
我們可以使用外部引用,因為蟻劍使用了jquery,故可以使用$.getScript來引用外部js腳本,雖然文件夾名中不可含有//,但我們可以使用unescape代碼對payload進行加密
最終
Payload:
Xss平臺那邊的payload代碼,我們就直接拿之前爆出的RCE利用代碼
payload:
Base64解碼出來就是
由此我們得到了一個反彈到本地的CMDshell.
結言
本篇文章提到的SSJI,我們有一個審計專題SSJI —— Node.js漏洞審計系列做簡單介紹,歡迎關注公眾號瞭解。
閱讀更多 暗網視界 的文章