厚客户端渗透介绍(一):GUI测试 - 嘶吼 RoarTalk – 回归最本质的信息安全,互联网安全新媒体,4hou.com

厚客户端渗透介绍(一):GUI测试

DarkEye 技术 2020-06-02 10:15:39
收藏

导语:厚客户端BetaFast渗透介绍

BetaFast是一款集合了诸多漏洞的厚客户端,对于我们练习安全技术是很不错的。

故事起源

几年前,一个NetSPI安全顾问进入了我们的地下室,想要从仓库中找一些无指手套。地下室的过道几乎没有灯光,四处散落着一些杂物,突然一台设备引起了他的注意力。在一堆乱七八糟的满是灰尘的盒子和年久失修的转椅后面,那台设备上居然还有一个终端在闪烁着。

1.jpg

NetSPI一支最优秀的团队觉得很有意思,于是决定开始研究它。这台设备是一家叫BetaFast的公司创建的,这家公司早就已经倒闭了。这台设备的唯一目的就是分发BetaMax磁带,这种磁带已经是1975年的老古董了。团队成员们很好奇,这台设备休眠了多久?运行了多久?为什么还在运行?于是这勾起了他们的兴趣。

发布

于是这些安全专家们就开始孜孜不倦的逆向这台设备(一个电影分发展台),它的软件是一种专有语言编写的,当然了,毫无疑问,漏洞百出。

这个展台的前端和后端都是用C#写的。在接下来的几周,我们将会写一个系列博客来概述我们在这个软件上发现的漏洞。代码可以在我们的github主页上找到。另外我们也找到了原始的BetaFast的网站,已经添加到我们的github页面上了,http://www.betafast.net/

漏洞列表

我们已经发布了两款漏洞应用程序。一个是BetaFast,betamax展台应用,采用三层架构编写,另一个是Beta Bank,一个专为精英设计的高级金融应用程序,采用两层架构编写。

BetaFast包含但不限于以下漏洞:

· 硬编码加密数据

· 硬编码加密密码

· sql注入

· 认证绕过

· 缺少服务端输入验证

· 注册表存储明文密码

· 文件中存储明文敏感数据

· 弱文件上传控制

· 弱输入验证

· 无代码混淆

Beta Bank编写时包含了以上这些漏洞,同时也增加了一些额外的安全问题:

· 未加密的数据库连接

· 硬编码连接字符串

· 弱口令存储

· 自定义加密实现

已发布

1.    The GUI

2.    The Network

Youtube视频介绍:https://youtu.be/joVF53aOXX0

厚客户端渗透测试介绍是一个系列博客文章,会讲到我们在执行厚客户端安全测试时用到的工具和方法。与该系列文章配套,我们发布了两款包含众多漏洞的应用,一个是BetaFast,Betamax电影展台服务,一个是Beta Bank,一个金融应用。本系列中的很多案例都来自于这两个应用,大家可以从BetaFast Github Repo这个github库中下载,关于这两个应用的介绍,你们可以参考第一篇文章。

概述

在NetSPI平台,我们碰到的厚客户端都是用C#写的。这些应用一般都有两个GUI平台,一个是windows Forms应用,一个是WPF应用。

windows Forms应用

windows Forms在2002年非常盛行,现在2020,也还有人在用。form(窗体)是由很多控件组成的,控件是典型的windows对象,比如文本框,标签,按钮等。每个对象都有自己的属性,方法和事件。

下图就是一个windows Forms登录框:

1.png

这个应用已经存储了管理员的凭证,接下来我们就来窃取这个凭证。

2.png

怎么搞的?别慌,网上肯定是有工具的。有了这些工具,我们就可以查看和修改控件。第一款工具是WinSpy。只要定位到控件位置,就能查看星号对应的明文值了,比如密码这里。

3.png

另一款类似的工具是windows Detective,也是可以定位windows Forms对象的,选择一个控件,就会在桌面窗口中高亮显示,你可以查看它的属性,包括密码明文:

4.png

5.png 6.png

接下来,我们来看另一个windows Forms案例,这个应用在客户端验证用户身份,还有一个标识用户角色的灰色文本框,无法更改:

7.png

但是通过WinSpy和windows Detective工具,我们可以将属性值设置为Admin。

8.png

当然了,我们也可以启用这个属性值,如图:

9.png

一些应用程序为了防止SQL注入攻击和其他攻击,可能会限制输入长度和输入字符类型。但是,依赖客户端控件来实现根本没用。

WPF应用

WPF应用比windows Forms稍加复杂,因此自定义设计功能也更多一些。对于这个平台,我们也需要基于WPF的工具,如Snoop

首先以普通用户身份登录到BetaFast,可以看到有4个主菜单,首页,购物车,设置,退出。

10.png

运行snoop,然后选择正在运行的BetaFast进程,就可以对它进行调试,菜单树可以展开,这里就能看到AdminVisiability的属性,它本来是设置为隐藏的。

11.png

将这个属性值设置为“显示”,就能看到只有管理员才能查看的功能菜单了,如图:

12.png

就这个属性本身来说,其实并不算是一个漏洞,只是没有做好校验。在普通用户无法访问的受控页面中的所有功能,都应该进行服务端校验。然而,大多数情况却并非如此。如下,一个普通用户可以创建管理员账号,并查看数据库中的所有账户。

13.png

付款页面的总金额数也是在客户端校验:

14.png

这危害就很大了,我们可以使用snoop来修改金额来享受折扣价,甚至把金额改成负数,这样还能额外收获一笔钱:

15.png 16.png

总结

在厚客户端中修改GUI元素是非常简单的,特别是还有一些非常好用的工具。这些漏洞的修复也比较简单,措施如下:

· 在服务器端进行认证和输入验证

· 不要在客户端的GUI设计元素上存储敏感数据

我会在我们的BetaFast github repo库上添加另一个链接。希望大家可以多尝试几个案例。

敬请期待我们厚客户端渗透介绍的下一篇文章。

本文翻译自:https://blog.netspi.com/introducing-betafast/ 与 https://blog.netspi.com/introduction-to-hacking-thick-clients-part-1-the-gui/如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论