NAS:網路附加儲存裝置,現今會加儲存裝置。
但目前由於Open Source 所以風險增高
CVE 每個CVE編號會應對唯一漏洞
CWE 漏洞的root Cause 分類標準
CVSSv3
Scope
機密性 Confidentialtiy.明碼密碼
完整性 Integrity.Log Fogging
可用性 Availability.ex.Dos
可能不同組織,計算分數的基準評分不同。
MediaWiki 內建套件預設不啟用
由於權限受限,故做的項目是有限的
Securgumen Injection or Moditfication
>>Code Review
由於用完整字串,用逗號接起來,
所以syntaxHightlight (使用Wiki syntax語法)
使用symfony.Process Builder(php library)
shell command
>-l java \
>-O start=0,full=1,title=,\ >> 原本只接受數字 0 ,但由於後面餵其他參數,故一樣接受指令
#Qnap 也有 XSS 這個弱點
發生原因,把start傳入,而沒有檢查。
改善:加上型別檢查,並且可以做型別轉換
CodeReview
addEmbeddedImage()
可以透過電子郵件傳染,OUTLOOK 沒辦法寄送郵件,但可以透過Burpsuite改完再寄出。((超壞
修復:因為basedir 空字串,應該不允許透過 url 存取檔案
檢查url是否是出現dot-dot, 避免path 繞過
要有SMB寫入權限才能觸發漏洞
metasploit 裡面已經可以實作了
Code Review
…
上傳時偷塞入|
所以是功能(feature)還是Bug?
是因為client \\PIPE\test 但Samba server 以絕對路徑去載入 /test 沒有去做檢查,
就成功了。
修復:
smb.conf 中關閉目錄絕對路徑瀏覽,也可以用 metasploit 去調整
或去過濾傳入的內容路徑 (/)
Remote Code Exction
其實是Buffer Over 導致的問題,沒有檢查字串欄位,所以memcpy 的size 可控
dsi>command 給值的size 可控
足夠長的Payload 把參數蓋掉。
就能直接蓋掉command 的命令位置。
所以是Buffer Overflow,可以繞過認證,造成address 寫入任意 data
<heap圖>
來不及抄 =V=|||
由於 optenftpd 自行處理log,無法觸發fmt string漏洞
TFTP 無認證機制,故允許打穿。
TFTP Format 實作 RFC2349 <看圖那好像很難>
不能用常用的方式:%x %p %s
不能用sprintf()
不能疊stack,因為會被清掉
讀檔的服務:
檔案名稱是不是有包含 ../ 如果有的話,就不處理無效檔案
但由於是寫在另外一個檔,但這個檔可以被覆寫… 所以改掉就可以上傳,然後就可以任意讀檔了。
逆向 reverse shell command
(1)複寫 atol.got to system()
(2)取消設定,然後就允許疊 stack
就有機會 RCE
更精簡的方式…
如果opentfppd 自行處理log,無法觸發stack overflow
(QNAP) >>
Proof of Concept
可以蓋掉stack,結果就爛掉了
但後來發現有一個,%n做結尾
會被換行。x64環境不行,但x86的環境有機會。(4bytes 所以可,但有保護)
(Asustor) >>
硬要打,就成功了…
長度有限制,但不夠嚴謹,所以還是有機會可以蓋過stack
即使最後有個%0a,但不重要,該蓋的都有蓋掉,沒問題。
前提要有讀取檔案目錄的權限。
能存取到,才會分配heap的空間出來,才有機會能造成heap overflow。
版本利用會相關複雜一點,blksize 有做限制 512-65536 bytes,故其實利用上較難。
而且還有connect timeout 才有機會free 掉 buffer
pwnable.tw 來玩來玩~
TFTP on internet, 共 138867 筆
看Shodan 上的錯誤訊息看有沒有機會。
講者的工作到底是檢查自家的 NAS 有沒有問題還是打別人家的 NAS 啊 (X
HITCONCMT2019
,HITCONCMT
,HITCON