本篇文章主要讲述的漏洞点如下:
-
逆向修改代码逻辑
-
SQL语句暴露
-
用户名枚举
-
SQL注入
-
CSV注入
-
弱口令
-
XSS
-
命令执行
-
功能逻辑漏洞
-
密码明文传输
-
DLL劫持
-
授权认证缺陷
-
未授权访问
-
非必要的数据传输
-
客户端溢出漏洞
1、逆向修改代码逻辑
案例1.1-反编译修改代码逻辑让普通用户以管理员登录
2、SQL语句暴露
SQL语句明文传输,可能被利用构造注入、越权等漏洞。我们以正方教务系统的SQL语句明文传输为例:
1)输入账号和错误的密码,点击登录,立即使用抓包工具抓包,发现系统向服务器发送了一个查询的SQL语句。
2)因为输入错误的密码,导致不能登录进去。
3)再次查看整个通讯过程,发现服务器已经把账号密码发到客户端来了:
4)整个通讯过程中的sql查询,全部都明文进行的:
注:该案例来自乌云,漏洞编号:WooYun-2013-21337。
3、用户名枚举
案例3.1 某柜台系统:
4、SQL注入
注入是一种最常见的危险漏洞,在OWASP Top 10中经常位列前三。不仅是B/S架构,在C/S架构中也经常能见到它的身影。
案例4.1 万能密码登录
我们打开DVTA,用户名处输入admin’ or ‘1’=’1 尝试用万能密码登录:
密码处随便输,然后点Login,发现成功登录:
案例4.2
参数未经过滤直接带入数据库查询:
5、CSV注入
导出到电子表格是在B/S和C/S架构都常见到的一个功能,它允许用户以CSV / XLS格式导出数据方便查看。
我们用zeng/zeng登陆,先使用Add Expenses添加该用户的数据。
点击save(如果提示faild,就算了,直接View Expenses里面改也可以), 点击View Expenses,修改price为”=2+1”
现在点击”Backup Data to Excel”保存,打开保存的expenses.csv(在你电脑的下载目录)。
发现价格处已经变为3。
6、弱口令
可尝试admin 123456等。
7、XSS
案例7.1:Foxmail7.2从xss到rce
Foxmail本身对邮件的body是有XSS filter的,但发现支持标签。meta可以干很多事情,可以自定义一个http head等,foxmail并未对meta标签的内容进行检测。
以下是能执行XSS的verctor
<meta http-equiv="refresh" content="0; url=data:text/html,%3Cscript%3Ealert%281%29%3C%2fscript%3E">
这个verctor是挺有意思的 ,利用meta标签,添加一个refresh属性,可以设置时间,这里设置的是0秒,就是立即跳转,使当前页面重定向,而重定向的页面就是data伪协议
data:text/html,<script>alert(1)</script>
相当于把页面重定向到另外一个带js的页面了,从而突破Foxmail本身的防御策略。
用meta和data伪协议这种verctor在一般网页上或许没什么用处,因为data伪协议是独立的空白域,也就是说一般不在任何域内,不像普通的xss就直接能获取当前域内的信息。而这种xss在客户端内就大有用处了。
利用XSS执行命令:
<meta http-equiv="refresh" content="0; url=data:text/html,%3Cscript%3Ewindow.open%28%27file%3A%2f%2fC%3A%2fwindows%2fsystem32%2fcmd.exe.%27%29%3C%2fscript%3E">
利用客户端的缺陷可以直接使用open打开任意程序
对 file://C:/windows/system32/cmd.exe这样的路径Foxmail本身是无法执行的,但在后面加一个"."就能突破。
漏洞证明:
点击邮箱就执行
8、命令执行
案例分析过程都太长,不列举了,自己看吧
案例8.1印象笔记窗口客户端6.15本地文件读取和远程命令执行
https://blog.knownsec.com/2018/11/印象笔记-windows-客户端-6-15-本地文件读取和远程命令执行/
案例8.2某云PC客户端命令执行挖掘过程
https://www.secpulse.com/archives/53852.html
案例8.3金山WPS邮件邮件客户端远程命令执行漏洞(Mozilla系XUL程序利用技巧)
https://www.2cto.com/article/201607/523038.html
9、功能逻辑漏洞
这类漏洞一般是由客户端功能设计不合理导致的,可以导致无授权的访问等严重后果。挖掘这类漏洞应主要关注客户端功能之间的逻辑,与Web逻辑漏洞类似。但是不同的是,功能逻辑漏洞也包括在反编译之后的部分,一般情况下通过修改关键call函数之上的跳转逻辑来进行漏洞挖掘,主要成因是客户端逻辑过于简单,采用了较少的逻辑判断。这种漏洞在具有完备功能的客户端上并不常见。
10、密码明文传输
见上节流量拦截。
11、DLL劫持
首先我们来看一下windows中DLL的查找顺序,参考链接:https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order?redirectedfrom=MSDN
1、系统标准DLL查找顺序
系统使用的标准DLL查找顺序依赖于是否设置了"安全DLL查找模式"(safe DLL search mode)。"安全DLL查找模式"会将用户当前目录置于查找顺序的后边。
"安全DLL查找模式"默认是启用的,禁用的话,可以将注册表项HKEYLOCALMACHINE\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode设为0。调用SetDllDirectory函数可以禁用"安全DLL查找模式",并修改DLL查找顺序。
Windows XP下,"安全DLL查找模式"默认是禁用的,需要启用该项的话,在注册表中新建一个SafeDllSearchMode子项,并赋值为1即可。"安全DLL查找模式"从Windows XP SP2开始,默认是启用的。
启用"安全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中所有目录。
案例11.1 DLL劫持
利用procmon搜索程序加载的dll,观察name not found。
使用如下命令生成恶意dll放置于程序加载位置,运行程序即可触发payload。
#msfvenom -p windows/exec CMD=calc.exe -f dll -o DWrite.dll
当运行DVTA时就学会弹出计算器:
12、授权认证缺陷
以下两个案例没遇到过,只写了思路,并附上了原文连接,有兴趣的朋友可以深入学习。
案例12.1 基于本地注册表的破解
某些软件通过修改注册表来进行授权认证,比如说软件要求只能使用20次,然后把还能够使用的次数保存在注册表里,我们修改注册表键值,就能一直使用该软件。
案例12.2.基于网络授权验证的hosts欺骗破解
1、找到认证请求的服务器地址。
2、猜测认证成功放回的数据,或者抓一个认证成功的包。
3、在本地构建一个假的验证服务器。
4、修改本地hosts,当访问验证服务器时指向本地的假验证服务器并返回正确的验证信息,导致验证绕过。
这两个案例来源于:https://cloud.tencent.com/developer/article/1430899
13、未授权访问
案例13.1 正方教务系统数据库任意操作
存在数据库任意操作漏洞,只需知道服务器IP,可执行任意数据库操作。
14、非必要的数据传输
案例14.1
系统登录时,某个数据包会返回系统所有的用户名和加密的MD5密码:
解密以后使用账户密码即可登录任意用户:
15、客户端溢出漏洞
这类漏洞包含属于逆向工程中比较高难度的一块,主要是由于开发时对内存的错误管理,或者程序本身的执行逻辑漏洞导致的。溢出漏洞主要会导致两类问题的出现,一是命令执行,二是拒绝服务。我们通过CesarFTP_0.99g.EXE这个软件的缓冲区溢出攻击来举例。
安装好CesarFTP后,配置一个匿名用户:
然后攻击代码中做一下简单配置:
运行程序,很快FTP客户端就崩溃了:
以上就是我所总结的C/S客户端渗透中可能遇到的漏洞类型,如果有遗漏的漏洞类型或者补充新的漏洞案例都可以联系我。总结不易,希望大家多多转发关注。