导航
当前位置:网站首页 > 网站入侵 > 手机版sql注入攻击软件,怎么防sql注入攻击

手机版sql注入攻击软件,怎么防sql注入攻击

作者:hacker 日期:2022-08-31 分类:网站入侵

导航:

sql注入攻击怎么解决

百度百科手机版sql注入攻击软件

SQL注入攻击是你需要担心的事情手机版sql注入攻击软件,不管你用什么web编程技术手机版sql注入攻击软件,再说所有的web框架都需要担心这个的。你需要遵循几条非常基本的规则:

1)在构造动态SQL语句时,一定要使用类安全(type-safe)的参数加码机制。大多数的数据API,包括ADO和ADO. NET,有这样的支持,允许你指定所提供的参数的确切类型(譬如,字符串,整数,日期等),可以保证这些参数被恰当地escaped/encoded了,来避免黑客利用它们。一定要从始到终地使用这些特性。

例如,在ADO. NET里对动态SQL,你可以象下面这样重写上述的语句,使之安全:

Dim SSN as String = Request.QueryString("SSN")

Dim cmd As new SqlCommand("SELECT au_lname,au_fname FROM authors WHERE au_id = @au_id")

Dim param = new SqlParameter("au_id",SqlDbType.VarChar)

param.Value = SSN

cmd.Parameters.Add(param)

这将防止有人试图偷偷注入另外的SQL表达式(因为ADO. NET知道对au_id的字符串值进行加码),以及避免其手机版sql注入攻击软件他数据问题(譬如不正确地转换数值类型等)。注意,VS 2005内置的TableAdapter/DataSet设计器自动使用这个机制,ASP. NET 2.0数据源控件也是如此。

一个常见的错误知觉(misperception)是,假如你使用了存储过程或ORM,你就完全不受SQL注入攻击之害了。这是不正确的,你还是需要确定在给存储过程传递数据时你很谨慎,或在用ORM来定制一个查询时,你的做法是安全的。

2) 在部署你的应用前,始终要做安全审评(security review)。建立一个正式的安全过程(formal security process),在每次你做更新时,对所有的编码做审评。后面一点特别重要。很多次手机版sql注入攻击软件我听说开发队伍在正式上线(going live)前会做很详细的安全审评,然后在几周或几个月之后他们做一些很小的更新时,他们会跳过安全审评这关,推说,“就是一个小小的更新,我们以后再做编码审评好了”。请始终坚持做安全审评。

3) 千万别把敏感性数据在数据库里以明文存放。我个人的意见是,密码应该总是在单向(one-way)hashed过后再存放,我甚至不喜欢将它们在加密后存放。在默认设置下,ASP. NET 2.0 Membership API 自动为你这么做,还同时实现了安全的SALT 随机化行为(SALT randomization behavior)。如果你决定建立自己的成员数据库,我建议你查看一下我们在这里发表的我们自己的Membership provider的源码。同时也确定对你的数据库里的信用卡和其他的私有数据进行了加密。这样即使你的数据库被人入侵(compromised)了的话,起码你的客户的私有数据不会被人利用。

4)确认你编写了自动化的单元测试,来特别校验你的数据访问层和应用程序不受SQL注入攻击。这么做是非常重要的,有助于捕捉住(catch)“就是一个小小的更新,所有不会有安全问题”的情形带来的疏忽,来提供额外的安全层以避免偶然地引进坏的安全缺陷到你的应用里去。

5)锁定你的数据库的安全,只给访问数据库的web应用功能所需的最低的权限。如果web应用不需要访问某些表,那么确认它没有访问这些表的权限。如果web应用只需要只读的权限从你的account payables表来生成报表,那么确认你禁止它对此表的 insert/update/delete 的权限。

6)很多新手从网上下载SQL通用防注入系统的程序,在需要防范注入的页面头部用 来防止别人进行手动注入测试(。

可是如果通过SQL注入分析器就可轻松跳过防注入系统并自动分析其注入点。然后只需要几分钟,你的管理员账号及密码就会被分析出来。

7)对于注入分析器的防范,笔者通过实验,发现了一种简单有效的防范方法。首先我们要知道SQL注入分析器是如何工作的。在操作过程中,发现软件并不是冲着“admin”管理员账号去的,而是冲着权限(如flag=1)去的。这样一来,无论你的管理员账号怎么变都无法逃过检测。

