美文网首页
注入攻击

注入攻击

作者: Yix1a | 来源:发表于2019-05-30 16:18 被阅读0次
    • 注入的本质是,把用户输入的数据当代码执行,这里有两个关键条件,第一个是用户能够控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。

    • SQL注入

      • SQL注入的过程中, 如果网站的Web服务器开启了错误回显,则会为攻击者提供极大的便利。
      • 盲注
        • 所谓盲注,就是在服务器没有错误回显时完成的注入攻击。
        • 可以根据返回页面是否发生变化来判断语句是否得到执行。
      • timing attack
        • mysql中benchmark()函数,可以让同一个函数执行若干次,使得结果返回的时间要比平时要长,通过时间长短的变化,可以判断出注入语句是否执行成功。
      • 数据库攻击技巧

        • 一般性技巧
        • 命令执行
          其实都可在mysql中学习
        • 攻击存储过程
          • 在MS SQL Server和Qracle数据库中,都有大量内置的存储过程,在注入攻击的过程中,存储过程将为攻击者提供很大的便利。
          • 除了利用存储过程直接攻击外,存储过程本身也可能会存在注入楼哦对那个。
        • 编码问题
          • 要解决这种问题,需要统一数据库、操作系统、Web应用所使用的字符集,以避免各层对字符的理解存在差异。统一设置为UTF-8是一个很好的方法。
          • 由于浏览器与服务器返回的字符编码不同,也可能会存在字符集攻击,解决办法就是在HTML页面的<meta>标签中指定当前页面的charset。
          • SQL Column Truncation
    • 正确地防御SQL注入

      • sql注入的防御并不是一个简单的事情。开发者常常走入一些误区,比如只对用户输入做一些escape处理。
      • 使用预编译语句
        • 防御SQL注入的最佳方式,就是使用预编译的语句,绑定变量。
      • 使用存储过程
        • 我们还可以使用安全的存储过程对抗SQL注入。使用存储过程的效果和使用预编译类似,其区别就是存储过程需要先将SQL语句定义在数据库中。但需要注意的是,存储过程中也可能存在注入问题。因此应该尽量避免在存储过程内使用动态的SQL语句。
      • 检查数据类型
        • 检查输入数据的数据类型,在很大程度上可以对抗SQL注入。
      • 使用安全函数
      • 安全的编码函数,例如OWASP ESAPI中的实现。这个函数由安全专家编写,更值得信赖。
    • 其他注入攻击

      • xml注入
        • xml注入,也需要满足注入攻击的两大条件:用户能控制数据的输入;程序平凑了数据。在修补方案上,与HTML注入的修补方案也是类似的,对用户输入数据中包含的“语言本身的保留字符”进行转义即可。
      • 代码注入
        • 代码注入多见于脚本语言,有时候代码注入可以造成命令注入。
        • 对抗代码注入、命令注入时,需要禁用eval()、system()等可以执行命令的函数,如果一定要使用这些函数,则需要对用户的输入数据进行处理。此外,在PHP/JSP中便面动态include远程文件,或者安全地处理它。
      • CRLF注入
        • CRLF实际上是两个字符:CR是Carriage Return(ASCII 13,\r),LF是Line Feed(ASCII 10,\n).\r\n这两个字符是用于表示换行的,其十六进制编码分别为0x0d、0x0a
        • CRLF注入并非仅能用于log注入,凡是使用CRLF作为分隔符的地方都可能存在这种注入,比如"注入HTTP头"。两次'\r\n'意味着HTTP头的结束。

    相关文章

      网友评论

          本文标题:注入攻击

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