客户端指的是软件这一边的安全性,一些安全性缺失导致破解频出。
通信不加密可以直接让攻击者不修改软件的情况下,劫持流量来进行破解:
安全措施:加密数据流量。
由于个人软件的兴起,越来越多网络验证如雨后春笋不断冒出来。但是由于验证的作者个人安全意识水平参差不齐,导致有些验证作者根本不懂安全,又何谈防破解?本文将从安全设计的角度来谈谈一些网络验证历史上曾出现的漏洞和简单的防御措施(本文出现的漏洞全部已被修复)。
对于网络验证行业来说,由于不同网络验证作者的技术栈,使用开发语言多种多样,有java,php,asp甚至是易语言开发的网络验证,但是无论用什么开发语言,由于安全意识的缺乏导致的安全漏洞还是层出不穷。
sql注入漏洞拥有悠久的历史,稍微有些开发经验的开发者很容易能避免出现这类问题,但是在有一些网络验证中仍然出现。
有直接在充值卡号进行注入的:
有些可以直接在验证客户端直接注入:
sql注入漏洞轻则数据泄露,重则数据被修改,甚至远程代码执行,对于这类漏洞开发人员一定重视起来。
安全措施:过滤或者屏蔽恶意的注入代码(sql语句预编译也能很好解决此类问题)
这类漏洞对于验证的开发人员最容易出现,因为大多数开发者会忽略前端的安全,导致很多网络验证都出现过类似的问题,这里就不一一列举:
攻击者可以注入恶意的用户名,来劫持软件作者后台的管理权限,甚至可以影响到验证作者管理软件作者的后台。
安全措施: 对要显示到前端的字符串进行有效地转义。
为了增加软件破解成本,验证作者会支持软件作者自定义的一些变量或者远程函数,这类功能往往会出现一些逻辑设计问题,比如有些网络验证会
会让用户自定义javascript函数来让软件去远程调用。但是没有考虑到eval之类的全局函数,导致攻击者可以恶意构造请求包获取自定义的远程函数的源代码:
以下是危险的JavaScript全局函数列表:
甚至有些远程函数是设计成直接调用php语句,由于过滤机制不严谨,导致恶意的软件作者可以在验证服务器上执行任意代码。
安全措施: 过滤敏感函数,可以使用docker技术运行远程函数,与宿主机隔离。
0x03 横向越权
很多网络验证在设计初期没有处理好验证作者之间的关系,在数据库操作时没有加上限定语句,导致一个软件作者可以修改另一个软件作者的信息,比如为其他软件作者添加卡密,添加或者删除其他软件作者的用户等。
如下,某个所谓军工级加密的网络验证,可以为其他软件作者的软件添加用户,并且增加时长:
安全措施:数据库操作时增加限定语句0x04 CSRF攻击
很多网络验证在设计初期没有处理好验证作者之间的关系,在数据库操作时没有加上限定语句,导致一个软件作者可以修改另一个软件作者的信息,比如为其他软件作者添加卡密,添加或者删除其他软件作者的用户等。
如下,某个所谓军工级加密的网络验证,可以为其他软件作者的软件添加用户,并且增加时长:
在网络验证实际测试中,CSRF漏洞出现得特别多,这类漏洞通过结合社工,比如让一个已登录得软件作者点击一个恶意的网站中的链接即可获取或者修改后台信息,比如隐蔽性比较高的就是获取软件的所有卡密:
去掉Referer字段,发现仍然可以获取到卡密列表,说明存在CSRF漏洞 :
安全措施:对Referer字段校验或者加crsf-token。
-------------前面说了有的网络验证会用易语言去实现,那么这类网络验证又存在什么问题呢? ------------------
有些网络验证为了提供下载文件的能力,会开放文件下载接口,去下载特定目录下的文件,用户只要提交文件名就可以返回文件数据,但是由于对文件名没有校验,导致目录穿越,可以下载远程主机的任意文件。
字母盾历史上出现的漏洞:
安全措施:过滤“..”等恶意字符
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2020-4-12 10:43
被wmsuper编辑
,原因: 增加CSRF内容素材