最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

UNIX的privesc检查

XAMPP新闻 admin 204浏览 0评论

UNIX的privesc检查
Unix-privesc-checker是一个在Unix系统上运行的脚本(在Solaris 9,HPUX 11,各种Linux,FreeBSD 6.2上测试)。它试图找到可能允许本地非特权用户将权限升级到其他用户或访问本地应用程序(例如数据库)的错误配置。

它被编写为单个shell脚本,因此可以轻松上载和运行(与未编译,编译和安装相反)。它既可以作为普通用户运行,也可以作为root运行(显然,当以root身份运行时它可以做得更好,因为它可以读取更多文件)。

下载
unix-privesc-check v1.4可以在这里下载。(如果您仍然需要,版本1.1就在这里)。

更新:谷歌代码SVN更新。

用法
下载是gzip’d,所以gunzip吧。将其上传到您正在审核/测试的服务器,然后运行它:

$ ./unix-privesc-check> output.txt
输出有点乱(用shell脚本很难整理),所以你最好保存输出并搜索“警告”这个词。如果您没有看到“警告”一词,那么脚本找不到任何内容。例:

$ ./unix-privesc-check
启动unix-privesc-check v1.0(http://pentestmonkey.net/tools/unix-privesc-check)

此脚本检查文件权限和可能允许的其他设置
本地用户升级权限。

只有在您被授予的系统上才允许使用此脚本
获得安全评估的法律许可。除此之外
条件GPL v2适用。

在下面的输出中搜索“警告”一词。如果你没有看到它
这个脚本没有发现任何问题。

假设操作系统是:linux

############################################
检查/ etc / passwd中是否允许外部身份验证
############################################
在+ etc / passwd中找不到+:…行

############################################
检查nsswitch.conf以获取其他身份验证方法
############################################
LDAP和NIS都不用于身份验证
……更多输出……
什么是用户privesc-checker的预期用途?
它旨在由安全审计人员和测试人员针对他们参与评估的系统以及希望检查“明显”错误配置的系统管理员运行。它甚至可以作为cron作业运行,因此您可以定期检查可能引入的错误配置。

我想写一些对pentetration测试人员至少部分有用的东西,当他们获得对低权限帐户的访问并想要升级权限时。在这种情况下,测试人员会检查很多事情,而最难检查的是弱文件权限 – 这通常是最富有成效的事情之一,所以没有避免它。

免责声明:单独运行此脚本不能替代正确的审计(例如,遵循NSA的一个优秀配置指南)。升级有很多可能性,使用脚本进行审计太难了。此脚本旨在成为一种快捷方式,而非替代正确的审计。有关此脚本未涵盖的许多区域示例,请参阅下面的“限制”部分。

那么这是一个Unix审计脚本?
不是传统意义上的。“Unix审计”对不同的人意味着不同的东西。我理解这意味着检查一整套配置设置,包括:

安全补丁(即他们已被应用)
破解密码以检查弱密码
IP堆栈配置(没有不必要的IPv6,没有IP转发等)
弱文件权限(读取敏感数据,修改敏感文件)
配置本地应用程序(查看sshd_config,httpd.conf)
其他最佳实践的东西(远程日志记录,没有不安全的协议,偏执挂载选项)
所以,从这个意义上讲,它不是一个审计脚本。它并不打算做所有这些事情。它检查这些与智能升级直接相关的子集。它主要关注通用技术:常见的错误配置和弱文件权限。它不会检查缺少的补丁,但是使用单个shell脚本很难检查“on-box”。Checkout exploit-suggester如果你有兴趣这样做“off-box”..

为什么另一个审计脚本?
有很多脚本会为您执行本地安全审计(Tiger和LSAT就是很好的例子)。一些胡佛数据,所以你可以离线分析,其他人也会分析它,并为你提供一个很好的报告。这些都有它们的位置,我会继续使用它们。然而…

我还没有找到一个快速列出明显的攻击向量的列表,它被编写为单个shell脚本(我也讨厌shell脚本,但我想要一个几乎可以在任何Unix系统上运行的脚本)。

因此,我决定编写unix-privesc-audit,专注于查找实际可被利用的错误配置,而不是找到所有常用的最佳实践内容。

通过弱文件权限引入的一些漏洞
以下是脚本执行的检查列表。请注意,每当它检查文件权限时,它还会检查父目录的权限。当它找到一个可写组的文件或目录时,如果该组有多个非root成员,则只标记一个问题。

可写的家庭目录
如果您可以写入某人的主目录,您可以添加.rhosts文件或.ssh / authorized_keys文件并立即登录; 或者更改其中一个登录脚本(例如.bash_profile)并让他们在登录时创建一个SUID shell。如果主目录是可写的,会有很多问题。

如果任何主目录可由除所有者或root之外的任何人写入,则脚本会标记警告。

可读的/ etc / shadow
这些天不常见,但可以让你读取密码哈希,破解它们然后以其他用户身份登录。

此脚本检查非root用户是否可以读取影子文件。如果它可以读取影子文件,它还会执行一些其他检查(见下文)。

关于Cron Jobs的弱权限
Cron作业通常列在/ etc / crontab和/ var / spool / cron / crontabs /中。任何用户都可以运行Cron作业。此脚本检查cron作业是否运行可由root用户以及作业运行的用户修改的程序。

可写配置文件
以root身份运行的程序列在许多文件中(/etc/init.d/*,/etc/inetd.conf,/​​etc/xinetd.d/*等)如果这些文件中的任何一个是非可写的-root用户,此脚本将标记警告。

可写设备文件
此脚本检查与当前安装的文件系统(例如/ dev / sda1)对应的设备文件是否不可写。我怀疑这种情况经常发生在诚实中,但检查并没有坏处。

家庭目录中的可读文件
主目录中可能有很多有趣的东西,但是这个脚本会检查包含密码(.netrc,.my.cnf)和ACL(.rhosts,.ssh / *)的文件。如果可读,这些可以提供访问本地应用程序或其他本地用户帐户的方式。

运行进程对应可写程序
此脚本执行“ps”列表,尝试确定每个程序运行的完整路径,并检查是否可以由其运行的用户和root用户之外的任何人修改。

其他与文件权限无关的东西
该脚本还执行一些与权限提升相关的其他检查,但与文件权限无关:

Sudo配置
如果启用了特权,则Sudo是升级特权的最明显方式之一。有时只能运行某些命令,有时可以运行任何命令。

如果/ etc / sudoers是可读的,则此脚本会检查它是否正在使用,列出哪些用户可以使用sudo以及哪些用户可以在没有密码的情况下使用它。

没有密码的帐户
如果/ etc / shadow可读,则脚本会列出没有密码的任何帐户。

在实践中unix-privesc-check有用吗?
它在很大程度上取决于基本操作系统和管理员完成的配置量(更多配置=更多的错误机会)。如果你在一个相当现代的操作系统(例如Linux,Solaris 9/10)上运行它没有完成很多配置,那么你就找不到多少。默认情况下,这些操作系统具有快速安全的文件权限。但是,如果您针对Solaris 8运行它,或者针对已运行了几年且已完成大量配置或安装了第三方应用程序的系统,那么您可能会发现相当多的内容。

我很惭愧地说,当我运行这个脚本时,我在自己的Linux机器箱中发现了一些严重的错误配置!

限制
目前只检查上面的内容。没有检查其他“传统审计”的东西。还有一些关于文件权限的明显的权限提升策略,这些策略太难以编写脚本(至少对我而言)。此列表充当手动测试/工作TODO列表的限制/灵感列表:

实际上读取shell脚本,发现他们调用然后检查被调用程序的文件权限(例如,看到/etc/init.d脚本以不安全的方式调用任何东西,检查运行登录时间的shell脚本)
检查用户的PATH,然后在这些目录中查找不安全的程序
轮询“ps”以识别不经常运行的进程并检查正在运行的程序是否具有安全的文件权限。
检查SUID位设置的非标准程序
检查当前正在运行的进程的参数(例如,如果进程以root身份运行并且将“/dir/somefile.conf”作为参数,则值得检查该文件上的perms)。
它不解析shell脚本名称,perl脚本名称或进程列表中的任何其他类型的脚本名称。它只是正常检查/ bin / sh和/ usr / bin / perl。这实际上是一个非常大的限制。它的过程称为“/ bin / sh /tmp/dodgy-n-writable.sh”,它可能值得研究)。
它不会检查每个正在运行的进程的共享对象文件的权限。此信息至少在Linux上的/ proc / pid / maps,/ proc / pid / smaps中可用,因此此功能可能会有所不同。
它不会检查打开文件的权限。同样,这个信息在Linux上至少可以在/ proc / pid / fd /中获得,所以这个功能可能很快就会出现。
不报告/etc/hosts.equiv信任关系。
不检查NFS挂载/导出。这些是不安全的常见根源。
不检查从inittab运行的东西。
是的,很多很多限制,所以一定要做一个手动审核。:-) 不过,我希望这个脚本可以节省你一些时间。

转载请注明:XAMPP中文组官网 » UNIX的privesc检查