Day27 - Linux 提权(1)

最小权限原则 principle of least privilege

指的是使用的帐号应该要跟服务所需要的权限相符合。

如若部属 Web 服务则使用 www-data 或 apache 等帐号,而非管理员的帐号直接部属;针对资料库,若网站只会使用到一个资料库/表,那该资料库帐号可以只限制於那个资料库中。

为什麽要提权

当我们发现打进目标机器之後,可能只有 www-data 或是一般使用者的权限,你必须要找到更高的权限才能得到你想要的敏感资料,如必须要从一般职员到主管,才能拿到更多资料,因此透过提权的手法,可以让自己提升权限。

常见的提权范例

  • 以管理员的身分(root、administrator)执行容易被攻击的软件
  • 已知漏洞的作业系统核心(kernel)
  • 目标网站、系统中的错误设定
  • 档案与服务权限控管失败
  • 敏感资料储存於本地未进行加密或其他防御机制
  • hardcode 将帐号密码写死在程序码中
  • 访问 Windows SAM 资料取的 hash 杂凑值
  • DLL Hijacking
  • 针对 Windows 中,设定不安全的注册表内容
  • 恶意软件

复习

我们曾经介绍过以下的工具取得目标权限

  1. netcat
  2. socat
  3. Metasploit - multi/handler
  4. Msfvenom
  5. webshell
  6. 其他程序语言/指令

Linux 相关提权

提升权限方式:水平提权、垂直提权

水平提权:可以控制其他相同权限使用者
垂直提权:可以控制更高权限的使用者

提权流程

  1. 收集资讯:了解 Linux 版本、SUID 档案(可能可以写入或利用)、Crontab(计画执行的档案)
  2. 利用档案:找到可以利用的档案之後,确认权限以及如何利用(档案权限控管、环境变数、执行档本身的特性)
  3. 进行提权

前置知识-SUID

当我们执行 ls -al 列出当前资料夹内部的档案,并以长列表显示,并包含所有档案(含隐藏档案)。

-rwxr-xr-x feifei
第一个 - 代表档案/d 代表资料夹

可以看到这个档案的权限是 777,如下表 显示

user     group     others

rwx       rwx       rwx

421       421       421

r = read
w = write
x = execute

有三个比较特别的权限在於,今天如果想要以一个「一般使用者」的身分,执行 root 写的备份档案,若以一般使用者权限则无法执行。

因此透过 set 权限,让一般使用者可以执行原本无权限的档案。

分成三种
SUID: 档案如果在执行的阶段,档案的执行身分为档案所有者的权限(rwsrwxrwx)
SGID: 档案如果在执行的阶段,档案的执行身分为档案群组的权限(rwxrwsrwx)
Sticky Bit: 希望档案可写入,但不能删除

搜寻 SUID
find / -perm -u=s -type f 2>/dev/null

首要目标:收集资讯

透过收集资讯可以了解目标系统正在执行哪些服务,并透过什麽权限执行。

以下是针对 Linux 作业系统可以蒐集的资讯:

作业系统 kernel 相关

指令 说明
cat /etc/issue 查看作业系统
cat /proc/version 查看核心版本
hostname 查看主机名称
uname -a 查看系统资讯

可针对 Kernel 版本後蒐集攻击脚本。
searchsploit linux kernel 3.9

作业系统
cat /etc/issue

kernel版本
cat /proc/version

主机名称
hostname

系统资讯
uname -a

使用者 相关

指令 说明
cat /etc/passwd 查看系统使用者
id 确认目前的使用者 id
who 查看目前正在执行的使用者
w 显示目前登入使用者相关资讯
sudo -l 如果你是 sudo group 可查看目前可执行的指令

网路 相关

指令 说明
ifconfig -a 网路介面卡
route 路由表
netstat -antup 连线到终端
arp -e ARP table

执行中的 process 相关

指令 说明
ps aux 目前执行的 process
dpkg -l Debian 使用
rpm -qa Fedora 使用

ps aux | grep root
如果要提权就要针对以 root 或其他高权限正在执行的 process 下手

找特殊档案

  1. 找设定档案,看看有没有设定错误的设定档。
    ls -ls /etc/ | grep .conf
  2. 找网站相关档案
    ls -ls /var/www/html/
  3. 找 SUID
    find /* -user root -perm -4000 -print 2>/dev/null

找文件档案

找文件系统
cat /etc/fstab

找环境变数

cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set

是否有 ssh 私钥

cat ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa

使用自动脚本搜寻可利用的漏洞

  1. 节省时间
  2. 仰赖已知漏洞资料库,如果没有定期更新可能导致无法发现最近的漏洞
  3. 可能找不到手动检测才会发现的漏洞
  4. 只能协助检测

自动脚本-LinPEAS(Linux Privilege Escalation Awesome Script)

  1. 下载脚本
    wget https://raw.githubusercontent.com/carlospolop/privilege-escalation-awesome-scripts-suite/master/linPEAS/linpeas.sh
  2. 执行脚本
    ./linpeas.sh

自动脚本 linuxprivchecker

  1. 下载脚本
    wget http://www.securitysift.com/download/linuxprivchecker.py
  2. 执行脚本
    python linuxprivchecker.py

自动脚本 Unix-privesc-check v1.4

  1. 下载脚本
    http://pentestmonkey.net/tools/audit/unix-privesc-check
  2. 执行脚本
    ./unix-privesc-check standard
  3. 取得详细报告
    ./unix-privesc-check detailed

<<:  Day26【Web】TCP 安全协定:SSL/TLS

>>:  申请海外新创加速器好难

Day2:安装Azure AD Connector同步至M365遇到TLS 1.2卡卡要怎麽办

当我们正准备将企业AD帐号透过传送门(Azure AD Connector)运送到Microsoft...

初学者跪着学JavaScript Day13 : 物件加字串?物件加物件?

想不到吧~加法还可以写第二篇 延续昨天相加:{}+{},{}+[],[]+{},[]+[] 到底是什...

Day 10 - Spring Boot 建立专案

到了第十天的教学了,我们终於要开始建立第一个Spring Boot 专案,建立专案的方法有两个,一个...

电子发现参考模型(Electronic Discovery Reference Model)

-电子发现参考模型 证人(Witnesses )和证据(evidence)决定了司法结果。及时的电...

加上random与time模组,限制次数与时间的管理(1)

显示出现在的时间 使用datatime模组 from datetime import datetim...