[Vulnhub靶机] DriftingBlues: 4

[Vulnhub靶机] DriftingBlues: 4靶机渗透思路及方法(个人分享)

靶机下载地址:

https://download.vulnhub.com/driftingblues/driftingblues4_vh.ova


靶机地址:192.168.67.23

攻击机地址:192.168.67.3


一、信息收集

1.使用 arp-scan 命令扫描网段内存活的主机,以获取靶机ip地址

arp-scan -I 指定网卡 -l

2.使用 nmap 工具扫描靶机开放端口、服务版本以及系统版本,得到开放端口21、22、80及其服务ftp、ssh、http

nmap -sV -O 靶机地址

        -sV        探测主机服务版本

        -O         识别主机操作系统

3.访问网站,发现页面没有有用回显,查看网页源代码,发现了一串 base64 加密值,尝试对其进行解密,讲过多次解密后获得 /imfuckingmad.txt 文件

4.访问 /imfuckingmad.txt 文件,获得了一串 Brainfuck 编码,对其进行解密,获得了一个图片地址

Brainfuck编码在线解密地址:Brainfuck/Ook! Obfuscation/Encoding [splitbrain.org]

5.访问图片地址,发现是一个二维码图片,我们利用QR_Research工具(CTF中杂项会使用到的一个扫描二维码的工具)对二维码图片进行扫描,获得一个网址https://i.imgur.com/a4JjS76.png

6.访问网站图片https://i.imgur.com/a4JjS76.png(起初以为和先前的题目一样需要修改hosts文件,但后面访问后发现无法成功访问,重新查看给的网址,发现网址用的https协议,原来之前理解错了意思,题目想让我们访问真正的网站。而且正常访问访问不了,需要挂代理),得到了四个用户名

二、漏洞利用

1.利用得到的用户名创建一个usernames.txt文件,作为用户字典。使用 hydra 工具尝试暴力破解ssh和ftp服务,发现ssh服务没有爆破成功,成功爆破了ftp服务,得到了用户名/密码(luther/mypics)

hydra -L usernames.txt -P /usr/share/wordists/rockyou.txt 192.168.67.23 ssh

        -L              指定用户字典的路径

        -P              指定密码字典的路径

        ssh            用于暴力破解SSH服务器
        ftp              用于暴力破额FTP服务器

/usr/share/wordists/rockyou.txt 是kali系统自带的密码文件,默认是个压缩包需要自行解压

2.使用爆破得到的用户名/密码登录ftp服务,成功登录,并发现了sync_log文件和hubert目录,使用 get 命令将sync_log文件下载,进行查看,发现没有什么有用的信息

通过sync_log文件的命令来推断,该文件可能是sync的日志文件。sync是一个系统调用,它将所有文件系统缓冲区中的数据立即写入磁盘。这样做的目的是确保数据的持久性存储,避免因为异常情况(如系统崩溃)导致数据丢失或损坏。当我们使用sync命令时,操作系统会将内存中未写入磁盘的数据强制刷新到磁盘上,以确保数据的一致性。

3.查看分析hubert目录,发现该目录中没有任何文件,但是通过之前的查看的属主和属组跟其他文件的不一样,想起来我们的用户字典中有一个hubert用户,猜测该目录是hubert的用户目录。因为该文件的权限是所有人可读可写可执行,所以我们可以通过上传密钥文件来登录ssh

三、远程登录

1.使用 ssh-keygen 工具生成公密钥,并将生成的密钥保存到 /root/.ssh/ 目录下

ssh-keygen -t rsa

        -t        指定生成的密钥类型,默认为RSA类型

2.将公钥文件的内容输出到authorized_keys文件内,利用ftp服务在hubert目录下创建.ssh目录,并将authorized_keys文件上传到该目录内

3.利用私钥进行ssh远程连接到靶机,成功访问

四、提权

两种提权方式:

        第一种:利用root用户会定期执行python脚本来进行提权

        第二种:利用命令劫持进行提权

第一种提权方法:

1.在成功登录后习惯性使用 ls 命令查看当前目录下的文件,发现一个属主和属组都是root用户的python脚本文件emergency.py。查看该文件的内容,发现该脚本利用python语言执行了系统命令

2.查看 emergency.py 脚本中执行写入'1'命令的 /tmp/backdoor_testing 文件,发现执行了多次该命令,猜测root用户会定期执行emergency.py 脚本来执行写入命令

3.在攻击机打卡nc监听

nc -lvp 监听端口号 靶机地址

        -l             开启监听

        -v            显示详细输出

        -p            指定监听端口

4.因为之前查看我们发现该文件的其他人不可以写入,所以我们要删除该文件,重新创建一个新的emergency.py文件,来编写文件内容进行shell反弹

5.等待root用户执行emergency.py文件,成功反弹shell,并且shell是root权限,同时可以利用python中的 pty模块 的创建交互式shell

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

        -c        在命令行中调用python代码

pty.spawn() 函数是pty模块中的一个函数,用于创建一个子进程,并将其连接到一个伪终端。通过这个伪终端,我们可以与子进程进行交互,就像在控制台上一样。

第二种提权方法:

1.使用 find 命令寻找suid程序,发现一个可疑程序/usr/bin/getinfo

