免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 22744 | 回复: 11

黑客恶意注入SQL命令,是开发的大意还是测试的疏忽? [复制链接]

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-09-12 06:20:00IT运维版块每日发帖之星
日期:2015-09-21 06:20:00
发表于 2015-10-15 18:01 |显示全部楼层
获奖详情:http://bbs.chinaunix.net/thread-4203429-1-1.html

近日中信证券山东站点发现被黑客通过SQL注入的方式渗透到内网,最终导致大量客户信息泄露。因为系统存在漏洞才会让黑客利用应用程序,将恶意的SQL命令注入到后台数据引擎执行,从而获取非法数据和权限。中信证券大量客户信息被泄露,纠结谁该背锅?是开发的大意还是测试的疏忽?在信息安全尤为重要的今天,我们将如何保证我们的软件不存在SQL非法注入?
QQ图片20151019155440.png

1. SQL非法注入危害有哪些?
2. 如何检索我们需要的数据?如何通过SQL注入更新和改变数据库中的数据?
3. 如何在开发环节避免SQL注入,你用过哪些方法?
4. 在测试过程中,你用过哪些方法来检测SQL注入?


讨论时间:2015年10月19日—2015年11月19日


奖品设置:
活动结束后,我们将选取4名讨论精彩的同学送《Oracle 12c PL/SQL  程序设计终极指南》。
63568855119789157445710.jpg

    出版社: 机械工业出版社
    ISBN:9787111503286
    版次:1
    商品编码:11712238
    包装:平装
    丛书名: 数据库技术丛书
    开本:16开
    出版时间:2015-06-01
    用纸:胶版纸
    页数:705

内容简介:
全书按照PL/SQL程序设计的实际需要进行组织,分基础篇、开发篇、高级篇三篇。基础篇介绍了PL/SQL程序设计的基础知识,包括基本语法、控制结构、游标、异常处理等;开发篇介绍了PL/SQL程序最实用的开发技术,包括子程序、包、触发器、动态SQL、批绑定、子程序依赖性等;高级篇介绍了Oracle对象、LOB大对象、作业调度管理、性能优化以及PL/SQL内置包等高级特性。

试读样章: Oracle 12c PLSQL 程序设计终极指南 试读.pdf (3.54 MB, 下载次数: 55)

论坛徽章:
13
数据库技术版块每日发帖之星
日期:2015-08-06 06:20:002017金鸡报晓
日期:2017-02-08 10:39:422017金鸡报晓
日期:2017-01-10 15:13:29极客徽章
日期:2016-12-07 14:08:02JAVA
日期:2016-10-25 16:01:09luobin
日期:2016-06-17 17:46:362016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之天津
日期:2015-12-16 22:35:03黄金圣斗士
日期:2015-11-24 10:43:13IT运维版块每日发帖之星
日期:2015-10-09 06:20:002015亚冠之广州恒大
日期:2015-09-21 21:40:222015七夕节徽章
日期:2015-08-21 11:06:17
发表于 2015-10-19 16:57 |显示全部楼层
1. SQL非法注入危害有哪些?

    > 数据泄露
    > 数据删除
    > 数据篡改
    等等

2. 如何检索我们需要的数据?如何通过SQL注入更新和改变数据库中的数据?

   这个检索是指注入获取?

   打开浏览器-->打开网站-->按F12--->点击按钮--->查看发送请求--->猜测业务模型--->构造SQl

   比如这个请求:url?uid=1
   篡改为:         url?uid=1'or1=1

   如果存在漏洞,则可能将该表中所有用户的数据列出来。

   至于更新改变也是类似操作


3. 如何在开发环节避免SQL注入,你用过哪些方法?

   在java开发中,不使用拼SQl的方式,使用预处理语句可避免,现在的ORM框架也都能预防SQL注入,就怕开发人员不按规矩来

4. 在测试过程中,你用过哪些方法来检测SQL注入?

  这个不清楚,没做过这种测试。
  很多测试人员也不会测
  这个应该属于安全测试类别,只有这类的测试人员估计才能做。

开发的话,都是通过代码审核来发现可能潜在的问题

论坛徽章:
32
CU大牛徽章
日期:2013-05-20 10:45:13每日论坛发贴之星
日期:2015-09-07 06:20:00每日论坛发贴之星
日期:2015-09-07 06:20:00数据库技术版块每日发帖之星
日期:2015-12-13 06:20:0015-16赛季CBA联赛之江苏
日期:2016-03-03 11:56:13IT运维版块每日发帖之星
日期:2016-03-06 06:20:00fulanqi
日期:2016-06-17 17:54:25IT运维版块每日发帖之星
日期:2016-07-23 06:20:0015-16赛季CBA联赛之佛山
日期:2016-08-11 18:06:41JAVA
日期:2016-10-25 16:09:072017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:33:21
发表于 2015-10-19 17:24 |显示全部楼层
本帖最后由 jieforest 于 2015-10-19 18:49 编辑

