记录一次探索性和安全性测试过程

 

在测试的过程中我们的测试者一定要多加观察、总结和思考,下面分享我在19年中旬发现的一次重大Bug测试过程记录

 

1.背景:

当前系统做安全性测试,在测试过程种,有这样一个接口,该接口的作用是,前端传递sql语句到消息主体中,后端server根据这个sql语句做查询操作,再将查询结果返回到前端,最后前端根据返回的结果做相应的逻辑处理,整个流程看上去没有太大的问题,然后仔细品味会发现很大的安全问题,下面来进入探索性测试

 

2.探索过程:

该接口地址:http://ip:port/CMApi/api/database/getjsonbysql?usertoken=6739209e7e35ce26265c87b9984d33db

消息主体:

"show create smm_userlogininfo"

根据接口,我们可以得知传递sql语句返回一个类似于字典或者json格式的字符串给前端,

前端传递的sql语句一般是属于业务逻辑类型的,因此消息主体传递的一般是比较固定类型的查询语句,但如果有用户登录到系统中,获取此类接口信息,通过接口工具将消息主体自定义为增删查改类型的sql语句,那么就可能对数据库造成不可修复性的损害,下面我们进入具体的测试过程

 

3.测试过程

3.1.在测试环境数据库中新建test数据库,将消息主体修改为”drop database test;”,然后发送请求,检查响应结果和数据库中检查是否执行删除test库成功,根据消息提示和数据库检查,竟然发现能执行成功,是不是觉得不可思议,在实际的接口开发过程中竟能将这样的信息直接暴露给用户,是何等的危险

3.2.下面再进行新建、删除、清空、及查询类的消息主体更改,竟然也都能通过,还能将所有表格信息通过这个接口直接暴漏出来

 

4.解决方法:

最后将这个问题反馈给我们的开发者后,将这样的接口做了修改和隐藏,下面的开发备注的修改方式

原因:查询数据库语句在前端代码内

修改:CMAPI提供新接口查询(将代码中含有数据库脚本的移至后台)

影响范围:点击导出到站点能否查询到站点信息

 

5.测试总结:

测试工作中我们都熟知理论,但实际工作中可能非常明显而严重的问题却不能发现,所以在熟知理论的前提下我们一定要勇于探索,勇于试错,但需要以自己能控制为前提,希望读者喜欢,后续继续分享工作中遇到的严重问题集锦,谢谢大家。

posted @ 2020-04-15 12:56  此去经年归来仍是少年  阅读(239)  评论(2编辑  收藏  举报