厚客户端滲透介紹(一):GUI測試
BetaFast是一款集合了諸多漏洞的厚客户端,對於我們練習安全技術是很不錯的。
故事起源
幾年前,一個NetSPI安全顧問進入了我們的地下室,想要從倉庫中找一些無指手套。地下室的過道幾乎沒有燈光,四處散落着一些雜物,突然一台設備引起了他的注意力。在一堆亂七八糟的滿是灰塵的盒子和年久失修的轉椅後面,那台設備上居然還有一個終端在閃爍着。
NetSPI一支最優秀的團隊覺得很有意思,於是決定開始研究它。這台設備是一家叫BetaFast的公司創建的,這家公司早就已經倒閉了。這台設備的唯一目的就是分發BetaMax磁帶,這種磁帶已經是1975年的老古董了。團隊成員們很好奇,這台設備休眠了多久?運行了多久?為什麼還在運行?於是這勾起了他們的興趣。
發佈
於是這些安全專家們就開始孜孜不倦的逆向這台設備(一個電影分發展台),它的軟件是一種專有語言編寫的,當然了,毫無疑問,漏洞百出。
這個展台的前端和後端都是用C#寫的。在接下來的幾周,我們將會寫一個系列博客來概述我們在這個軟件上發現的漏洞。代碼可以在我們的github主頁上找到。另外我們也找到了原始的BetaFast的網站,已經添加到我們的github頁面上了,http://www.betafast.net/。
漏洞列表
我們已經發布了兩款漏洞應用程序。一個是BetaFast,betamax展台應用,採用三層架構編寫,另一個是Beta Bank,一個專為精英設計的高級金融應用程序,採用兩層架構編寫。
BetaFast包含但不限於以下漏洞:
·硬編碼加密數據
·硬編碼加密密碼
·sql注入
·認證繞過
·缺少服務端輸入驗證
·註冊表存儲明文密碼
·文件中存儲明文敏感數據
·弱文件上傳控制
·弱輸入驗證
·無代碼混淆
Beta Bank編寫時包含了以上這些漏洞,同時也增加了一些額外的安全問題:
·未加密的數據庫連接
·硬編碼連接字符串
·弱口令存儲
·自定義加密實現
已發佈
1. The GUI
2. The Network
Youtube視頻介紹:https://youtu.be/joVF53aOXX0
厚客户端滲透測試介紹是一個系列博客文章,會講到我們在執行厚客户端安全測試時用到的工具和方法。與該系列文章配套,我們發佈了兩款包含眾多漏洞的應用,一個是BetaFast,Betamax電影展台服務,一個是Beta Bank,一個金融應用。本系列中的很多案例都來自於這兩個應用,大家可以從BetaFast Github Repo這個github庫中下載,關於這兩個應用的介紹,你們可以參考第一篇文章。
概述
在NetSPI平台,我們碰到的厚客户端都是用C#寫的。這些應用一般都有兩個GUI平台,一個是windows Forms應用,一個是WPF應用。
windows Forms應用
windows Forms在2002年非常盛行,現在2020,也還有人在用。form(窗體)是由很多控件組成的,控件是典型的windows對象,比如文本框,標籤,按鈕等。每個對象都有自己的屬性,方法和事件。
下圖就是一個windows Forms登錄框:
這個應用已經存儲了管理員的憑證,接下來我們就來竊取這個憑證。
怎麼搞的?別慌,網上肯定是有工具的。有了這些工具,我們就可以查看和修改控件。第一款工具是WinSpy。只要定位到控件位置,就能查看星號對應的明文值了,比如密碼這裏。
另一款類似的工具是windows Detective,也是可以定位windows Forms對象的,選擇一個控件,就會在桌面窗口中高亮顯示,你可以查看它的屬性,包括密碼明文:
接下來,我們來看另一個windows Forms案例,這個應用在客户端驗證用户身份,還有一個標識用户角色的灰色文本框,無法更改:
但是通過WinSpy和windows Detective工具,我們可以將屬性值設置為Admin。
當然了,我們也可以啓用這個屬性值,如圖:
一些應用程序為了防止SQL注入攻擊和其他攻擊,可能會限制輸入長度和輸入字符類型。但是,依賴客户端控件來實現根本沒用。
WPF應用
WPF應用比windows Forms稍加複雜,因此自定義設計功能也更多一些。對於這個平台,我們也需要基於WPF的工具,如Snoop。
首先以普通用户身份登錄到BetaFast,可以看到有4個主菜單,首頁,購物車,設置,退出。
運行snoop,然後選擇正在運行的BetaFast進程,就可以對它進行調試,菜單樹可以展開,這裏就能看到AdminVisiability的屬性,它本來是設置為隱藏的。
將這個屬性值設置為“顯示”,就能看到只有管理員才能查看的功能菜單了,如圖:
就這個屬性本身來説,其實並不算是一個漏洞,只是沒有做好校驗。在普通用户無法訪問的受控頁面中的所有功能,都應該進行服務端校驗。然而,大多數情況卻並非如此。如下,一個普通用户可以創建管理員賬號,並查看數據庫中的所有賬户。
付款頁面的總金額數也是在客户端校驗:
這危害就很大了,我們可以使用snoop來修改金額來享受折扣價,甚至把金額改成負數,這樣還能額外收穫一筆錢:
總結
在厚客户端中修改GUI元素是非常簡單的,特別是還有一些非常好用的工具。這些漏洞的修復也比較簡單,措施如下:
·在服務器端進行認證和輸入驗證
·不要在客户端的GUI設計元素上存儲敏感數據
我會在我們的BetaFast github repo庫上添加另一個鏈接。希望大家可以多嘗試幾個案例。
敬請期待我們厚客户端滲透介紹的下一篇文章。