第三步:既然无法逃过检测,那我们就做两个账号,一个是普通的管理员账号,一个是防止注入的账号,为什么这么说呢?笔者想,如果找一个权限最大的账号制造假象,吸引软件的检测,而这个账号里的内容是大于千字以上的中文字符,就会迫使软件对这个账号进行分析的时候进入全负荷状态甚至资源耗尽而死机。下面我们就来修改数据库吧。

⒈对表结构进行修改。将管理员的账号字段的数据类型进行修改,文本型改成最大字段255(其实也够了,如果还想做得再大点,可以选择备注型),密码的字段也进行相同设置。

⒉对表进行修改。设置管理员权限的账号放在ID1,并输入大量中文字符(最好大于100个字)。

⒊把真正的管理员密码放在ID2后的任何一个位置(如放在ID549上)。

由于SQL注入攻击针对的是应用开发过程中的编程不严密,因而对于绝大多数防火墙来说,这种攻击是“合法”的。问题的解决只有依赖于完善编程。专门针对SQL注入攻击的工具较少,Wpoison对于用asp,php进行的开发有一定帮助...。

什么是SQL注入及SQL注入工具

随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。

但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,是高手与“菜鸟”的根本区别。

根据国情,国内的网站用ASP+Access或SQLServer的占70%以上,PHP+MySQ占L20%,其他的不足10%。在本文,我们从分入门、进阶至高级讲解一下ASP注入的方法及技巧,PHP注入的文章由NB联盟的另一位朋友zwell撰写,希望对安全工作者和程序员都有用处。了解ASP注入的朋友也请不要跳过入门篇,因为部分人对注入的基本判断方法还存在误区。大家准备好了吗?Let's Go...

入 门 篇

如果你以前没试过SQL注入的话,那么第一步先把IE菜单=工具=Internet选项=高级=显示友好 HTTP 错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误,不能获得更多的提示信息。

第一节、SQL注入原理

以下我们从一个网站开始(注:本文发表前已征得该站站长同意,大部分都是真实数据)。

在网站首页上,有名为“IE不能打开新窗口的多种解决方法”的链接,地址为:,我们在这个地址后面加上单引号’,服务器会返回下面的错误提示:

Microsoft JET Database Engine 错误 '80040e14'

字符串的语法错误 在查询表达式 'ID=49'' 中。

/showdetail.asp,行8

从这个错误提示我们能看出下面几点:

1.网站使用的是Access数据库,通过JET引擎连接数据库,而不是通过ODBC。

2.程序没有判断客户端提交的数据是否符合程序要求。

3.该SQL语句所查询的表中有一名为ID的字段。

从上面的例子我们可以知道,SQL注入的原理,就是从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取你想到得到的资料。

第二节、判断能否进行SQL注入

看完第一节,有一些人会觉得:我也是经常这样测试能否注入的,这不是很简单吗?

其实,这并不是最好的方法,为什么呢?

首先,不一定每台服务器的IIS都返回具体错误提示给客户端,如果程序中加了cint(参数)之类语句的话,SQL注入是不会成功的,但服务器同样会报错,具体提示信息为处理 URL 时服务器上出错。请和系统管理员联络。

其次,部分对SQL注入有一点了解的程序员,认为只要把单引号过滤掉就安全了,这种情况不为少数,如果你用单引号测试,是测不到注入点的

那么,什么样的测试方法才是比较准确呢?答案如下:

② and 1=1

③ and 1=2

这就是经典的1=1、1=2测试法了,怎么判断呢?看看上面三个网址返回的结果就知道了:

可以注入的表现:

① 正常显示(这是必然的,不然就是程序有错误了)

② 正常显示,内容基本与①相同

③ 提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了on error resume next)

不可以注入就比较容易判断了,①同样正常显示,②和③一般都会有程序定义的错误提示,或提示类型转换时出错。

当然,这只是传入参数是数字型的时候用的判断方法,实际应用的时候会有字符型和搜索型参数,我将在中级篇的“SQL注入一般步骤”再做分析。

第三节、判断数据库类型及注入方法

不同的数据库的函数、注入方法都是有差异的,所以在注入之前,我们还要判断一下数据库的类型。一般ASP最常搭配的数据库是Access和SQLServer,网上超过99%的网站都是其中之一。

怎么让程序告诉你它使用的什么数据库呢?来看看:

SQLServer有一些系统变量,如果服务器IIS提示没关闭,并且SQLServer返回错误提示的话,那可以直接从出错信息获取,方法如下:

and user0

