厚客户端渗透介绍(一):GUI测试 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

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

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

导语:厚客户端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/如若转载,请注明原文地址
  • 分享至
取消

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

扫码支持

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

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务