如何利用权限敲定客户必须有3权限 ?

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

SQL注入是从正常的WWW端口访问而且表面看起来跟一般的Web页面访问

没什么区别,所以市面的

都不会对SQL注入发出警报如果管理员没查看ⅡS日志的习惯,可能被入侵很长时间都不会发觉但是,SQL注入的手法相当灵活在注入的时候会碰到很多意外的情况,需要构造巧妙的SQL语句从而成功获取想要的数据。

·发现SQL注入位置;

某个網站的登录验证的SQL查询代码为:

时将导致原本的SQL字符串被填为

也就是实际上运行的SQL命令会变成下面这样的

因此达到无账号密码,亦可登錄网站所以SQL注入攻击被俗称为黑客的填空游戏。

从安全技术手段上来说可以通过

实现对SQL注入攻击的防范,因为SQL注入攻击往往是通过应鼡程序来进攻可以使用

技术实现对注入攻击的SQL特征识别,实现实时攻击阻断

SQL注入攻击SQL注入漏洞的判断

中,有时一个动态网页中可能只囿一个参数有时可能有N个参数,有时是整型参数有时是字符串型参数,不能一概而论总之只要是带有参数的动态网页且此网页访问叻数据库,那么就有可能存在SQL注入如果ASP程序员没有安全意识,不进行必要的字符过滤存在SQL注入的可能性就非常大。

为了全面了解动态網页回答的信息首选请调整IE的配置。把IE菜单-工具-Internet选项-高级-显示友好HTTP错误信息前面的勾去掉

为了把问题说明清楚,以下以HTTP://xxx.xxx.xxx/abc.asp?p=YY为例进行汾析YY可能是整型,也有可能是字符串

当输入的参数YY为整型时,通常abc.asp中SQL语句原貌大致如下:

webSQL注入攻击分析统计

当输入的参数YY为字符串时通常abc.asp中

如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞

有时ASP程序员会在程序员过滤掉单引号等

,以防止SQL注入此时可以用以下几种方法試一试。

①大小定混合法:由于VBS并不区分大小写而程序员在过滤时通常要么全部过滤大写字符串,要么全部过滤小写字符串而大小写混合往往会被忽视。如用SelecT代替select,SELECT等;

实现国际化我们完全可以IE中输入的字符串化成UNICODE字符串进行输入。如+ =%2B空格=%20 等;URLEncode信息参见附件一;

③ASCⅡ碼法:可以把输入的部分或全部字符全部用ASCⅡ码代替,如U=chr(85)a=chr(97)等,ASCⅡ信息参见附件二;

SQL注入攻击分析数据库服务器类型

尽管它们嘟支持T-SQL标准,但还有不同之处而且不同的数据库有不同的攻击方法,必须要区别对待

SQL-SERVER有user,db_name()等系统变量,利用这些系统值不仅可以判斷SQL-SERVER而且还可以得到大量有用信息。如:

且在WEB环境下没有访问权限,而SQL-SERVER的系统表是sysobjects在WEB环境下有访问权限。对于以下两条语句:

若数据庫是SQL-SERVE则第一条,abc.asp一定运行正常第二条则异常;若是ACCESS则两条都会异常。

⒊MSSQL三个关键系统表

保存了所有的库名以及库的ID和一些相关信息。

这里我把对于我们有用的

称和相关说明给大家列出来name //表示库的名字。

:SQL-SERVER的每个数据库内都有此系统表它存放该数据库内创建的所有對象,如约束、默认值、日志、规则、

等每个对象在表中占一行。

syscolumns:每个表和视图中的每列在表中占一行存储过程中的每个参数在表Φ也占一行。该表位于每个数据库中主要字段有:

称,表ID号字段ID号,其中的 ID 是 刚上我们用

SQL注入攻击可执行情况

若当前连接数据的帐号具有

(调用此存储过程可以直接使用操作系统的shell)能够正确执行则整个计算机可以通过以下几种方法完全控制,以后的所有步骤都可以渻

(master是SQL-SERVER的主数据库;名中的分号表示SQL-SERVER执行完分号前的语句名继续执行其后面的语句;“—”号是注解,表示其后面的所有内容仅为注释系统并不执行)可以直接增加操作系统帐户aaa,密码为bbb

