美文网首页程序员让前端飞
【软件安全】一次投票活动带来的反思

【软件安全】一次投票活动带来的反思

作者: 姚冰coding | 来源:发表于2017-09-03 08:07 被阅读0次

    【软件安全】一次投票活动带来的反思

    作为一个开发人员,软件可用是最低要求,软件的健壮则是更高的要求,软件安全很多时候基本等于0。绝大多数企业的应用,都会忽略软件安全的因素,看不见的地方有时候才是真实的。

    抽丝剥茧

    投票页面:


    遍历会员数量

    通过跟踪Ajax请求,发下提交之后,触发ajax

    submit?mid=314925&set=2&DATA=85%7C0&voteId=85&voteCateIds=0
    

    修改其中的mid返回以下内容

    {"data":null,"message":"会员信息不存在!","status":"FAILURE"}
    

    通过遍历mid,可以遍历出他的会员数量!

    刷票

    原理和上面是一样的,我们修改mid之后,就可以伪造投票

    网站架构

    修改网址之后,返回404



    JFINAL 1.6 这应该是个框架,经过查阅资料,发现这是个java框架,这时候事情就好办多了,我们稍微了解框架,就能获得这个后台页面的登陆地址。

    获取网站数据

    获得系统权限之后,事情就很简单了,系统总会要展示数据给前端,这时候基本就是ajax请求,我们看看他们的请求格式:

    admin/member/list?sEcho=3&iColumns=12&sColumns=&iDisplayStart=0&iDisplayLength=14122&mDataProp_0=0&mDataProp_1=1&mDataProp_2=id&mDataProp_3=name&mDataProp_4=id_card&mDataProp_5=gender&mDataProp_6=card_no&mDataProp_7=birth&mDataProp_8=phone&mDataProp_9=&mDataProp_10=status&mDataProp_11=&iSortCol_0=0&sSortDir_0=asc&iSortingCols=1&bSortable_0=false&bSortable_1=false&bSortable_2=true&bSortable_3=true&bSortable_4=true&bSortable_5=true&bSortable_6=true&bSortable_7=true&bSortable_8=true&bSortable_9=false&bSortable_10=true&bSortable_11=true&name=&card_no=&phone=&_=1502437850901
    

    重要的是这个字段

    iDisplayStart=0&iDisplayLength=14122
    

    他请求的是长度,我们可以通过修改iDisplayLength,获取所有资料。返回的数据包含了用户id,用户姓名,手机号,生日,地址,基本就是数据库所有字段了,开发根本没有做过滤!
    可能他的SQL语句是这样:

    SELECT * FROM table WHERE ID=id
    

    数据分析

    获取手机号之后,可以进行数据的分析,很容易看出这个活动的效果。

    根据手机号获取归属地

    https://github.com/SuperID/query-mobile-phone-area

    根据归属城市获取地理坐标

    https://github.com/lifebeatiful/lat_long_of_major_china_city

    数据可视化

    根据以上内容,结合百度的echarts,就可以实现数据的可视化!

    fake

    在查看数据的过程中,发现了大量的这样的数据



    嘿嘿,原来虚假投票已经大量的开始了。

    总结

    产品的开发总是困难的,从想法到实现,总是一段漫长的旅程,我们在实现产品的同时,也要充分考虑安全的因数,特别是这种面向外部的系统~

    相关文章

      网友评论

        本文标题:【软件安全】一次投票活动带来的反思

        本文链接:https://www.haomeiwen.com/subject/erudjxtx.html