• 基础却容易被忽略的那点事web入侵方式及注意事项总结


    2010年11月8日,在勿勿发布完 支持多语言、多用户、多数据库、完美URL之路过秋天版博客发布[绝对有杀伤力的博客] 之后

    不少网友纷纷给力,对演示网站 http://www.cyqdata.com/ 进行了一次大测试,除了发表评论脚本未编码之外,还有一重大发现:

    有个“犀利哥”入侵我的演示用户账号,修改了我的文章,还清空了评论。

    于是,我很给力的发挥想象对方可能的入侵手段,并给予总结了一下

    1:伪造Cookie实现欺骗登陆

    我们先看一下如何才能实现这种方式:

    1:下载我提供的版本发网站应用程序

    2:在演示网站注册用户,并研究登陆后生成的Cookie

    2:反编绎,并能很好的定位发现,在哪里对Cookie进行加密码

    3:在本地新建网站并用IIS绑定主机头,用host域名欺骗方式输出Cookie,输出指定用户

    4:删除网站和host欺骗

    如果很好的完成了以上步骤,我猜测是一种入侵方式。

    但是我明显把对方的入侵手段想的太高明,因为如果要实现这种方式,不是刷刷刷就可以做到的,需要花很长的时间和对程序的了解。

    难点是?

    一是要对系统有很好的把握,虽然我提供的应用程序没对DLL进行加密或混淆,不过要反编绎研究起来,不是高手估计不是一会半时能理解的清的。

    二是第一时间研究加密的Cookie?一般人第一时间都不会有这个念头,至于我会想到这种方式,原因在于我发布的应用程序的加密方式和我演示的是一致的。

    三是新建网站做host欺骗,输出等操作,很烦锁,除非思路一开始便很清晰,不然动起手来没这么快。

    于是为了验证是不是这种方式实现的入侵,我第一时间是修改了演示代码的加密方式,并把所有的示例用户密码重置为******

    可是不一会,“犀利哥”的再次留言,很明显证实了不是采用这种方式。

    有想象也好,至少能引发改进,接下来发布的版本,将对密码加密方式采用密钥形式,保证每个应用程序的加密不一致。

    2:Post 入侵

    我们先看一下如何才能实现这种方式:

    前提:代码中缺少用户是否在线判断 或者 缺少当前用户的提交文章的用户是否同一用户

    1:研究后台Post的html,简单的或者直接copy出来

    2:提交Post,指定别人的文章ID,和自己的内容,以此将自己的内容写入到别的用户去。

    第二猜想原因:

    之所以这么想:是以为自己对登陆用户ID取自Url路径中的用户名,

    如此用户在Post中的action路径指定到另一用户的路径时,造成用户取值错误,从而可产生入侵点。

    后来审了下代码,发现取值还是OK的,再看代码中对删除添加等操作都有是判断的,

    因此文章内容被修改,有可能是这种方式,不过评论被删,便明显确定不是这种方式入侵。

    不过还是修改了代码,并更新到演示项目中,接着发现“犀利哥”的再二次留言。

    有想象也好,至少能引发改进,把代码重新调整了下,保证后台的每个调用都对用户进行验证。

    3:SQL注入

     

    虽然这是最基本的方式,却被我放在最后想象,大概代码写的太多了。

    实现方式,自然是构造组合sql了

    我们来看一下默认没有对输入进行合法过滤,只靠底层过滤了“--”和“;”号,看下如何构造入侵语句:

    比如登录时:select * from Users where username='{0}' and password='{1}'。

    正常的第一手法都会构造username='cyq1162' or 1=1--,不过默认--被低层过滤了。

    用户名输入为:cyq1162' or 1=1--

    于是尝试第二手法构造:username='cyq1162' update Users set username='x' where '1'='1 

    用户名输入为:cyq1162' update Users set username='x' where '1'='1 

    于是成功入侵,当然构造SQL注入的方式多种多样,不仅限于上面的两手。

    除了登录,在URL参数参数里,对一些ID也漏了点网,好心的网友也提醒了。

    另:在我的界面中,限制了用户名15个字符的输入,如何输入更多字符,用firefox编辑下html即可提交

    如果没猜错,“犀利哥”应该就是此种方式入侵的,在我封掉注入之后,再不见其留言了~~

    最后,欢迎大伙继续使劲的测试:http://www.cyqdata.com/

    新版本估计会在近一两天随使用帮助一起发布。

  • 相关阅读:
    上下文调用(call , apply , bind)
    源码学习第七天(水滴石穿)
    学习源码第六天(加油别放弃)
    学习源码第五天(难得可贵)
    学习源码第四天(昨天只看了一点正则,发现正则真的水很深,但很有魅力)
    简单谈谈$.merge()
    学习源码第三天(短暂的坚持)
    学习源码第二天(渐入佳境)
    jquery源码学习第一天
    经典面试题简单分析
  • 原文地址:https://www.cnblogs.com/cyq1162/p/1873127.html
Copyright © 2020-2023  润新知