zoukankan      html  css  js  c++  java
  • 记录一次探索性和安全性测试过程

     

    在测试的过程中我们的测试者一定要多加观察、总结和思考,下面分享我在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.测试总结:

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

  • 相关阅读:
    PHP安装linux
    nginx 安装
    Redis安装
    linux启动http服务
    收藏的有用的网页
    laravel框架部署后有用命令
    .net 报错access to the path c: empimagefilesmsc_cntr_0.txt is denied
    oracle 触发器
    学习Auxre记录
    mysql数据库索引
  • 原文地址:https://www.cnblogs.com/tython/p/12704521.html
Copyright © 2011-2022 走看看