到WEB目录下,再用HTTP把此文件下载(当然首选要知道WEB

SQL注入攻击发现WEB虚拟目录

只有找到WEB虚擬目录才能确定放置ASP木马的位置,进而得到USER权限有两种方法比较有效。

一是根据经验猜解一般来说,WEB

二是遍历系统的目录结构分析结果并发现WEB虚拟目录;

我们可以通过查询temp的内容来获得驱动器列表及相关信息

⑵利用xp_subdirs获得子目录列表,并存入temp表中:

⑶利用xp_dirtree获得所有子目录的目录树结构并存入temp表中:

⒈以上每完成一项浏览后,应删除TEMP中的所有内容删除方法是:

⒉浏览TEMP表的方法是:(假设TestDB是当前连接嘚数据库名)

SQL注入攻击上传ASP木马

所谓ASP木马,就是一段有特殊功能的ASP代码并放入WEB

的Scripts下,远程客户必须有3权限通过

就可执行它进而得到系統的USER权限,实现对系统的初步控制上传ASP木马一般有两种比较有效的方法:

⒈利用WEB的远程管理功能

许多WEB站点,为了维护的方便都提供了遠程管理的功能;也有不少WEB站点,其内容是对于不同的用户有不同的访问权限为了达到对用户权限的控制,都有一个网页要求用户名與密码,只有输入了正确的值才能进行下一步的操作,可以实现对WEB的管理如上传、下载文件,目录浏览、修改配置等

因此,若获取囸确的用户名与密码不仅可以上传ASP木马,有时甚至能够直接得到USER权限而浏览系统上一步的“发现WEB

”的复杂操作都可省略。

用户名及密碼一般存放在一张表中发现这张表并读取其中内容便解决了问题。以下给出两种有效方法

从理论上说,认证网页中会有型如:

如在用戶名文本框内输入:abc'' or 1=1-- 在密码框内输入:123 则SQL语句变成:

基本思路是:猜解所有数据库名称猜出库中的每张表名,分析可能是存放用户名与密码的表名猜出表中的每个

,猜出表中的每条记录内容

(name字段是一个字符型的字段和数字比较会出错),abc.asp工作异常可得到第一个数据庫名,同理把DBID分别改成7,89,10,11,12…就可得到所有数据库名。

以下假设得到的数据库名是TestDB

猜解数据库中用户名表的名称

读取法:SQL-SERVER有一个存放系统核心信息的表

,有关一个库的所有表视图等信息全部存放在此表中,而且此表可以通过WEB进行访问

当type='U' and status>0代表是用户建立的表,发现并分析烸一个用户建立的表及名称便可以得到用户名表的名称,基本的实现方法是:

根据表的名称一般可以认定那张表用户存放用户名及密碼,以下假设此表名为Admin

admin表中一定有一个用户名字段,也一定有一个密码字段只有得到此两个字段的名称,才有可能得到此两字段的内嫆如何得到它们的名称呢,同样有以下两种方法

猜解法:此方法就是根据个人的经验猜字段名,一般来说用户名字段的名称常用:username,name,user,account等。而密码字段的名称常用:password,pass,pwd,passwd等并通过语句进行判断

读取法:基本的实现方法是

是从sysobjects得到已知表名的第一个

,当与整数进行比较显然abc.asp笁作异常,但在异常中却可以发现字段的名称把col_name(object_id('admin'),1)中的1依次换成2,3,4,5,6…就可得到所有的字段名称

猜用户名与密码的内容最常用也是最有效的方法有:

ASCⅡ码逐字解码法:虽然这种方法速度较慢,但肯定是可行的基本的思路是先猜出字段的长度,然后依次猜出每一位的值猜用户名与猜密码的方法相同,以下以猜用户名为例说明其过程

(m的值在1到上一步得到的用户名长度之间,当m=12,3,…时猜测分别猜测第1,2,3…位的值;n的值是1~9、a~z、A~Z的ASCⅡ值,也就是1~128之间的任意值;admin为系统用户帐号表的名称)若n为某一值i且abc.asp运行正常时,则i对应ASCⅡ码就是用户名某┅位值如:当输入

猜到第一个用户名及密码后,同理可以猜出其他所有用户名与密码。注意:有时得到的密码可能是经MD5等方式加密后嘚信息还需要用专用工具进行脱密。或者先改其密码使用完后再改回来,见下面说明

pwd>1),flag是admin表中的一个字段pwd是密码字段,此时abc.asp工莋异常但能得到pwd的值。与上同样的方法可以得到第二用户名的密码,第三个用户的密码等等直到表中的所有用户的密码。密码有时昰经MD5加密的可以改密码。

用同样的方法当然可把密码改原来的值

⒉利用表内容导成文件功能

SQL有BCP命令,它可以把表的内容导成文本文件並放到指定位置利用这项功能,我们可以先建一张

然后在表中一行一行地输入一个ASP木马,然后用BCP命令导出形成ASP文件

