我有一个旧的比格尔伯恩黑板,类似于树莓皮。不幸的是,我忘记了Linux登录密码,可以使用Cloud9特性访问Linux。这样,我就可以作为普通用户登录Linux,但不能使用任何sudo命令。

在这种情况下,我可以擦除microSD并重新安装操作系统。但这可能是一个学习渗透方法的好机会。我可以编写C程序并作为普通用户执行,那么是否有可能执行缓冲区溢出攻击来重置我的密码?
发布于 2021-01-02 03:55:13
我可以编写C程序并作为普通用户执行,那么是否有可能执行缓冲区溢出攻击来重置我的密码?
不,因为根据定义,您可以编写和运行的任何程序都将以您的身份运行。任何缓冲区溢出都会以您的身份执行代码,而不是以根用户的身份执行。
您可能希望溢出一个setuid-root程序,但是如果没有根权限,您就无法创建一个程序。在计算机上已经存在的setuid-root程序中,您不应该期望对它们执行缓冲区溢出;它们经过很好的检查,并且是安全的。
最好的办法是中断引导周期,并说服引导加载程序允许您直接引导到shell中。不幸的是,在专用硬件上,我不知道GRUB或其他引导加载程序的使用情况如何。
具有讽刺意味的是,在2021年1月,针对“经过良好审查和安全的”系统setuid二进制文件之一的缓冲区溢出被宣布为萨默特男爵。所以,虽然我仍然不希望在一个洞中找到一个洞,也许你应该自由地尝试一下。
发布于 2021-01-02 02:02:36
您需要拥有修改密码的根权限。这可以通过向用户(非根)密码提供passwd实用程序来实现,因为该实用程序是setuid的,不管是谁执行它,它都会自动作为root运行。如果它验证您给它的密码是否与该用户的记录中的密码相匹配,它将允许您通过为您编辑/etc/shadow来更改它。
有许多方法可以在只有非特权本地访问权限的系统上获取根。这种类型的攻击被称为本地权限提升( LPE )。它通常依赖于攻击易受攻击的setuid应用程序,或者攻击内核本身。这两种方法都需要利用开发知识,开发知识不是人们可以在一天内学到的东西,也不是可以在这里的单一答案中捕捉到的东西。如果系统正在运行过时的软件,您可能会发现一个公共漏洞,您可以使用该漏洞来提升权限。否则,别指望它。
至于只使用缓冲区溢出,这在任何现代软件上都是行不通的。它可能在90年代起就起作用了,但今天不行。使用了许多安全技术,使天真的缓冲区溢出成为过去。现在,您需要绕过这些技术,这是不平凡的。如果您想要开始学习二进制攻击,请从教程开始,学习如何利用有意使用的不安全应用程序,同时手动禁用所有现代漏洞缓解措施。最后,您将开始学习如何在适当的缓解条件下执行利用程序(例如,学习如何利用ROP在非可执行内存中执行代码)。在开发具有所有安全性的现代系统之前,必须先了解这。
https://security.stackexchange.com/questions/242803
复制相似问题