真恐怖,关注。


1. SQL非法注入危害有哪些?
危害很多。
1)获取部分或整个数据库的数据
2)删除或修改现有的数据库
3)破坏网站的运营
4)曝光数据

2. 如何检索我们需要的数据?如何通过SQL注入更新和改变数据库中的数据?
检索数据肯定是SELECT语句嘛。
要实现SQL注入,比如可以这样输入
and 1=(SELECT IS_SRVROLEMEMBER(sysadmin));--
又比如
union select 1 from information_schema.tables

3. 如何在开发环节避免SQL注入,你用过哪些方法?
1)对用户提交的输入信息进行验证,确保内容的合法。
在客户端,可以通过网页上的JS,对内容进行过滤,让提交的内容合法。
在服务器端,同样需要检查用户输入的内容,再次验证。
2)将用户的敏感信息进行加密处理
将用户提交的敏感信息如密码等,先加密处理,再与数据库的内容进行比对,由于密文是无特殊意义的,也就失去了攻击的可能。
3)编写存储过程来执行所有的查询
可以防止攻击者利用单引号和连字符实施攻击。

4. 在测试过程中,你用过哪些方法来检测SQL注入?
1)使用专业的漏洞扫描工具
有这些:SQL ower Injector、SQLIer、SQLMap、SQLNinja、SQLID、Pangolin、BSQL Hacker、The Mole、Havij、Enema SQLi、sqlsus、Safe3 SQL Injector、SQL Poizon等。
其中,BSQL Hacker和Enema SQLi用得较多。

论坛徽章:
18
卯兔
日期:2013-09-27 17:41:0615-16赛季CBA联赛之佛山
日期:2016-07-09 17:34:45操作系统版块每周发帖之星
日期:2015-12-02 15:01:04IT运维版块每日发帖之星
日期:2015-12-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-07 06:20:00IT运维版块每日发帖之星
日期:2015-10-03 06:20:00IT运维版块每日发帖之星
日期:2015-10-01 06:20:00羊年新春福章
日期:2015-04-01 17:56:06拜羊年徽章
日期:2015-04-01 17:56:062015年迎新春徽章
日期:2015-03-04 09:49:452015年辞旧岁徽章
日期:2015-03-03 16:54:15天秤座
日期:2015-01-14 06:39:28
发表于 2015-10-19 19:46 |显示全部楼层
好活动,好书,支持..........

论坛徽章:
4
IT运维版块每日发帖之星
日期:2015-08-04 06:20:00IT运维版块每日发帖之星
日期:2015-10-10 06:20:002015亚冠之阿尔艾因
日期:2015-11-08 10:27:01CU十四周年纪念徽章
日期:2020-11-05 14:10:23
发表于 2015-10-20 16:25 |显示全部楼层
1. SQL非法注入危害有哪些?
   可以获取网站数据,还可以生成网站后门,后门程序可以得到用户的权限,包括对数据库的增删查改,甚至文件的修改,因为mysql 支持select   into outfile的写入文件的功能。
   
2. 如何检索我们需要的数据?如何通过SQL注入更新和改变数据库中的数据?
    sql注入的手法非常灵活,通过sql语句的select 后面加and,or等子句,如
    猜表名:And (Select count(*) from 表名)<>0
    获得数据库连接用户名:;and user>0
    绕过后台:select admin from adminbate where user=''or 'a'='a' and passwd=''or 'a'='a';
   等等,

3. 如何在开发环节避免SQL注入,你用过哪些方法?
    要防御SQL注入,用户的输入就绝对不能直接被嵌入到SQL语句中,可以使用参数化的语句,尽量不要拼接SQL语句

4. 在测试过程中,你用过哪些方法来检测SQL注入?
   可以手工检测,也可以利用工具进行检测

论坛徽章:
1
lufei
日期:2016-06-17 17:49:16
发表于 2015-10-21 09:24 |显示全部楼层
国产码农技术真他娘的菜回复 1# 第一最寂寞i


   

论坛徽章:
80
20周年集字徽章-庆
日期:2020-10-28 14:09:1215-16赛季CBA联赛之北京
日期:2020-10-28 13:32:5315-16赛季CBA联赛之北控
日期:2020-10-28 13:32:4815-16赛季CBA联赛之天津
日期:2020-10-28 13:13:35黑曼巴
日期:2020-10-28 12:29:1520周年集字徽章-周	
日期:2020-10-31 15:10:0720周年集字徽章-20	
日期:2020-10-31 15:10:07ChinaUnix元老
日期:2015-09-29 11:56:3020周年集字徽章-年
日期:2020-10-28 14:14:56
发表于 2015-10-21 14:03 |显示全部楼层
友情支持,对于这方面没有涉及啊

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
发表于 2015-10-24 10:29 |显示全部楼层
本帖最后由 lsstarboy 于 2015-10-24 10:31 编辑

