浅谈安全漏洞及工具

一,什么是安全漏洞

      安全漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。举例来说,比如最近一次的Log4j 漏洞事件,攻击者仅需向目标输入一段代码,不需要用户执行任何多余操作即可触发该漏洞,使攻击者可以远程控制用户受害者服务器,90% 以上基于 java 开发的应用平台都会受到影响。

二,安全漏洞如何产生

      安全漏洞往往会给公司带来极大的麻烦。攻击者会利用它们去攻击普通用户、管理员以及连接和使用此类应用的用户。超过50%的安全漏洞是由错误的编码产生的,开发人员一般安全开发意识和安全开发技能不足,更加关注业务功能的实现。想从源头上治理漏洞就需要制定代码检测机制,在开发阶段对源代码进行安全测试发现安全漏洞的测试方案。

三,常见的安全漏洞

(1).   注入

      注入攻击漏洞,例如SQL,OS以及 LDAP注入。这些攻击发生在当不可信的数据作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据。

      拿SQL注入为例,SQL 注入是最常见的注入攻击类型之一。攻击者通过应用程序提供恶意 SQL 语句从而控制后端数据库服务器。当应用程序接受恶意用户输入,然后将其用作 SQL 语句的一部分来查询后端数据库时,就会发生这种情况。

      攻击者可以注入 SQL 控制字符和命令关键字(例如,单引号 (')、双引号 ()、等于 (=)、注释 (- -) 等)来更改查询结构。将这些控制字符与常见的 SQL 命令(例如,SELECT、FROM、DELETE 等)结合使用,可以从后端数据库服务器访问或检索数据元素。

      下面是一段用于接受用户用户名和密码的代码。用户提供的输入会制作针对数据库执行的 SQL 查询。数据库包括一个名为“user”的表,其中包含用户名和密码列。

Public Boolean authenticate (String name, String pass)

{

    Statement stmt = this.conn.createStatement();

   String sql = “SELECT name FROM user WHERE name=’ ” + name + “ ’ AND passwd =’ ” + pass + “ ‘ ”;

    ResultSet results = stmt.executeQuery(sql);

    return results.first();

}

      现在一个攻击者,他试图使用“password' OR 'a'='a”密码值作为注入信息向应用程序进行身份验证。在应用程序登录期间,将对数据库服务器执行以下 SQL 语句:

      从用户中选择名称 WHERE NAME='admin' AND passwd='password' OR 'a'='a'

执行此查询后,攻击者会成功向应用程序进行身份验证,因为'a'='a'始终返回 true,从而导致身份验证绕过。

      成功攻击后,攻击者可以获得&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值