在这个信息满天飞的时代,网络安全尤为重要。然而隐私数据泄露却频频发生。
泄露事件
拿后台过程
然而今天我拿到后台的这个也是个没有逻辑头脑的傻蛋写的程序。一起往下看看吧!
作为一名“耿直”的程序员,下班无聊也是逛各种技术论坛,Github、博客园、开源中国、v2ex、csdn、吾爱等等。
而就是在某论坛看到一用户上传了一个破解版的某话术APP,说是登陆即是VIP。本着感兴趣的态度下载安装,操作了一番,发现还真是破解的。
拿站过程
这样完了吗,不,双手不自觉的打开了抓包工具,抓取了该软件一波,庆幸的是该软件用的ip没有安全证书,不是SSL加密请求,所以所有的请求API返回的数据都可以直接查看。
经过不断请求分析了一波后发现,整个软件的数据都是以api的形式从后台传送数据的。在返回数据中有一些图片地址:http://47.**.***.126:80/ueditor/jsp/upload/image/20181223/1545576760006064759.jpg 让我有了突破口。
于是惯用的不断一级一级的请求测试看看有没有做权限防护,因为这一块之前是遇到没有做访问权限的,打开可以直接查看一些存储文件。如下截图,到现在还没修复(话说路径怎么都差不多?因为截图中这些文件也是话术聊天类的图片文件,不过不是这个软件的,我感觉这个app软件用的图片资料也是从这盗过去的)
该app抓到的图片地址逐级测试请求
- http://47.**.***.126:80/ueditor/jsp/upload/image/
- http://47.**.***.126:80/ueditor/jsp/upload/
- http://47.**.***.126:80/ueditor/jsp/
- …
试到根域名也没有啥可看的资源,都是Apache Tomcat/8.5.14提示的404
不过有另一个大的发现,因为根域名是后台管理页面http://47.**.***.126:80/
尝试着的输入了常用的用户名密码登陆,都是提示无该用户,不过这个页面没有验证码可以字典暴力请求破解。只是有些费时间,不过写个python脚本放到我的服务器上日夜不停的跑倒也痛快。
f12查看网页源码后,发现整个页面代码不多,js也简单。但是仔细观察js逻辑后发现,这个ajax登陆就是一个纸老虎做样子。下面贴一下该后台登陆页面的js源码,用的还是layui。
1 | layui.use('form', function () { |
仔细查看逻辑并不难拆解,首先管理员输入用户名密码,点击登陆会携带数据请求到后台,当后台返回数据时,发现用到的数据只有成功时data.id
和else的data.msg
。然后搞笑的逻辑来了,这个傻蛋程序员先是用js增加form表单,属性隐藏,表单的请求地址为/managelogin/userIndex
,然后发送的参数只有一个隐藏输入框的内容,这个内容就是登陆返回的id,然后post提交。
于是我尝试性的拼接这个地址看看返回啥,http://47.\*\*.\*\*\*.126:80/managelogin/userIndex
回车,吓!居然跳转页面了,
看这样子可能进了后台了(这就绕过了?也太垃圾了吧)。但是显示的只有用户信息列表,但是这也足够危险,发现可以直接操作用户,设置会员等。为了验证我的猜想可行,于是我在网上找了很长时间(同类软件甚多)终于找到了该软件的正版(未破解的)下载量居然有近18w。安装后用手机号登录,然后根据分配用户id,web后台查找设置永久会员,然后在手机登录后果真成为永久会员,会员到期是2118-11-22,果然这是个大bug。
回到js代码,那个自动提交表单是有id参数带过去的,于是我在地址栏ip后拼接上了id,关于id一般为1的差不多是第一个用户,有可能是管理员,于是http://47.\*\*.\*\*\*.126:80/managelogin/userIndex?id=1
回车,虽然form是post请求,但是这样拼接还是跳转页面了,果不其然到了真正的后台管理页面,这个页面菜单一竖排,并且左上角用户显示的是adminstartor,点击就一个下拉菜单是修改密码,看来指定是超级管理员的后台页面了。
看下主要菜单页面的截图
主要菜单
聊天管理(管理的数据对应打开app的首页,一万六千多条数据)
分类管理(管理的数据对应app首页的分类标题)
会员管理是开通会员的价格表,会员说明就一行数据不知道干啥的,轮播图设置就是app首页的轮播图。
聊天案例(数据管理对应app的聊天案例页)
软件营收
等等截图就不一一展示了,下面说下这个软件的盈利情况,从订单列表数据来看,收入是非常可观的,来张最新的截图
可以看到订单数达到了4w多条,不过我上午的测试发现,app内点击充值会员按钮跳转支付宝/微信不付款也会产生订单,所以实际付款人数不能具体确认。
但是从用户反馈菜单可以看到八百多条反馈,大多说的充值了没会员云云,要是有800用户充值也是赚不少钱的,够一个普通农民一年的收入了。
不过有点纠结的是为啥用户反馈充值后没有会员呢?既然能设置会员证明会员体系没问题啊,不过我猜想有可能用户充值完后没有重新登录一遍的事吧。
分析总结
虽然是拿到后台了,但是没有任何成就感。这对专业安全人员来说可能是羞耻,你拿这个让人家测试安全性能,人家可能会说:Are you kidding me?
。是的,对于程序员来说也是一种耻辱。
- 为什么能直接绕过后台呢?
我猜想这套登录体系并没有做到真正的登录。(说人话),也就是说用户根本没有登录,这是个没有登录体系的系统。真正意义的登录是要把用户信息存储到session中的。然后对请求进行拦截器权限拦截的。 - 那这个后台登录页面是干什么的?
这个问题问的好!(笑)我感觉这个伪登录是做给老板看的,开发程序的是个新手。做不出真正的登录只能这样糊弄过去就算了,至于测试,完全没有测试就上线了。或者说这是个高级聪明的程序员,故意留个漏洞给自己用(防止不结尾款?窥探用户隐私?…)。
所以一个健壮的系统是要不断进行打造测试升级的。一个小小的漏洞就足以毁掉一整个程序。