这句语句很简单,但却包含了SQLServer特有注入方法的精髓,我自己也是在一次无意的测试中发现这种效率极高的猜解方法。让我看来看看它的含义:首先,前面的语句是正常的,重点在and user0,我们知道,user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar。拿一个nvarchar的值跟int的数0比较,系统会先试图将nvarchar的值转成int型,当然,转的过程中肯定会出错,SQLServer的出错提示是:将nvarchar值 ”abc” 转换数据类型为 int 的列时发生语法错误,呵呵,abc正是变量user的值,这样,不废吹灰之力就拿到了数据库的用户名。在以后的篇幅里,大家会看到很多用这种方法的语句。

顺便说几句,众所周知,SQLServer的用户sa是个等同Adminstrators权限的角色,拿到了sa权限,几乎肯定可以拿到主机的Administrator了。上面的方法可以很方便的测试出是否是用sa登录,要注意的是:如果是sa登录,提示是将”dbo”转换成int的列发生错误,而不是”sa”。

如果服务器IIS不允许返回错误提示,那怎么判断数据库类型呢?我们可以从Access和SQLServer和区别入手,Access和SQLServer都有自己的系统表,比如存放数据库中所有对象的表,Access是在系统表[msysobjects]中,但在Web环境下读该表会提示“没有权限”,SQLServer是在表[sysobjects]中,在Web环境下可正常读取。

在确认可以注入的情况下,使用下面的语句:

and (select count(*) from sysobjects)0

and (select count(*) from msysobjects)0

如果数据库是SQLServer,那么第一个网址的页面与原页面是大致相同的;而第二个网址,由于找不到表msysobjects,会提示出错,就算程序有容错处理,页面也与原页面完全不同。

如果数据库用的是Access,那么情况就有所不同,第一个网址的页面与原页面完全不同;第二个网址,则视乎数据库设置是否允许读该系统表,一般来说是不允许的,所以与原网址也是完全不同。大多数情况下,用第一个网址就可以得知系统所用的数据库类型,第二个网址只作为开启IIS错误提示时的验证

SQL注入哪些工具最有效

SQL Power Injector是一款在.Net 1.1中创建的应用程序,可帮助渗透测试人员在网页上查找和利用SQL注入。

特征

支持Windows,Unix和Linux操作系统

SQL Server,Oracle,MySQL,Sybase / Adaptive Server和DB2兼容

SSL支持

自动从网页上的表单或IFrame加载参数(GET或POST)

检测并浏览框架集

自动检测网站语言的选项

检测并添加加载页面进程期间使用的Cookie(Set-Cookie检测)

自动查找提交页面,其方法(GET或POST)以不同的颜色显示

可以直接在Datagrids中创建/修改/删除加载的字符串和Cookie参数

单个SQL注入

盲目的SQL注入

比较页面的真实和错误响应或cookie中的结果

时间延迟

SQL注入在自定义浏览器中的响应

可以使用HTML上下文颜色查看返回页面的HTML代码源并在其中搜索

微调参数和cookie注入

可以参数化预期结果的长度和计数以优化应用程序执行SQL注入所用的时间

创建/编辑预设的ASCII字符,以优化盲注SQL请求数/请求速度

多线程(最多可配置50个)

选项可以通过空的评论/ ** /针对IDS或过滤器检测来替换空间

在发送之前自动编码特殊字符

自动检测响应页面中的预定义SQL错误

在响应页面中自动检测预定义的单词或句子

实时结果

将会话保存并加载到XML文件中

自动查找正面答案和负面答案页面之间差异的功能

可以创建一个范围列表,它将替换隐藏的SQL注入字符串中的变量(gt;)并自动为您播放它们

使用文本文件中的预定义列表自动重播变量范围

Firefox插件,它将启动SQL Power Injector以及当前网页的所有信息及其会话上下文(参数和cookie)

两个集成工具:Hex和Char编码器和MS SQL @options解释器

可以编辑Referer

可以选择一个用户代理(或者甚至在用户代理XML文件中创建一个)

可以使用设置窗口配置应用程序

支持可配置的代理

软件截图

地址:

ilo--,Reversing.org - sqlbftools

地址:

Bernardo Damele AG:sqlmap,自动SQL注入工具

介绍

sqlmap是一款开源渗透测试工具,可自动检测和利用SQL注入漏洞并接管数据库服务器。它具有强大的检测引擎,针对终极渗透测试人员的众多特性,以及从数据库指纹识别,从数据库获取数据,到访问底层文件系统以及在操作系统上执行命令的各种开关,带外连接。

