APP下载

基于Web APP的SQL注入攻击路径探析及防范研究

2014-12-12尹向兵

巢湖学院学报 2014年6期
关键词:用户名后台账号

尹向兵 周 婷

(1 安徽警官职业学院教务处,安徽 合肥 230031)(2 安徽城市管理职业学院国际商务系,安徽 合肥 230011)

1 引言

在Web应用程序架构中,大部分都是配合数据库来保存相关的数据。例如会员登录、留言板、讨论区的账号、密码、真实姓名、住址及联系电话等个人信息,或是购物系统的商品与价格等数据记录,都是动态存储在数据库中。

Web应用程序使用SQL语句来操作数据库。例如,select表达式用来读取数据库的记录,insert表达式用来在数据库中插入新的记录,delete表达式用来删除数据库中的记录。设置了SQL语句的字符串后,使用数据库query这类的函数来将SQL语句传递给数据库系统处理,数据库处理完后,会返回Web应用程序所需要的数据库记录。

SQL注入攻击(SQL Injection)是利用在客户端的网页中输入数据,例如,在会员登录文本框中输入用户的账号和密码,用户在提交会员登录文本框的数据后,Web应用程序会将这些账号和密码与网站数据库中的相关记录相比较,或是插入到数据库内。

2 SQL注入基本原理

2.1 什么是SQL注入

一般来说,SQL注入是应用SQL命令插入到Web网页页面表单中输入查询值,或者是输入域名或页面请求的值传递查询字符串,从而完成欺骗服务器,在站点数据库中执行恶意的SQL命令。如前几年很多娱乐网站和部分交易所站点泄露站点会员信息等情况,大多数就是利用动态网站表单递交查询字符暴出来的,这类表单特别容易受到SQL注入式攻击[1]。

当应用程序使用输入内容来构造动态SQL语句以访问数据库时,会发生SQL注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生SQL注入。

2.2 SQL注入攻击原理

当客户端访问服务器数据库时,有时产生错误信息,SQL注入攻击需要利用服务器返回出错信息判断进行网络攻击。当然,攻击的网站是动态网站才有可能存在注入漏洞,如ASP、PHP、ASP.NET、JSP等服务端技术开发的网站。一般访问地址存在参数传递,有时有一个参数,有时有多个参数, 形式如 http://www.sina.com.cn/abc.aspx?id=xx等,参数可以是整型或字符串。总之,对于动态连接数据库的网站都可能存在SQL注入漏洞[2]。

当访问带参数地址连接时,SQL注入攻击利用构建特殊的值输入,通过现有的SQL语句,再组合输入的特殊字符,完成SQL语句组合,将输入的值作为传入服务器程序,当服务器执行到构建的SQL语句从而执行攻击者语句,完成他们想要的操作。以应该程序的用户管理表中数据的查询情况为例,说明SQL注入攻击的一般原理。

用户登录后台网站,首先应进行登录验证,一般是用户管理表一类,在此表中对用户名和密码两个字段值进行查询,通过SELECT语句完成查询操作,在SELECT语句中通过比对用户名和密码,完成身份验证进行授权访问,一般使用的查询语句为:

Select*from XXX where 用户名=“tbxname.Text”and 密码=“tbxpwd.Text”;

上述语句中,若我们给用户名和密码字段内赋值“用户名’or 1=1--”和”qqq”,则查询分析器中显示为select*from users where用户名=’admin’or 1=1--and 密码=’qqq’,这个查询语句分别进行两个判断,我们都知道1=1在逻辑判断上始终是恒成立的,完成万能秘钥输入判断[3]。

3 常用注入工具及攻击过程介绍

3.1 以明小子工具为例

本部分内容是基于实验室模拟沙盘实现:某公司的web服务器IP为 192.168.72.81,, 存在SQL注入漏洞,明小子是专门检测和入侵这样的网站,在互联网上用明小子等工具来攻击这样网站的方法大致如下:

步骤一:用明小子测试该 192.168.72.69(内网沙盘服务器地址)网站是否存在这样漏洞,如有继续。否则重复步骤一;

步骤二:对表进行猜解;

步骤三:对表中的字段进行猜解;

步骤四:对表中的字段内容进行猜解;

步骤五:对管理入口进行扫描;

步骤六:用刚才猜解得到的管理员账号进行登录,进入网站后台;

步骤七:上传文件即小马;

最后上传大马获取webshell,再慢慢提权,这就是web渗透的全过程。

3.2 万能密码攻击

本部分内容是基于实验室模拟沙盘实现:某公司的 web 服务器 IP 为 192.168.72.81,端口号8080,存在SQL注入漏洞,万能密码就是攻击方法之一,进入该公司web服务器的主页面即为登录页面,我们知道该公司的登录账号是aaaaaa,但是不知道该账号的密码,现在我们用万能密码来进行攻击,登录成功后显示该网站的账号及密码信息。

方法一:在账号文本框中输入用户名和万能密码,密码框为空,以本例题为例如:aaaaa’or’1’=’1;

