本文仅作学习记录,如有侵权,请联系删除!
前言:
作为菜狗的我突然接到两个PC客户端渗透的任务,但我完全不会啊,慌的一批。那没办法了,看来不学习不行啊,学习是为了以后能够认真地偷懒。
客户端渗透环境配置:
具体请参考:C/S客户端渗透测试(一)客户端渗透环境配置
成功配置以后,最后打开客户端,界面如下所示:
- C/S架构中常用协议:
TCP、HTTP(S)、TDS(SQL Server和Sybase数据库所采用)
- C/S架构中常用架构:
二层架构
、三层架构
二层架构是客户端和数据库直连,大多数应用程序的处理将在客户端进行,数据库负责存储所有数据,这种结构被认为是很不安全的。
三层架构:大多数的处理是在服务器端完成,相对于二层架构风险相对较小
CheckList:
补充:
当发现某个PC软件有登录框时,若为二层架构客户端直接跟数据库交互,数据包里一定(可能)夹杂着数据库的账号密码,若数据包中未找到账号密码,则应该在软件本身或者在目录下某个配置文件中,可将软件托进IDA分析,数据库账号和密码理应在一起写入内存
信息收集:
编译信息,开发环境/语言,使用协议,数据库,ip,混淆/加密,是否加壳等。
- 查看客户端信息(如编译环境):
- 配置文件敏感信息泄露:
可以根据AES的密钥和IV来解密数据库密码
源代码硬编码信息泄露:
- 查看是否加壳:
通过PEiD查看程序是否加壳
可以看到并未加壳。
+ 登录测试:
- 检查登录后用户密码有没有保存在注册表中
- 检查用户密码有没有残留在内存中
- 检查有没有将用户密码保存在本地
- 检查调试日志中有没有泄露敏感数据
- SQL注入
- 注册表内存在敏感数据:
注册表内存在敏感数据是Windows桌面应用程序最常见的一个漏洞。注册表中可能保存了用户的登录密码、支付密码,也可能保存了手机号、身份证等敏感个人数据。
测试方法:利用regshot比较客户端运行(如登录)前后注册表差别:
登录前,先保存第一份注册表快照:
登录之后保存第二份注册表快照:
将两份快照进行比对:
- 客户端内存中的敏感数据
使用Process Hacker双击选中我们要查看的程序:
选中Memory
,点击Strings...
:
默认点击确定即可:
点击Filter
,输入password
:
发现用户名密码以及SQL语句泄露:
- 本地静态文件信息泄露:
当用户登录成功后,登录的用户名密码会被保存:
- 调试日志中存在敏感数据:
DVTA.exe > test.log
程序调试日志中泄露了登录密码和数据库用户密码:
- SQL注入:
虽然说我看不懂源码,但是sql语句我会看啊,可以发现用户可控的参数内容没有进行任何的过滤处理:
成功登录:
客户端流量分析:
- 如果是HTTP流量,可通过Proxifier将流量转发给Burp Suite
- 如果是TCP流量,利用Echo Mirage或者TCP View,再配合WireShark去捕获流量
- Echo Mirage:
单击rules,我们可以看到有两条默认的规则,我们要拦截的DVTA的FTP流量,发往192.168.107.181的21端口,据此添加一条出方向的规则,并开启
从“Process”->“Inject”选择要监听的程序DVTA,并尝试进行登录:
- TCPView:
我们可以优先运行TCPView查看应用程序连接的服务器地址是多少:
之后我们就可以使用wireshark过滤目的IP地址,仔细分析客户端和服务器之间发送的数据。
- 明文传输:
SQL语句明文传输,可能被利用构造注入、越权等漏洞:
- DLL劫持:
安全DLL查找模式
默认是启用的,禁用的话,可以将注册表项HKEYLOCALMACHINE\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode
设为0。调用SetDllDirectory函数可以禁用安全DLL查找模式
,并修改DLL查找顺序。
系统标准DLL查找顺序:
a. 应用程序所在目录;
b. 系统目录。GetSystemDirectory返回的目录,通常是系统盘\Windows\System32;
c. 16位系统目录。该项只是为了向前兼容的处理,可以不考虑;
d. Windows目录。GetWindowsDirectory返回的目录,通常是系统盘\Windows;
e. 当前目录。GetCurrentDirectory返回的目录;
f. 环境变量PATH中所有目录。
如果安全DLL查找模式
被禁用,查找顺序如下:
a. 应用程序所在目录;
b. 当前目录。GetCurrentDirectory返回的目录;
c. 系统目录。GetSystemDirectory返回的目录,通常是系统盘\Windows\System32;
d. 16位系统目录。该项只是为了向前兼容的处理,可以不考虑;
e. Windows目录。GetWindowsDirectory返回的目录,通常是系统盘\Windows;
f. 环境变量PATH中所有目录
补充:
Windows XP下,"安全DLL查找模式"默认是禁用的,需要启用该项的话,在注册表中新建一个SafeDllSearchMode子项,并赋值为1即可。"安全DLL查找模式"从Windows XP SP2开始,默认是启用的
利用process hacker或者procmon或者ProcessExplorer搜索程序加载的dll:
发现加载的DWrite.dll在系统目录下:
我们可以生成恶意dll放置于程序加载位置,运行程序即可触发payload:
msfvenom -p windows/exec CMD=calc.exe -f dll -o DWrite.dll
当运行DVTA时就学会弹出计算器:
补充:
找文件交互的地方,然后利用windows的特性,shift+右键来打开终端
详情请参考:记一次hw中的上线骚姿势(异速联+用友U8)