includes.php 内有文件读取漏洞



一开始是想着直接用为协议写入一句话木马但是后来发现不行

因为他的文件读取方式长这样

点击查看代码
<?php
include ('/var/www/html/waf.php');
$page = str_replace(array('%','<','?','\\'), '',$_GET['display_page']);
if(file_exists($page)) { include($page); }
?>

是先判断你是否是个存在的文件再include的




直接利用日志注入



用蚁剑连

连上之后我们发现我们具有如下使用权限

能用john的身份 使用exifftool的命令

搜索一下



发现能直接创建写入文件




那么我们直接写入ssh的公钥给这个john用户

我们已经将自己的ssh公钥写在tmp里面了 然后就将tmp内容写入/home/john/.ssh/authorized_key

sudo -u john /usr/bin/exiftool -filename=/home/john/.ssh/authorized_keys tmp

ssh登录




然后我们会发现连wget都没有

我们就利用scp 将busybox传到靶机




然后我们用busybox wget一下linpeas.sh脚本

使用linpeas.sh

发现 /usr/sbin/tar 具有cap_dac_read_search的能力




这里解释一下linux的关于文件能力(capabilities)的概念:

关于文件能力(capabilities)的概念

在 Linux 系统中,文件能力(capabilities)是一种比传统的用户、组和权限位(如rwx)更细粒度的权限管理机制。传统的权限管理基于用户、组和简单的读(r)、写(w)、执行(x)权限位,但对于一些复杂的操作和安全需求,这种方式可能不够灵活。文件能力允许将特定的权限独立地分配给可执行文件。