方法二:在账号框和密码框都输入万能密码,以本例题为例如:’or’1’=’1。进入网站后台。

3.3 互联网中实战

步骤一:寻找互联网中动态网站,复制带参数的地址,如安徽某制药有限公司新闻页面地址http://XXXXXXX.20.sinchen.cn/news/shownews.asp?id=122,将地址拷贝到“旁注WEB综合检测程序Ver3.6专用版”软件的注入点一栏中,然后点击“开始检测”,若网站存在漏洞,则提示“恭喜,改URL可以注入!数据库类型:XXX数据库”,本例结果如图1所示,得出此网站存在SQL注入;

步骤二:根据在图1界面,接着依次点击“猜解表名—猜解列名—猜解内容”,得出如图2结果,根据此次操作猜解出网站后台登录用户名和密码值;

步骤三:将步骤一中网站地址复制到“管理入口扫描”界面的注入点中,再点击“扫描后台地址”,得到此网站后台登录地址列表,如图3;

步骤四:根据步骤三扫描到的后台地址,进入网站后台登录界面,再根据步骤二猜解的用户名(kui)和密码(admin)登录进入后台,此时进行后台管理;

步骤五:找到后台上传界面,上传事前设置好的大马程序,获取网站web shell,达到攻击服务器IIS应用程序目的。

图1

图2

图3

4 SQL注入攻击防范

基于脚本的SQL注入防范主要是利用网站的获取参数的地方,要防止ASP.NET Web APP被SQL注入式攻击并不是一件特别简单的事情,主要的注入攻击防范措施有如下几个方面:

4.1 URL 传值防范

对于普通id传递数值一般没什么问题,当传递的值是嵌套查询时,那么sql查询语句就变成了“select*from table1 where partid=(id delete from table2)”。一次提交多条语句,这个既方便了操作,同时给数据库带来很大的安全隐患,当SQL语句执行后,数据库table2中的数据则就被删除了。

解决办法则是验证传递过来值得数据类型,如果是整型值就不存在注入,反之则有注入的危险。通过TryParse、正则表达式或自己编写代码验证。

4.2 防猜解

此方法就是根据个人的经验猜表名,一般来说,通过语句进行判断,如 HTTP://xxx.xxx.xxx/abc.asp?p=YY and (select count(*)from TestDB.dbo.表名)>0若表名存在,则abc.asp工作正常,否则异常。如此循环,直到猜到系统帐号表的名称。

数据库表名称、表和字段名称命名既要见名知意又要添加特殊符号防猜解,特别对于用户表,如 uersname,password,user_name,pwd 等如前面提及啊D和明小子工具,这些攻击工具内保存大量常用的已知表和字段名称,很容易猜解出来。

4.3 替换单引号。 如 select*from Admin where username= ″or′1′=′1′AND password= ″or ′1′=′1′,将出现单引号的地方都替换为双引号,防止注入攻击。

4.4 限制表单或查询字符串输入的长度。如果用户的登录名字最多只有10个字符,那么不要认可表单中输入的10个以上的字符,这将大大增加攻击者在SQL命令中插入有害代码的难度[4]。

4.5 数据库中账号类表数据加密。加密(如MD5加密)用户输入的数据,然后再将它与数据库中保存的数据比较,这相当于对用户输入的数据进行了“消毒”处理,用户输入的数据不再对数据库有任何特殊的意义,从而也就防止了攻击者注 入 SQL 命 令 。 System.Web.Security.FormsAuthentication类 有 一 个 HashPassword-ForStoringInConfigFile,非常适合于对输入数据进行消毒处理[5]。

5 结语

随着Web应用技术的普及,SQL注入攻击被攻击者广泛地使用,人们对于SQL攻击已经越来越重视。本文对SQL注入攻击的方法、原理以及攻击实施过程进行阐述和总结,并给出了常用攻击方法。本文通过虚拟机在Server 2008+SQL Server 2008环境测试中通过。

[1]高明,辛阳.SQL注入攻击防范方案的分析与设计[A].2011年通信与信息技术新进展——第八届中国通信学会学术年会论文集[C].2011.

[2]卢俊.SQL注入与XSS攻击防范方法的研究以及防范模型的设计与实现[D].北京:北京邮电大学,2011.

[3]褚龙现.ASP.NET 应用中 SQL 注入攻击的分析与防范[J].计算机与现代化,2014,(3).

[4]陈智坚.数据库 SQL 注入攻击技术与防范[J].福建电脑,2013,(2).

[5]黄辉.基于SP防范SQL注入攻击的三层信息系统安全设计研究[D].情报探索,2013,(10).

猜你喜欢

用户名后台账号
《护士进修杂志》投稿程序
彤彤的聊天账号
《护士进修杂志》投稿程序
施诈计骗走游戏账号
《护士进修杂志》投稿程序
Wu Fenghua:Yueju Opera Artist
我国社交媒体账号的对外传播之道——以“人民日报”Facebook账号“特朗普访华”议题报道为例
后台暗恋
机智的快递员
Google Play游戏取消账号绑定没有Google账号也能玩