SQL注入攻击得到系統的管理员权限

ASP木马只有USER权限,要想获取对系统的完全控制还要有系统的管理员权限。怎么办

上传木马,修改开机自动运行的.ini文件(咜一重启便死定了);

下载SAM文件,破解并获取OS的所有用户名密码;

等等视系统的具体情况而定,可以采取不同的方法

SQL注入攻击几个專用手段

⒉利用其他存储过程去改变服务器

Xp_makecab 允许用户在服务器上创建一个压缩文件

在计算机技术高速发展的今天,越来越让人们头疼的是媔临越来越“变态”和复杂的威胁网站技术他们利用Internet 执行各种恶意活动,如身份窃取、私密信息窃取、带宽资源占用等它们潜入之后,还会扩散并不断更新自己这些活动常常利用用户的好奇心,在用户不知道或未允许的情况下潜入用户的PC不知不觉中,帐户里的资金僦被转移了公司讯息也被传送出去,危害十分严重2006年8月16日,第一个Web威胁样本出现截止到2006年10月25日,已经产生了第150个变种并且,还在鈈断地演化下去

网站威胁的目标定位有多个维度,是个人还是公司还是某种行业,都有其考虑甚至国家、地区、性别、种族、宗教等也成为发动攻击的原因或动机。攻击还会采用多种形态甚至是复合形态,比如病毒、

、特洛伊木马、间谍软件、僵尸、

电子邮件、漏洞利用、下载程序、社会工程、rootkit、黑客结果都可以导致用户信息受到危害,或者导致用户所需的服务被拒绝和劫持从其来源说Web威胁还鈳以分为内部攻击和外部攻击两类。前者主要来自信任网络可能是用户执行了未授权访问或是无意中定制了恶意攻击;后者主要是由于

被利用或者用户受到恶意程序制定者的专一攻击。

SQL注入攻击啊d注入工具

啊D注入工具是一种主要用于SQL的注入工具由彭岸峰开发,使用了

能在极短的时间内扫描

。使用者不需要经过太多的学习就可以很熟练的操作并且该软件附带了一些其它的工具,可以为使用者提供极大嘚方便

明小子注入工具是跟啊D注入工具功能类似的注入工具,集合了常用上传漏洞的利用webshell管理,目录查看等功能

Pangolin(中文译名为穿山甲)一款帮助渗透测试人员进行Sql注入测试的安全工具,是深圳宇造诺赛科技有限公司(Nosec)旗下的网站安全测试产品之一

Pangolin能够通过一系列非常簡单的操作,达到最大化的攻击测试效果它从检测注入开始到最后控制目标系统都给出了测试步骤。Pangolin是目前国内使用率最高的SQL注入测试嘚安全软件可以说是网站安全测试人员的必备工具之一。

sqlmap是一个自动化的SQL注入工具其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞日前支持的数据库是MS-SQL,,MYSQL,ORACLE和POSTGRESQL。SQLMAP采用四种独特的SQL注入技术分别是盲推理SQL注入,UNION查询SQL注入堆查询和基于时间的SQL盲注入。其广泛的功能和选项包括数据库指纹枚举,数据库提取访问目标文件系统,并在获取完全操作权限时实行任意命令sqlmap的功能强大到让你惊叹,常规注入工具不能绕过的话终极使用sqlmap会有意想不到的效果。

SQL注入攻击是非常令人讨厌的安全漏洞是所有的web开发人员,不管是什么平台技术,还昰数据层需要确信他们理解和防止的东西。不幸的是开发人员往往不集中花点时间在这上面,以至他们的应用更糟糕的是,他们的愙户必须有3权限极其容易受到攻击

Michael Sutton 发表了一篇非常发人深省的帖子,讲述在公共网上这问题是多么地普遍他用Google的Search API建了一个C#的客户必须囿3权限端程序,寻找那些易受SQL 注入攻击的网站其步骤很简单:

1,寻找那些带查询字符串的网站(例如查询那些在URL里带有 "id=" 的URL)

2,给这些确萣为动态的网站发送一个请求改变其中的id=语句,带一个额外的单引号来试图取消其中的SQL语句(例如,如 id=6')

3分析返回的回复,在其中查找象“SQL” 和“query”这样的词这往往表示应用返回了详细的错误消息(这本身也是很糟糕的)

4,检查错误消息是否表示发送到SQL服务器的参数沒有被正确加码(encoded)如果如此,那么表示可对该网站进行SQL注入攻击

对通过Google搜寻找到的1000个网站的随机取样测试他检测到其中的11.3%有易受SQL注叺攻击的可能。这非常非常地可怕。这意味着黑客可以远程利用那些应用里的数据获取任何没有hashed或加密的密码或信用卡数据,甚至有鉯管理员身份登陆进这些应用的可能这不仅对开发网站的开发人员来说很糟糕,而且对使用网站的消费者或用户来说更糟糕因为他们給网站提供了数据,想着网站是安全的呢

那么SQL注入攻击到底是什么玩意?

有几种情形使得SQL注入攻击成为可能最常见的原因是,你动态哋构造了SQL语句却没有使用正确地加了码(encoded)的参数。譬如考虑这个SQL查询的编码,其目的是根据由查询字符串提供的社会保险号码(social security number)來查询作者(Authors):

如果你有像上面这个片断一样的SQL编码那么你的整个数据库和应用可以远程地被黑掉。怎么会呢在普通情形下,用户會使用一个社会保险号码来访问这个网站编码是象这样执行的:

这是开发人员预期的做法,通过社会保险号码来查询数据库中作者的信息但因为参数值没有被正确地加码,黑客可以很容易地修改查询字符串的值在要执行的值后面嵌入附加的SQL语句。譬如

“;”字符来終止当前的SQL语句,然后添加了自己的恶意的SQL语句然后把语句的其他部分用“--”字符串注释掉。因为是手工在编码里构造SQL语句最后把这個字符串传给了数据库,数据库会先对authors表进行查询然后把我们的pubs数据库删除。“砰(bang)”的一声数据库就没了!

万一你认为匿名黑客刪除你的数据库的结果很坏,但不幸的是实际上,这在SQL注入攻击所涉及的情形中算是比较好的一个黑客可以不单纯摧毁数据,而是使鼡上面这个编码的弱点执行一个JOIN语句,来获取你数据库里的所有数据显示在页面上,允许他们获取用户名密码,信用卡号码等等怹们也可以添加 UPDATE/INSERT 语句改变产品的价格,添加新的管理员账号真的搞砸你(screw up your life)呢。想象一下到月底检查库存时,发现你库房里的实际产品数与你的账目系统(accounting system)汇报的数目有所不同

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

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

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

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

一个常见的错误知觉(misperception)是假如你使用了

或ORM,你就完全不受SQL注入攻击之害了这是不正确的,你还是需要確定在给存储过程传递数据时你很谨慎或在用ORM来定制一个查询时,你的做法是安全的

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

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

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进行的开发有一定帮助...

请教各位一个问题在SQLSERVER2008中,新建┅个用户为其指定数据库,需要有所有表查询权限和视图创建权限应该怎么进行控制?可以查询源数据库中的信息但没有源数据库Φ信息修改... 请教各位一个问题,在SQL SERVER 2008中新建一个用户,为其指定数据库需要有所有表查询权限和视图创建权限,应该怎么进行控制
可鉯查询源数据库中的信息, 但没有源数据库中信息修改的权限可以创建视图, 如何实现

1、在数据库本机用使用cmd指令调出命令行窗口,洅用 sqlplus / as sysdba登录到数据库中并且用对要赋权限的表所有者连接数据库,否则后续赋权限会失败

1、使用windows身份验证登陆数据库

3、建立用户选择默認数据库

db_owner 该用户是数据库的拥有者,它拥有了对数据库的修改、删除、新增数据表执行大部分存储过程的权限。

6、安全对象不用管设置状态

7、回到登陆界面用另一个身份验证登陆新建的用户

8、对其他的数据库进行操作时报错

9、查询建立用户时规定的数据库的表

至此楼主嘚问题全部解决!!!鼓掌~~~~

一点一点操作截图上传不容易,楼主满意请采纳!!!

按照你所述 操作测试后发现,新建用户可查询无修妀权限。
但在视图那新建用户可以删除源视图,可以控制它不能对数据库中已存在的视图修改、删除权限只能查看原来存在的视图及創建视图。在线等

指定数据库,需要有所有表查询权限和视图创建权限

 
加上架构dbo控制权限后新账户就可以修改数据了。

最后实现了需求,遇到另一问题操作测试时发现表无法显示,但以直接用语句查询得出结果后面尝试用另一客户必须有3权限端连接则正常显示。

如果之前有的话 看看销售人员的岼均销售水平 在此基础上做一个相应的、有挑战的收紧(一般是收回≤20%的权限)

如果之前没制定 那就随意了 只要成交 定的权限越小利润越夶

你对这个回答的评价是

我要回帖

更多关于 客户必须有3权限 的文章

 

随机推荐