能力细分表
CAP_CHOWN(更改文件所有者和所属组能力)
含义:允许进程更改文件的所有者(UID)和所属组(GID)。通常,只有超级用户(root)能够执行此类操作。
应用场景:例如在文件共享系统中,特定的文件管理模块可能需要修改文件的归属关系,但不需要完整的 root 权限。如果被授予 CAP_CHOWN 能力,就可以在一定范围内进行这些操作。
CAP_DAC_OVERRIDE(自主访问控制覆盖能力)
含义:进程可以绕过文件和目录的常规自主访问控制(DAC)限制。在正常的 DAC 规则下,用户对文件和目录的访问受所有者、所属组以及权限位(如rwx)的约束。具有此能力的进程可以突破这些限制进行读、写和执行操作。
应用场景:在某些系统管理工具中,可能需要访问其他用户拥有的文件或目录来执行维护操作。如果该工具被授予 CAP_DAC_OVERRIDE 能力,并且对目标文件或目录所在的父目录有基本的访问权限(例如执行权限),就可以操作这些文件或目录。
CAP_DAC_READ_SEARCH(自主访问控制读和搜索能力)
含义:使进程能够绕过常规的 DAC 限制进行读操作和搜索操作(例如遍历目录结构来查找要操作的文件)。
应用场景:对于文件搜索工具,若需要在不违反基本安全策略的情况下搜索用户可能无常规权限访问的目录,可以被授予此能力。
CAP_FOWNER(模拟文件所有者能力)
含义:进程在操作文件时可以模拟文件所有者的权限。例如,对于某些文件操作,即使实际执行进程的用户不是文件所有者,也能以文件所有者的权限进行操作。
应用场景:在文件备份或恢复系统中,执行备份或恢复操作的进程如果被授予 CAP_FOWNER 能力,可以像文件所有者一样进行文件的读取、写入等操作,而不需要实际拥有文件所有者的身份。
CAP_FSETID(设置文件标识符能力)
含义:允许进程设置文件的标识符(fsetid)。文件标识符通常用于确保文件在某些操作(如执行 execve 系统调用)后的唯一性识别。
应用场景:在安全相关的文件操作中,例如确保某些加密文件在解密和执行过程中的唯一性标识,具有此能力的进程可以设置文件标识符。
CAP_KILL(发送信号能力)
含义:使进程能够向任何进程发送信号,而通常情况下,用户只能向自己拥有的进程发送信号。
应用场景:在系统监控和管理工具中,如果需要终止其他用户的进程,可以被授予 CAP_KILL 能力。
CAP_SETGID(设置组 ID 能力)
含义:允许进程设置其实际组 ID(GID)、有效组 ID(EGID)和保存的组 ID(SGID)。
应用场景:在多用户系统中的用户组管理工具中,可能需要临时改变组 ID 来执行特定的组相关操作,如加入或离开某个用户组。
CAP_SETUID(设置用户 ID 能力)
含义:允许进程设置其实际用户 ID(UID)、有效用户 ID(EUID)和保存的用户 ID(SUID)。
应用场景:类似于 CAP_SETGID,在需要临时改变用户身份以执行特定操作的情况下,如以另一个用户的身份进行文件访问或系统操作。
CAP_SETPCAP(设置能力能力)
含义:使进程能够对其他进程授予或删除 capabilities。这是一种对 capabilities 进行管理的高级能力。
应用场景:在系统的 capabilities 管理框架内,特定的系统管理进程可能被授予 CAP_SETPCAP 能力来调整其他进程的 capabilities。
CAP_LINUX_IMMUTABLE(设置文件不可变能力)
含义:允许进程设置文件的不可变(immutable)属性,具有此属性的文件不能被修改、删除或重命名。
应用场景:在系统安全策略中,为了保护关键的系统文件,可以使用具有 CAP_LINUX_IMMUTABLE 能力的进程来设置文件为不可变状态。
CAP_NET_BIND_SERVICE(网络绑定服务能力)
含义:使进程能够将网络服务绑定到特权端口(小于 1024 的端口),而通常只有超级用户(root)可以将网络服务绑定到这些端口。
应用场景:在网络应用开发中,如 Web 服务器、邮件服务器等需要绑定到特权端口提供服务的程序,如果被授予 CAP_NET_BIND_SERVICE 能力,就可以以普通用户身份运行并绑定到特权端口,提高了安全性。
CAP_NET_BROADCAST(网络广播能力)
含义:允许进程进行网络广播操作。在网络环境中,广播是将数据发送到网络中的所有主机的一种通信方式。
应用场景:在网络监控或某些网络协议(如 DHCP,它需要进行广播来发现客户端和服务器)相关的应用中,可能需要此能力。
CAP_NET_ADMIN(网络管理能力)
含义:授予进程执行各种网络管理操作的能力,如配置网络接口、设置路由表等。
应用场景:网络管理工具,如用于配置网络连接、设置防火墙规则等的工具,需要此能力来执行相关操作。
CAP_NET_RAW(原始网络能力)
含义:使进程能够使用原始套接字(raw sockets)进行网络通信。原始套接字允许直接访问网络层协议(如 IP 协议),可以用于创建自定义的网络协议或进行网络层的监控和调试。
应用场景:网络安全监控工具、自定义网络协议开发工具等可能需要 CAP_NET_IGNORE_NETLINK_CON 此能力。
CAP_IPC_LOCK(进程间通信锁定能力)
含义:允许进程锁定共享内存段和信号灯等进程间通信(IPC)资源,防止其他进程对这些资源的访问。
应用场景:在多进程并发访问共享内存或信号灯的场景中,需要对这些资源进行独占性保护的进程可以被授予此能力。
CAP_IPC_OWNER(进程间通信所有者能力)
含义:进程在操作进程间通信(IPC)资源时可以模拟 IPC 资源所有者的权限。
应用场景:类似于 CAP_FOWNER 在文件操作中的作用,在 IPC 资源管理和操作中,如果需要以 IPC 资源所有者的权限进行操作,可以被授予此能力。
CAP_SYS_MODULE(系统模块能力)
含义:允许进程加载和卸载内核模块。内核模块是扩展 Linux 内核功能的动态可加载组件。
应用场景:在系统更新或定制内核功能时,相关的系统管理工具可能需要此能力来加载或卸载内核模块。
CAP_SYS_RAWIO(系统原始 I/O 能力)
含义:使进程能够执行原始的输入 / 输出(I/O)操作,例如直接访问硬件设备的 I/O 端口和内存映射的 I/O 区域。
应用场景:设备驱动开发工具、硬件诊断工具等可能需要此能力来直接与硬件设备进行交互。
CAP_SYS_CHROOT(系统改变根目录能力)
含义:允许进程执行 chroot 系统调用,即将进程的根目录改变为指定的目录,这在创建隔离的运行环境(如容器化技术的早期实现)中非常有用。
应用场景:在创建安全的测试环境、应用程序沙箱等场景中,相关进程可以被授予此能力来改变根目录。
CAP_SYS_PTRACE(系统进程跟踪能力)
含义:使进程能够使用 ptrace 系统调用对其他进程进行跟踪,包括查看其他进程的内存、寄存器状态等信息。
应用场景:调试工具(如 gdb)需要此能力来跟踪和调试其他进程的运行。
CAP_SYS_PACCT(系统进程记账能力)
含义:允许进程进行进程记账操作,例如记录进程的资源使用情况等。
应用场景:在系统资源管理和监控工具中,可能需要此能力来收集进程的资源消耗数据。
CAP_SYS_ADMIN(系统管理能力)
含义:这是一个比较宽泛的能力,授予进程执行多种系统管理操作的能力,如管理文件系统、设置系统时间等。
应用场景:系统管理工具,如用于磁盘管理、系统时间同步等操作的工具,可能需要此能力。
CAP_SYS_BOOT(系统启动能力)
含义:允许进程执行与系统启动相关的操作,如修改启动参数等。
应用场景:在系统维护和修复过程中,特定的工具可能需要此能力来调整系统启动相关的设置。
CAP_SYS_NICE(系统调整优先级能力)
含义:使进程能够调整其他进程的优先级(nice 值)。
应用场景:在系统资源调度和管理工具中,可能需要此能力来优化系统性能,例如根据任务的紧急程度调整进程的优先级。
CAP_SYS_RESOURCE(系统资源管理能力)
含义:允许进程管理系统资源,如设置进程的资源限制等。
应用场景:在资源受限的系统环境中,如云计算环境中的容器资源管理,相关工具可能需要此能力来设置资源限制。
CAP_SYS_TIME(系统时间管理能力)
含义:使进程能够设置系统时间和时钟。
应用场景:在需要进行时间同步或调整的系统管理场景中,如网络时间协议(NTP)客户端或手动调整系统时间的工具,需要此能力。
CAP_SYS_TTY_CONFIG(系统终端配置能力)
含义:允许进程配置终端设备,如设置终端的波特率、字符编码等属性。
应用场景:在终端管理工具中,可能需要此能力来对终端设备进行配置。
CAP_MKNOD(创建特殊文件能力)
含义:使进程能够创建特殊文件,如块设备文件、字符设备文件和命名管道(FIFO)。
应用场景:在设备驱动开发和文件系统管理工具中,可能需要此能力来创建特殊类型的文件。
CAP_LEASE(文件租约能力)
含义:允许进程在文件上设置租约(lease)。文件租约是一种机制,用于在文件被其他进程访问之前获取独占性的访问权限。