1. SQL非法注入危害有哪些?

sql注入是危害比较大的一种手段,也是非常常见,并且黑客最常用的一种。获取用户信息是小事,有些大点的漏洞会有数据库的写权限。

2. 如何检索我们需要的数据?如何通过SQL注入更新和改变数据库中的数据?

sql注入一般靠特殊字符来拼接,将正常的查询截断,变正带有攻击性的查询语句。

3. 如何在开发环节避免SQL注入,你用过哪些方法?
php的话,最好使用pdo来进行查询、更新等工作,有了prepare的步骤,可以防止大多数的sql注入,因为pdo查询、更新等使用的是占位符,后面到来的真实数据不会插入到sql语句中,从根本上提高了防御注入的能力。
(1)如上所述,使用pdo,会使注入风险大幅度下降;
(2)对所有REQUEST进行过滤,但这会影响性能,小系统可以使用;
(3)不允许模块、用户程序直接操作REQUEST(包括GET、POST、UPDATE等),而使用专门过滤过的接口来处理,这样不是太影响性能;
(4)在获取用户数据的时候,必须进行严格过滤,白名单制更安全一些,比如姓名字段,就只能使用2-5个汉字。
       程序在获取所有数据时,不能直接操作,而必须指定类型,比如:password,xm(姓名),interger,email,phone-number等,这样基本上可以杜绝注入。
(5)sql注入最常用的几个字符:单引号、双引号、重音符号等,一定要过滤、过滤再过滤;另外还要注意%2F的形式,有时系统会自动转为特殊符号。

4. 在测试过程中,你用过哪些方法来检测SQL注入?

sqlmap比较好用,另外安全工作,kali是不二之选。

论坛徽章:
39
白银圣斗士
日期:2015-11-24 10:40:40酉鸡
日期:2015-03-20 14:15:44寅虎
日期:2015-03-20 14:13:59午马
日期:2015-03-20 14:13:16白羊座
日期:2015-03-20 14:12:54金牛座
日期:2015-03-20 14:12:09双子座
日期:2015-03-20 14:11:57巨蟹座
日期:2015-03-20 14:11:44狮子座
日期:2015-03-20 14:11:29亥猪
日期:2015-03-20 14:16:24戌狗
日期:2015-03-20 14:16:40申猴
日期:2015-03-20 14:17:05
发表于 2015-10-24 10:31 |显示全部楼层
1. SQL非法注入危害有哪些?
轻着访问到了不该访问的数据.重者可以直接拿到数据库权限.这个在mysql,mssql上是有案例的,特别是早期的mssql.

2. 如何检索我们需要的数据?如何通过SQL注入更新和改变数据库中的数据?
sql注入,可以分为单行注入,和多行注入.单行注入,就是这个注入漏洞智能执行一条sql语句,这种构造起sql比较累,需要对sql比较了解才行.
多行注入,就是这个注入语句可以执行多条sql,这个好办很多.一般的sql都是以`;`结束,拼接多条就好了.伪代码可以是: origin select sql; new update select sql; origin select sql;

3. 如何在开发环节避免SQL注入,你用过哪些方法?
用一些表映射代码库操作,这种库一般有做非法字符检查.url参数检查,过滤非法字符.sql尽量不用用拼接模式,如果用拼接模式,拼接完之后,做sql检查.sql操作一般都提供预处理模式,可以避免很多sql注入.能用非字符串的,尽量不要用字符串.
sql错误不抛出到页面,可以记录到数据库.这样就算有sql注入,因为没有信息输出,就很难界定注入点了.

4. 在测试过程中,你用过哪些方法来检测SQL注入?
url参数后面加上`;`,` --`, ` and 1=1 `, `#`等字符来做简单判断

论坛徽章:
7
2015年中国系统架构师大会
日期:2015-06-26 14:01:38技术图书徽章
日期:2015-12-15 16:42:2715-16赛季CBA联赛之辽宁
日期:2015-12-16 11:01:33shanzhi
日期:2016-06-17 17:59:312017金鸡报晓
日期:2017-01-10 15:19:562017金鸡报晓
日期:2017-02-08 10:39:42
发表于 2015-10-24 15:10 |显示全部楼层
1. SQL非法注入危害有哪些?
      SQL注入漏洞的危害不仅体现在数据库层面,还有可能危及承载数据库的操作系统;
      如果SQL注入被用来挂马,还可能用来传播恶意软件等,这些危害主要包括:
  数据库信息泄漏:数据库中存储的用户隐私信息泄露。
  网页篡改:通过操作数据库对特定网页进行篡改。
  网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
  数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
  服务器被远程控制,被安装后门:经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
  破坏硬盘数据,瘫痪全系统。