特征

完全支持MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase,SAP MaxDB,HSQLDB和Informix数据库管理系统。

完全支持六种SQL注入技术:基于布尔的盲,基于时间的盲,基于错误,基于UNION查询,堆栈查询和带外。

支持直接连接数据库而不通过SQL注入,通过提供DBMS凭证,IP地址,端口和数据库名称。

支持枚举用户,密码哈希,特权,角色,数据库,表和列。

自动识别密码哈希格式并支持使用基于字典的攻击对其进行破解。

支持完全转储数据库表,根据用户的选择提供一系列条目或特定列。用户也可以选择仅转储每列条目中的一系列字符。

支持搜索特定的数据库名称,跨所有数据库的特定表或所有数据库表的特定列。例如,这对于识别包含自定义应用程序凭证的表格非常有用,其中相关列的名称包含名称和传递等字符串。

当数据库软件是MySQL,PostgreSQL或Microsoft SQL Server时,支持从数据库服务器底层文件系统下载和上载任何文件。

当数据库软件是MySQL,PostgreSQL或Microsoft SQL Server时,支持执行任意命令并在数据库服务器底层操作系统上检索它们的标准输出。

支持在攻击者机器和数据库服务器底层操作系统之间建立带外状态TCP连接。该通道可以是交互式命令提示符,Meterpreter会话或图形用户界面(VNC)会话,可以根据用户的选择进行选择。

通过Metasploit的Meterpreter 命令支持数据库进程'用户权限升级

地址:

icesurfer:SQL Server接管工具 - sqlninja

介绍

喜欢从Microsoft SQL Server上的SQL注入到数据库上的完整GUI访问?采用一些新的SQL注入技巧,在注册表中添加几个远程镜头以禁用数据执行保护,混合一个自动生成调试脚本的小Perl,将所有这些放在一个带有Metasploit包装器的振动器中,只有sqlninja的攻击模块之一!

Sqlninja是一款旨在利用以Microsoft SQL Server作为后端的Web应用程序中的SQL注入漏洞的工具。

其主要目标是在易受攻击的数据库服务器上提供远程访问,即使在非常恶劣的环境中也是如此。渗透测试人员应该使用它来帮助和自动化发现SQL注入漏洞时接管数据库服务器的过程。

特征

完整的文档可以在tarball中找到,也可以在这里找到,但是这里列出了忍者的功能:

远程SQL Server的指纹(版本,执行查询的用户,用户权限,xp_cmdshell可用性,数据库身份验证模式)

数据提取,基于时间或通过DNS隧道

与Metasploit3集成,通过VNC服务器注入获得对远程数据库服务器的图形化访问,或者仅上传Meterpreter

通过vbscript或debug.exe仅上传可执行的HTTP请求(不需要FTP / TFTP)

直接和反向绑定,TCP和UDP

当没有可用于直接/反向外壳的TCP / UDP端口时,DNS隧道伪外壳,但数据库服务器可以解析外部主机名

ICMP隧道外壳,当没有TCP / UDP端口可用于直接/反向外壳,但数据库可以Ping您的盒子

蛮力的'sa'密码(2种口味:基于字典和增量)

如果找到'sa'密码,权限将升级到系统管理员组

创建自定义的xp_cmdshell,如果原始的已被删除

TCP / UDP端口可以从目标SQL Server扫描到攻击机器,以便找到目标网络防火墙允许的端口并将其用于反向shell

回避技术混淆了一些IDS / IPS / WAF

与churrasco.exe集成,通过令牌绑架将权限升级到w2k3上的SYSTEM

支持CVE-2010-0232,将sqlservr.exe的权限升级到SYSTEM

地址:

如何利用sql注入攻击删除文件

 一、 SQL注入攻击手机版sql注入攻击软件的简单示例。

statement := "SELECT * FROM Users WHERE Value= " + a_variable + "

上面这条语句是很普通的一条SQL语句手机版sql注入攻击软件,他主要实现的功能就是让用户输入一个员工编号然后查询处这个员工的信息。但是若这条语句被不法攻击者改装过后手机版sql注入攻击软件,就可能成为破坏数据的黑手。如攻击者在输入变量的时候,输入以下内容SA001’;drop table c_order--。那么以上这条SQL语句在执行的时候就变为了SELECT * FROM Users WHERE Value= ‘SA001’;drop table c_order--。