也就是说/usr/sbin/tar 具有root的读取能力




又发现在根目录下有 id_rsa 的ssh登录秘钥



我们可以利用/usr/sbin/tar 将id_rsa重新压缩并 然后再解压缩

这样我们就可以读取和使用该秘钥文件

将id_rsa文件压缩到tmp目录下面

/usr/bin/tar -zcvf /tmp/c.tar /id_rsa 这一步之后压缩的c.tar文件就属于当前用户了

tar xvf b.tar 解压文件




ssh -i id_rsa root@127.0.0.1 ssh登录root用户



提权成功

thewall靶机的更多相关文章

  1. 22. CTF综合靶机渗透(十五)

    靶机说明: Game of Thrones Hacking CTF This is a challenge-game to measure your hacking skills. Set in Ga ...

  2. CTF线下防御战 — 让你的靶机变成“铜墙铁壁”

    本文首发安全客,未经允许禁止转载.原文链接 一. 前言 随着CTF的普及,比赛的形式也有了越来越多的花样,对于线下赛来说,开始出现了安全加固或者防御战之类的环节,亦或者因为拿下靶机后不希望其他攻击者进 ...

  3. Ms17-010进行WEB提权之实践下某培训靶机服务器

    前言:该机器为某个其他培训机构的靶机,说实话在这里没炫耀啥,只是给各位学习Ms17010的同学指一条路,我原先也折腾这玩意儿好久,但是就是不行,最近才找到了出路,所以多写两篇文章,把各种需要注意的地方 ...

  4. metasploit利用漏洞渗透攻击靶机

    1.网络测试环境构建 首先需要先配置好一个渗透测试用的网络环境,包括如图1所示的运行Kali Linux系统的计算机,如图2所示的老师给的Windows Server 2000系统的计算机.这两台计算 ...

  5. web 攻击靶机解题过程

    sql注入靶机攻击过程请参考 https://pentesterlab.com/exercises/from_sqli_to_shell/course http://www.sohu.com/a/12 ...

  6. Fowsniff: 1靶机入侵

    一.信息收集 1.存活主机扫描 arp-scan  -l 发现192.168.1.13是目标靶机的IP地址 2.端口扫描 接下来用nmap神器来扫描目标IP地址,命令如下: root@kali2018 ...

  7. digitalworld.local: MERCY靶机入侵

    0x01 前言 MERCY是一个致力于PWK课程安全的靶机系统.MERCY是一款游戏名称,与易受攻击的靶机名称无关.本次实验是攻击目标靶机获取root权限并读系统目录中的proof.txt信息 靶机的 ...

  8. Moonraker:1靶机入侵

      0x01 前言 攻击Moonraker系统并且找出存在最大的威胁漏洞,通过最大威胁漏洞攻击目标靶机系统并进行提权获取系统中root目录下的flag信息. Moonraker: 1镜像下载地址: h ...

  9. FourAndSix: 2.01靶机入侵

      0x01 前言 FourAndSix2是易受攻击的一个靶机,主要任务是通过入侵进入到目标靶机系统然后提权,并在root目录中并读取flag.tx信息 FourAndSix2.镜像下载地址: htt ...

  10. Typhoon-v1.02 靶机入侵

      0x01 前言 Typhoon VM包含多个漏洞和配置错误.Typhoon可用于测试网络服务中的漏洞,配置错误,易受攻击的Web应用程序,密码破解攻击,权限提升攻击,后期利用步骤,信息收集和DNS ...