2. 如何检索我们需要的数据?如何通过SQL注入更新和改变数据库中的数据?
利用SQL注入获取数据库数据,其方法可以大致分为联合查询、报错、布尔盲注以及延时注入,通常这些方法都是基于select查询语句中的SQL注射点来实现的。当发现了一个基于insert、update、delete语句的注射点时(比如有的网站会记录用户浏览记录,包括referer、client_ip、user-agent等,还有类似于用户注册、密码修改、信息删除等功能),还可以用如上方法获取我们需要的数据。
3. 如何在开发环节避免SQL注入,你用过哪些方法?
主要方法有:
1.过滤URL中的一些特殊字符,动态SQL语句使用PrepareStatement..
2.注入的方式就是在查询条件里加入SQL字符串. 可以检查一下提交的查询参数里是否包含SQL,但通常这样无益.
最好的办法是不要用拼接SQL字符串,可以用prepareStatement,参数用set方法进行填装
3.sql注入形式:...where name="+name+",这样的sql语句很容易sql注入,可以这样:
jdbcTemplate.update("delete from userinfo where id=? and userId=?", new Object[]{userInfo.getId(),userInfo.getUserId()});
4.Sql注入漏洞攻击:如1'or'1'='1
使用参数化查询避免
cmd.CommandText="select count(*) from 表名 where username=@a and password=@b";
cmd.parameters.Add(new SqlParameter("a",".."));
cmd.parameters.Add(new SqlParameter("b",".."));
5. 前端的一些设置:
(1:向 CA 购买证书,使用 HTTPS 进行通信,以保证在网络传输过程中是安全的
(2:避免 XSS 注入(页面回显的 input text, input hidden 均过滤 <、>、"、' 等字符等)
(3:使用随机键盘或者安全控件防止键盘木马记录用户的输入
(4:若要在 Cookie 中写入数据,尽量使用 Cookie 的 HttpOnly 属性
(5:响应中设置一些诸如 X-Frame-Options、X-XSS-Protection 等高版本浏览器支持的 HTTP 头
(6: 不管客户端是否做过数据校验,在服务端必须要有数据校验(长度、格式、是否必填等等)
(7: SQL 语句采用 PreparedStatement 的填充参数方式,严禁使用字符串拼接 SQL 或者 HQL 语句
4. 在测试过程中,你用过哪些方法来检测SQL注入?
以检测文本型的注入漏洞方法为例:
现在假设有一个新闻页面,URL 是 localhost/news.asp?id=123,
1. 在浏览器中打开,可以看到一个正常的新闻页面;
2. 在URL地址后面加上-1,URL变成: localhost/news.asp?id=123-1,如果返回的页面和前面不同
,是另一则新闻,则表示有注入漏洞,是数字型的注入漏洞;在 URL地址后面加上 -0,URL变成
localhost/news.asp?id=123-0,返回的页面和前面的页面相同,加上-1,返回错误页面,则也表
示存在注入漏洞,是数字型的。
否则:
3. 在URL的地址后面加上'%2B',URL地址变为: localhost/news.asp?id=123'%2B',返回的页面和
1同;加上'2%2B'asdf,URL地址变为: localhost/news.asp?id=123'%2Basdf,返回的页面和1不同
,或者说未发现该条记录,或者错误,则表示存在注入点,是文本型的。
为什么这样可以呢?
我们可以从程序的角度来考虑一下。程序员的这条语句大致应该是这样的:
select * from news where id=123
当我们在后面加上 -1 后,语句变为
select * from news where id=123-1
SQL服务器在执行这条语句时会进行运算,实际执行的是:
select * from news where id=122
这样选出来的就是另外一条新闻记录了。如果该记录存在,就是另一则新闻;否则会显示记录不存在,或者出错
。呵呵。 这也同时表示程序未对输入的数据进行过滤,存在数值型的注入漏洞。
如果 SQL 语句时这样的:
select * from news where id='123'
那么我们在后面加上 '%2B' 之后,语句变为
select * from news where id='123'+''
%2B 是 + 的URL编码。 这样之后,SQL服务器实际执行的是:
select * from news where id='123'
会返回同样的页面。
加上 '%2B'asdf 之后,语句变为
select * from news where id='123'+'asdf'
实际执行的是:
select * from news where id='123asdf'
返回页面不存在,或者显错。  
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP