CH4INRULZ-v1靶机练习实践报告

2024-04-27 14:12

本文主要是介绍CH4INRULZ-v1靶机练习实践报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CH4INRULZ-v1靶机练习实践报告

1 安装靶机

靶机是.ova文件,需要用VirtualBox打开,但我习惯于使用VMWare,因此修改靶机文件,使其适用于VMWare打开。

解压ova文件,得到.ovf文件和.vmdk文件。直接用VMWare打开.ovf文件即可。

2 夺旗步骤

第一步:IP扫描,端口扫描

img

img

端口扫描发现靶机上注册了ftp服务、ssh服务、Apache服务,且端口80和端口8011上都部署了Apache服务。尝试爆破SSH服务的登陆口令,失败;尝试爆破FTP服务的口令,失败。

浏览器中打开80端口,8011端口,查看网页内容、网页源码,未发现任何关键提示信息。

img

img

针对web服务做目录遍历和web安全扫描。使用msf中dir_scanner模块对80端口的web服务做目录遍历,暴露3个可访问的路径,”http://192.168.67.129:80/js/”路径下未发现有价值信息;”http://192.168.67.129:80/img/”路径下发现”profile.jpg”,下载图片未发现可疑信息;”http://192.168.67.129:80/development/”是一个需要登陆口令的网页,但我们不知道口令,先去8011端口的web服务上探寻一番。

img

img

img

img

使用msf中dir_scanner模块对8011端口的web服务做目录遍历,暴漏出一个可访问路径。

img

访问”http://192.168.67.129:8011/api/”,页面提示开发中的4个PHP文件,逐个打开,只有”*files_api.php”可访问。

img

img

根据提示,构造”http://192.168.67.129:8011/api/files_api.php?file=…/…/etc/passwd”,竟然做了安全检测,换POST方法试试,成功。

img

img

可以读取/etc/passwd的内容,没法先用户口令信息,试试/etc/shadow,读取失败。

img

为什么尝试读取这两个文件?因为/etc/passwd是用户数据库,其中的域给出了用户名、加密口令和用户的其他信息, /etc/shadow是在安装了影子(shadow)口令软件的系统上的影子口令文件,影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow中,但后者只对超级用户root可读,读取不到/etc/shadow内容,此路不通。

我们将files_api.php的源码下载下来分析一下,暂未发现关键信息。

img

img

继续对WEB服务做安全扫描,

img

查看”http://192.168.67.129:80/index.html.bak”,终于看到提示信息了。htpasswd命令 是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。

img

用john破解该提示,得到口令”frank:frank!!!”。用该口令尝试登陆ssh,失败;用该口令登陆”http://192.168.67.129:80/development/”,得到有个安全功能未开发完成的文件上传的功能。

img

img

打开文件上传页面,直接上传kali自带的php木马php-reverse-shell.php,提示只支持图片格式,修改后缀为php-reverse-shell.jpg,被识破了,难道是文件格式解析?

img

img

php-reverse-shell.jpg

img

gif伪装尝试,在php头文件添加git标识GIF98,然后将文件名改为php-reverse-shell.gif,上传成功。

img

文件上传成功,但文件存在哪里?如何触发执行?将upload.php源码下载下来,查看文件存放路径,发现存放在”FRANKuploads”目录。

img

img

打开”http://192.168.67.129:80/development/uploader/FRANKuploads”,发现我们上传的shell.gif和php-reverse-shell.git,php-reverse-shell.git文件中忘记修改ip地址了,因此shell.gif才是真正的木马文件。

img

我们在8011端口的web服务上有一个可以查看文件内容的入口,因此在该入口访问木马文件就可以触发执行。

img

Bravo,拿到系统控制权。逐个查看可能是flag的文件,无果,但有几个目录只有root权限才可以访问,接下来提权。靶机的系统版本是2.6.35,在kali自带的exploit-db中搜索可用的提权exp,发现适用于2.6.35版本的不可用,于是所示2.6.35,发现可用exp文件”15285.c”,在本机上编译成可执行文件”priv”,并开启一个httpserver。

img

img

我们已经拿到靶机的shell了,在/tmp目录下请求kali机器的priv文件,然后设置priv的可执行权限,执行即可获取root权限。为什么要在/tmp目录下?因为在其他目录下,有权限问题。获取root权限后,查看/root/root.txt,拿到flag。

img

3 总结

  1. 熟练使用工具metasploit(scanner/http/dir_scanner)、searchsploit、nitko、john
  2. 看到网站的全貌和功能后要想到可能存在的漏洞,可以利用的方法。
  3. 熟悉任意文件读漏洞、文件上传漏洞、各种图片文件格式等。

这篇关于CH4INRULZ-v1靶机练习实践报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/940718

相关文章

Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践举例

《Vue2项目中配置TailwindCSS和FontAwesome的最佳实践举例》:本文主要介绍Vue2项目中配置TailwindCSS和FontAwesome的最... 目录vue 2 项目中配置 Tailwind css 和 Font Awesome 的最佳实践一、Tailwind CSS 配置1. 安

MyBatis分页插件PageHelper深度解析与实践指南

《MyBatis分页插件PageHelper深度解析与实践指南》在数据库操作中,分页查询是最常见的需求之一,传统的分页方式通常有两种内存分页和SQL分页,MyBatis作为优秀的ORM框架,本身并未提... 目录1. 为什么需要分页插件?2. PageHelper简介3. PageHelper集成与配置3.

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot 常用注解详解与使用最佳实践建议

《SpringBoot常用注解详解与使用最佳实践建议》:本文主要介绍SpringBoot常用注解详解与使用最佳实践建议,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、核心启动注解1. @SpringBootApplication2. @EnableAutoConfi

Redis实现分布式锁全解析之从原理到实践过程

《Redis实现分布式锁全解析之从原理到实践过程》:本文主要介绍Redis实现分布式锁全解析之从原理到实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景介绍二、解决方案(一)使用 SETNX 命令(二)设置锁的过期时间(三)解决锁的误删问题(四)Re

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

Spring Boot 整合 SSE的高级实践(Server-Sent Events)

《SpringBoot整合SSE的高级实践(Server-SentEvents)》SSE(Server-SentEvents)是一种基于HTTP协议的单向通信机制,允许服务器向浏览器持续发送实... 目录1、简述2、Spring Boot 中的SSE实现2.1 添加依赖2.2 实现后端接口2.3 配置超时时

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三