find / -perm -4000 2>/dev/null 或 find / -perm -u=s 2>/dev/null

        -perm         按照权限查找文件(4000、2000、1000分别表示SUID,SGID,SBIT权限,如777为普通文件最高权限,7000为特殊文件的最高权限)

使用find命令的时候在命令后加 2>/dev/null 将错误结果输出重定向到/dev/null中,/dev/null是一个特殊的设备文件,其实质为空设备文件,其大小是0字节,所有人都有读写权限,而其主要作用就是将接收的一切输出给它的数据并丢弃,就像垃圾桶,也被称为位桶(bit bucket)

2.执行该程序,根据执行结果发现分别运行了ip addr、cat /etc/hosts、uname -a命令

3.可以通过修改环境来进行命令劫持提权

通过修改环境变量让getinfo在调用命令调用到我们伪造的ip命令(在检索环境时会先调用最前面的环境也就是最新写入的环境),来达到提权的效果

export PATH=/tmp/:$PATH             把/tmp路径写入到系统路径中

echo $PATH                                   输出系统路径

cd /tmp

echo '/bin/bash' > ip                       把/bin/bash写入到ip文件中(相当于创建ip并写入/bin/bash)

chmod +x ip                                    给ip文件增加执行权限

4.再次运行getinfo,成功提权至root权限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/460520.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python数据可视化库之mplfinance使用详解

概要 Python 是一种强大的编程语言,拥有众多用于数据可视化的库和工具。其中之一是 mplfinance(Matplotlib Finance),它是基于 Matplotlib 的库,专门用于创建金融图表和交互式金融数据可视化。本文将深入介绍 mplfinance,包括其基本概念、功能特性以及如何使用示例代码创…

“手把手教你玩转函数递归,建议收藏!“

目录 1. 什么是递归 2. 递归的限制条件 3. 递归的举例 4. 递归与迭代 正⽂开始 1. 递归是什么? 递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢? 递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃…

阿里云服务器多少钱?2024年阿里云服务器租用费用表大全

2024年阿里云服务器租用价格表更新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服…

免费生成ios证书的方法(无需mac电脑)

使用hbuilderx的uniapp框架开发移动端程序很方便,可以很方便地开发出移动端的小程序和app。但是打包ios版本的app的时候却很麻烦,官方提供的教程需要使用mac电脑来生成证书,但是mac电脑却不便宜,一般的型号都差不多上万。 因此&a…

java_error_in_pycharm.hprof文件是什么?能删除吗?

java_error_in_pycharm.hprof文件是什么?能删除吗? 🌵文章目录🌵 🌳引言🌳🌳hprof格式文件介绍🌳🌳java_error_in_pycharm.hprof文件什么情况下能删除🌳&…

C#静态数组删除数组元素不改变数组长度 vs 动态数组删除数组元素改变数组长度

目录 一、使用的方法 1.对静态数组删除指定长度并不改变数长度的方法 (1)静态数组 (2)对静态数组删除元素不得改变其长度 2.对动态数组删除指定长度并改变数长度的方法 (1)动态数组 (2&a…

故障诊断 | 一文解决,TCN时间卷积神经网络模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,TCN时间卷积神经网络模型的故障诊断(Matlab) 模型描述 时间卷积神经网络(TCN)是一种用于序列数据建模和预测的深度学习模型。它通过卷积操作在时间维度上对序列数据进行特征提取,并且可以处理可变长度的输入序列。 要使用TCN进行…

L1-080 乘法口诀数列

一、题目 二、解题思路 三、代码 #include<iostream> using namespace std; int main() {int a1,a2,n;cin>>a1>>a2>>n;if(n1){cout<<a1;return 0; }int a[n*2];cout<<a1<<" "<<a2;a[0]a1;a[1]a2;for(int i2,j2;i&l…

05 06 Verilog基础语法与应用讲解

05. 1. 位操作 计数器实验升级&#xff0c;设计8个LED灯以每个0.5s的速率循环闪烁&#xff08;跑马灯&#xff09; 1.1 方法1&#xff1a;使用移位操作符<<来控制led灯的循环亮灭 设计代码 Verilog中&#xff0c;判断操作的时候不加位宽限定是可以的&#xff0c;比如i…

Qt QVariant类应用

QVariant类 QVariant类本质为C联合(Union)数据类型&#xff0c;它可以保存很多Qt类型的值&#xff0c;包括 QBrush&#xff0c;QColor&#xff0c;QString等等&#xff0c;也能存放Qt的容器类型的值。 QVariant::StringList 是 Qt 定义的一个 QVariant::type 枚举类型的变量&…

二分算法--模板及原理总结

二分答案 首先我们看这个图&#xff1a; 我们需要二分的答案就是这个临界点x。 什么情况下可以使用二分呢&#xff1a; 具有单调性&#xff08;单调递增&#xff0c;单调递减&#xff09;&#xff0c;二段性&#xff08;整个区间一分为二&#xff0c;一段区间满足&#xff0c;一…

git flow与分支管理

git flow与分支管理 一、git flow是什么二、分支管理1、主分支Master2、开发分支Develop3、临时性分支功能分支预发布分支修补bug分支 三、分支管理最佳实践1、分支名义规划2、环境与分支3、分支图 四、git flow缺点 一、git flow是什么 Git 作为一个源码管理系统&#xff0c;…