这条语句是什么意思呢?‘SA001’后面的分号表示一个查询的结束和另一条语句的开始。c_order后面的双连字符 指示当前行余下的部分只是一个注释,应该忽略。如果修改后的代码语法正确,则服务器将执行该代码。系统在处理这条语句时,将首先执行查询语句,查到用户编号为SA001 的用户信息。然后,数据将删除表C_ORDER(如果没有其他主键等相关约束,则删除操作就会成功)。只要注入的SQL代码语法正确,便无法采用编程方式来检测篡改。因此,必须验证所有用户输入,并仔细检查在您所用的服务器中执行构造 SQL命令的代码。

二、 SQL注入攻击原理。

可见SQL注入攻击的危害性很大。在讲解其防止办法之前,数据库管理员有必要先了解一下其攻击的原理。这有利于管理员采取有针对性的防治措施。

SQL注入是目前比较常见的针对数据库的一种攻击方式。在这种攻击方式中,攻击者会将一些恶意代码插入到字符串中。然后会通过各种手段将该字符串传递到SQLServer数据库的实例中进行分析和执行。只要这个恶意代码符合SQL语句的规则,则在代码编译与执行的时候,就不会被系统所发现。

SQL注入式攻击的主要形式有两种。一是直接将代码插入到与SQL命令串联在一起并使得其以执行的用户输入变量。上面笔者举的例子就是采用了这种方法。由于其直接与SQL语句捆绑,故也被称为直接注入式攻击法。二是一种间接的攻击方法,它将恶意代码注入要在表中存储或者作为原书据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中,以执行一些恶意的SQL代码。

注入过程的工作方式是提前终止文本字符串,然后追加一个新的命令。如以直接注入式攻击为例。就是在用户输入变量的时候,先用一个分号结束当前的语句。然后再插入一个恶意SQL语句即可。由于插入的命令可能在执行前追加其他字符串,因此攻击者常常用注释标记“—”来终止注入的字符串。执行时,系统会认为此后语句位注释,故后续的文本将被忽略,不背编译与执行。

三、 SQL注入式攻击的防治。

既然SQL注入式攻击的危害这么大,那么该如何来防治呢?下面这些建议或许对数据库管理员防治SQL注入式攻击有一定的帮助。

1、 普通用户与系统管理员用户的权限要有严格的区分。

如果一个普通用户在使用查询语句中嵌入另一个Drop Table语句,那么是否允许执行呢?由于Drop语句关系到数据库的基本对象,故要操作这个语句用户必须有相关的权限。在权限设计中,对于终端用户,即应用软件的使用者,没有必要给他们数据库对象的建立、删除等权限。那么即使在他们使用SQL语句中带有嵌入式的恶意代码,由于其用户权限的限制,这些代码也将无法被执行。故应用程序在设计的时候,最好把系统管理员的用户与普通用户区分开来。如此可以最大限度的减少注入式攻击对数据库带来的危害。

2、 强迫使用参数化语句。

如果在编写SQL语句的时候,用户输入的变量不是直接嵌入到SQL语句。而是通过参数来传递这个变量的话,那么就可以有效的防治SQL注入式攻击。也就是说,用户的输入绝对不能够直接被嵌入到SQL语句中。与此相反,用户的输入的内容必须进行过滤,或者使用参数化的语句来传递用户输入的变量。参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。采用这种措施,可以杜绝大部分的SQL注入式攻击。不过可惜的是,现在支持参数化语句的数据库引擎并不多。不过数据库工程师在开发产品的时候要尽量采用参数化语句。

3、 加强对用户输入的验证。

总体来说,防治SQL注入式攻击可以采用两种方法,一是加强对用户输入内容的检查与验证;二是强迫使用参数化语句来传递用户输入的内容。在SQLServer数据库中,有比较多的用户输入内容验证工具,可以帮助管理员来对付SQL注入式攻击。测试字符串变量的内容,只接受所需的值。拒绝包含二进制数据、转义序列和注释字符的输入内容。这有助于防止脚本注入,防止某些缓冲区溢出攻击。测试用户输入内容的大小和数据类型,强制执行适当的限制与转换。这即有助于防止有意造成的缓冲区溢出,对于防治注入式攻击有比较明显的效果。

如可以使用存储过程来验证用户的输入。利用存储过程可以实现对用户输入变量的过滤,如拒绝一些特殊的符号。如以上那个恶意代码中,只要存储过程把那个分号过滤掉,那么这个恶意代码也就没有用武之地了。在执行SQL语句之前,可以通过数据库的存储过程,来拒绝接纳一些特殊的符号。在不影响数据库应用的前提下,应该让数据库拒绝包含以下字符的输入。如分号分隔符,它是SQL注入式攻击的主要帮凶。如注释分隔符。注释只有在数据设计的时候用的到。一般用户的查询语句中没有必要注释的内容,故可以直接把他拒绝掉,通常情况下这么做不会发生意外损失。把以上这些特殊符号拒绝掉,那么即使在SQL语句中嵌入了恶意代码,他们也将毫无作为。

故始终通过测试类型、长度、格式和范围来验证用户输入,过滤用户输入的内容。这是防止SQL注入式攻击的常见并且行之有效的措施。

4、 多多使用SQL Server数据库自带的安全参数。

为了减少注入式攻击对于SQL Server数据库的不良影响,在SQLServer数据库专门设计了相对安全的SQL参数。在数据库设计过程中,工程师要尽量采用这些参数来杜绝恶意的SQL注入式攻击。

如在SQL Server数据库中提供了Parameters集合。这个集合提供了类型检查和长度验证的功能。如果管理员采用了Parameters这个集合的话,则用户输入的内容将被视为字符值而不是可执行代码。即使用户输入的内容中含有可执行代码,则数据库也会过滤掉。因为此时数据库只把它当作普通的字符来处理。使用Parameters集合的另外一个优点是可以强制执行类型和长度检查,范围以外的值将触发异常。如果用户输入的值不符合指定的类型与长度约束,就会发生异常,并报告给管理员。如上面这个案例中,如果员工编号定义的数据类型为字符串型,长度为10个字符。而用户输入的内容虽然也是字符类型的数据,但是其长度达到了20个字符。则此时就会引发异常,因为用户输入的内容长度超过了数据库字段长度的限制。

5、 多层环境如何防治SQL注入式攻击?

在多层应用环境中,用户输入的所有数据都应该在验证之后才能被允许进入到可信区域。未通过验证过程的数据应被数据库拒绝,并向上一层返回一个错误信息。实现多层验证。对无目的的恶意用户采取的预防措施,对坚定的攻击者可能无效。更好的做法是在用户界面和所有跨信任边界的后续点上验证输入。如在客户端应用程序中验证数据可以防止简单的脚本注入。但是,如果下一层认为其输入已通过验证,则任何可以绕过客户端的恶意用户就可以不受限制地访问系统。故对于多层应用环境,在防止注入式攻击的时候,需要各层一起努力,在客户端与数据库端都要采用相应的措施来防治SQL语句的注入式攻击。

6、 必要的情况下使用专业的漏洞扫描工具来寻找可能被攻击的点。

使用专业的漏洞扫描工具,可以帮助管理员来寻找可能被SQL注入式攻击的点。不过漏洞扫描工具只能发现攻击点,而不能够主动起到防御SQL注入攻击的作用。当然这个工具也经常被攻击者拿来使用。如攻击者可以利用这个工具自动搜索攻击目标并实施攻击。为此在必要的情况下,企业应当投资于一些专业的漏洞扫描工具。一个完善的漏洞扫描程序不同于网络扫描程序,它专门查找数据库中的SQL注入式漏洞。最新的漏洞扫描程序可以查找最新发现的漏洞。所以凭借专业的工具,可以帮助管理员发现SQL注入式漏洞,并提醒管理员采取积极的措施来预防SQL注入式攻击。如果攻击者能够发现的SQL注入式漏洞数据库管理员都发现了并采取了积极的措施堵住漏洞,那么攻击者也就无从下手了。

如何防范黑客入侵网站的几种常见安全方法

• 本文的目的是告诉企业在建网站时如何打造一个防范黑客攻击的安全网站

• 互联网随着时间的发展,它的优势越来越来明显,世界越来越多的企业通过这二十四小时不间断的传波平台,打造自己公司的网站,开展电子商务活动;由于互联网的特殊性和复杂性,一旦你企业的网站接入互联网后,你的企业网站便为一个公众场所,任何人都可以上你的企业网站浏览信息,任何人(比如:黑客)都有可能对你的企业网站进行技术上测试,查找你的企业网站在程序设计上的漏洞,不论他目的是恶意还其它原因,你都无法制止他的行为,因为黑客在远程电脑上实施操作。

• 建设一个有安全系数保证的网站,关系着一个企业的商业信誉问题,面临日夜猖狂、日益肆虐的网络攻击事件不断发生,给自己的网站做一些最基本的安全防范措施是非常必要的。

• 非法字符过滤和转换

• 黑客攻击网站之前,先采用探路方式,通过网站的留言、论坛、搜索等系统,注入可执行的web脚本代码和SQL语法,来达到入侵网站的目的;对网站所有交互式接口的文本输入框(如:网站留言系统、BBS系统、blog系统、搜索系统、登陆系统等)的地方采取在客户端非法字符过滤和转换技术,通过非法字符过滤和转换将可执行的恶意代码变为可读HTML代码,使它基本失去了暴破网站的威力,又起到了保护网站程序源代码不受破坏的作用。

• 建一个指定自定义出错(Error)的信息页面

• 好处在于防止网站设计源代码的溢出,黑客在入侵网站的后台管理系统,往往在网页地址栏输入可执行的SQL语法和根据程序员为网页命名的习惯输入网址的文件名,一旦黑客采用这种方式,就会将黑客带向指定自定义出错(Error)的信息页面。

• 拒绝Cookie验证方式

• Cookie的好处在于管理员和注册用户登陆网站时Cookie会保存登陆信息,下次再登陆时Cookie会自动将这些信息保留在登陆的页面输入文本框中,其作用是为了方便登陆者,但也给黑客采集Cookie的信息提供了良机,所以应该拒绝采用客户端Cookie验证登陆方式,而改用通过服务器验证方式登陆并对账号和密码采用单向加密方式保存。

• 不要用自助建网站系统建你的企业网站

• 一些网站设计公司为了增加销量降低成本(其实大部分客户喜欢购买廉价的自助建网站系统),开发不同用途的自助建网站系统(如:网站内容管理、BBS、新闻发布、留言、博客等),同时为了争夺市场、扩大产品知名度,往往两种方式销售产品:个人版可以免费下载;商业版则需要购买;其实两个版本的网站在是同一种程序技术基础开发出来的,商业版是授权验证后可作商业用途,有技术支持和维护保证;黑客通过下载个人版,来潜心深研这些自助建网站系统的开放源代码,从中找出程序漏洞,一旦发现了可攻击的程序漏洞,通过搜索引擎平台检索出同一型号版本自建网站系统,然后就发起攻击;解决方式找有自主能力开发网站公司设计你的企业网站,通过将网站的设计源代码封装成“.dll”组件,这样即保证网站设计上的安全性又保护了源代码,又提高了网站的安全系数同时也降低了网站被入侵的危害程度,因为黑客攻陷网站往往是从研究网站源代码开始并中找出程序漏洞。

• 解决Googel“暴库”问题

• 一些程序员在开发网站喜欢用虚拟路径方法调用数据库,这就必须将数据库保存在开通WWW服务的文件夹下,自然逃不过狡猾黑客的眼睛,一旦黑客破解了数据库的真实保存位置,便可以从浏览器的地址栏打开和下载该数据库,对网站的后果是非常危险的;要想确保你网站的数据库不被黑客下载,只要采取将数据库保存在非WWW服务的文件夹下,通过物理(真实)路径方法调用数据库,就可完全防止黑客下载你企业网站的数据库。

• 建立robots文件

• 为了防止网站的重要文件夹(如:后台管理)和文件(如:纯程序文件)不被搜索引擎所收录,首先在网站根目录下建一个“robots.txt”纯文本文件,来防止网站的重要文件或其它敏感信息被搜索引擎所收录;最大多搜索引擎平台都遵守robots协议;搜索引擎机器人访问网站时,首先找到网站根目录下robots文件,然后会读取robots文件的内容,来确定它对网站收录的范围;robots文件可以说是对搜索引擎机器人收录权限的限制管理,从而避免将网站的重要文件或其它敏感信息暴露在网络上,在网站安全上起一个防御锁作用,robots文件可由网站设计者在遵守robots协议下,根据网站的实际情况自由编写。

• 完全将杜绝黑客的攻击和入侵是不可能的,完全在网站的每个接口过滤和转换非法字符串是办不到,比如,在文件上传时,狡猾黑客会采取躲过过滤和转换非法字符串的办法,将可执行恶意脚本代码保存“.gif”格式或“.jpg”格式来实施文件上传漏洞攻击,解决的方法是对所有上传的文件先导入到“.txt”纯文本文件读一遍,判断是否是可执行恶意脚本代码,如果是就删除,但是网站管理员要有web程序基础;黑客入侵网站的方式变化多端,几千种免费暴破网站的软件,使你企业网站防不胜防,但是以上介绍几种防御措施对菜鸟黑客是可行的,对于一些资深黑客,他也要费一些精力和时间来暴破你企业网站,他会考虑值不值得?毕竟你的网站只是一个企业网站,不是银行和证券交涉现金交易的网站(它们的程序设计安全系数更高),在大多数下情况,“大侠”黑客不会光顾你企业网站。

1、SQL注入漏洞的入侵

这种是ASP+ACCESS的网站入侵方式,通过注入点列出数据库里面管理员的帐号和密码信息,然后猜解出网站的后台地址,然后用帐号和密码登录进去找到文件上传的地方,把ASP木马上传上去,获得一个网站的WEBSHELL。这个是黑链使用的前一部分,应该比较常用吧。现在网上卖webshell的太多了。

2、ASP上传漏洞的利用

这种技术方式是利用一些网站的ASP上传功能来上传ASP木马的一种入侵方式,不少网站都限制了上传文件的类型,一般来说ASP为后缀的文件都不允许上传,但是这种限制是可以被黑客突破的,黑客可以采取COOKIE欺骗的方式来上传ASP木马,获得网站的WEBSHELL权限。

3、后台数据库备份方式获得WEBSHELL

这个主要是利用网站后台对ACCESS数据库进行数据库备份和恢复的功能,备份数据库路径等变量没有过滤导致可以把任何文件的后缀改成ASP,那么利用网站上传的功能上传一个文件名改成JPG或者GIF后缀的ASP木马,然后用这个恢复库备份和恢复的功能把这个木马恢复成ASP文件,从而达到能够获取网站WEBSHELL控制权限的目的。

4、网站旁注入侵

这种技术是通过IP绑定域名查询的功能查出服务器上有多少网站,然后通过一些薄弱的网站实施入侵,拿到权限之后转而控制服务器的其它网站。

下面这几种我就听不懂了,不过有点高技术的站长会看懂的。

5、sa注入点利用的入侵技术

这种是ASP+MSSQL网站的入侵方式,找到有SA权限的SQL注入点,然后用SQL数据库的XP_CMDSHELL的存储扩展来运行系统命令建立系统级别的帐号,然后通过3389登录进去,或者在一台肉鸡上用NC开设一个监听端口,然后用VBS一句话木马下载一个NC到服务器里面,接着运行NC的反向连接命令,让服务器反向连接到远程肉鸡上,这样远程肉鸡就有了一个远程的系统管理员级别的控制权限。

6、sa弱密码的入侵技术

这种方式是用扫描器探测SQL的帐号和密码信息的方式拿到SA的密码,然后用SQLEXEC之类的工具通过1433端口连接到远程服务器上,然后开设系统帐号,通过3389登录。然后这种入侵方式还可以配合WEBSHELL来使用,一般的ASP+MSSQL 网站通常会把MSSQL的连接密码写到一个配置文件当中,这个可以用WEBSHELL来读取配置文件里面的SA密码,然后可以上传一个SQL木马的方式来获取系统的控制权限。

7、提交一句话木马的入侵方式

这种技术方式是对一些数据库地址被改成asp文件的网站来实施入侵的。黑客通过网站的留言版,论坛系统等功能提交一句话木马到数据库里面,然后在木马客户端里面输入这个网站的数据库地址并提交,就可以把一个ASP木马写入到网站里面,获取网站的WEBSHELL权限。

8、论坛漏洞利用入侵方式

这种技术是利用一些论坛存在的安全漏洞来上传ASP木马获得WEBSHELL权限,最典型的就是,动网6.0版本,7.0版本都存在安全漏洞,拿7.0版本来说,注册一个正常的用户,然后用抓包工具抓取用户提交一个ASP文件的COOKIE,然后用明小子之类的软件采取COOKIE欺骗的上传方式就可以上传一个ASP木马,获得网站的WEBSHELL。

猜你还喜欢

已有1位网友发表了看法:

  • 访客

    访客  评论于 [2022-08-31 18:00:54]  回复

    int(参数)之类语句的话,SQL注入是不会成功的,但服务器同样会报错,具体提示信息为处理 URL 时服务器上出错。请和系统管理员联络。 其次,部分对SQL注入有一点了解的程序员,认为只要把单引号过滤掉就安全了,这种情况不为少数,

欢迎 发表评论:

{/if}