随机推荐

  1. 19、解析2_1(链、chunk、锁)

    解析 shared pool 图解: library cache里面,暂时可以认为存储着: 1.SQL以及对应的执行计划(所占空间比较小): 2.存储过程.函数.触发器.包,它们编译后的对象(所占空间 ...

  2. require/import路径中的叹号是什么?

    问题: 之前在一些开源项目的源码里,以及一些文章里,见到如下这样的require/import路径,其中包含形如!.的片段,不知道是什么意思: // https://juejin.im/post/68 ...

  3. vue-element-admin 左侧的导航栏固定展开

    项目需要把左侧的导航栏固定打开,不关闭我们只需要打开store-modules-app.js文件中,把下面的代码给修改就可以了

  4. java内存区域——daicy

    Java虚拟机 运行时数据区 主要分为五部分:方法区,堆(这两块是所有线程共享的区域),程序计数器,本地方法栈,虚拟机栈(vm stack)(这三块为线程隔离区域) 程序计数器(Program Cou ...

  5. vue在组件中实现双向绑定

    父组件中的一个变量和子组件的input框实现双向绑定,就要用到下面的方法: 父组件: <script> import CustomInput from './CustomInput.vue ...

  6. java 死锁问题排查

    排查过程 1.识别死锁现象 通常,死锁会表现为应用程序挂起,不响应用户请求或 cpu 使用率下降. 2.收集线程转储 当应用出现不响应时,可以使用以下方法收集线程转储: jstack -l 进程ID ...

  7. web移动端屏幕适配方案

    因为手机屏幕的分辨率大小不一 ,如果使用传统的静态布局,把每个元素的宽高样式写死,在不同的屏幕中就有各种各样的显示效果.这显然不是我们想要的结果.我们需要的是根据屏幕分辨率的不同,来适配不同的样式大小 ...

  8. Ant Design Pro项目ProTable怎么实现单元格合并效果

    前情 公司有经常需要做一些后台管理页面,我们选择了Ant Design Pro,它是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端/设计解决方案. 产品效果图 最新接到的一个后 ...

  9. Redis应用—4.在库存里的应用

    大纲 1.库存模块设计 2.库存缓存分片和渐进式同步方案 3.基于缓存分片的下单库存扣减方案 4.商品库存设置流程与异步落库的实现 6.库存入库时"缓存分片写入 + 渐进式写入 + 写入失败 ...

  10. 黑苹果(Hackintosh) - 安装1:用 VMware pro 16 安装 Big Sur 11.6

    1. 背景情况 1.1 想法 想要体验体验macOS系统,不想花钱买 Macbook,就想着 装一个黑苹果体验下. 1.2 本机基本情况 笔记本:zx6 cp5s1 CPU:i5 8400 主板:H3 ...