[Web安全 网络安全]-提权、开发、对抗
文章目录:
一:提权
1.定义
2.类型
3.方法
4.防范对策
5.Windows权限提升
5.1 溢出提权
5.2 MySQL数据库提权
5.3 SQL Server数据库提权
5.4 MSSQL数据库提权
5.5 令牌窃取
5.6 UAC提权
5.7 进程注入
5.8 BypassUAC
5.9 DLL劫持
5.10 引号路径
5.11 服务权限
6.Linux权限提升
6.1 内核提权
6.2 SUID提权
6.3 脏牛(Dirty Cow)漏洞提权
6.4 定时任务提权
6.5 环境变量提权
6.6 权限配置不当提权
6.7 数据库提权
二:开发
1.注意事项
2.方法
3.举例
三:对抗
1.方法
2.举例
这里解释了基本概念和简单举例
一:提权
1.定义
提权,即权限提升(Privilege Escalation),是指攻击者通过利用系统或应用程序的漏洞,从低权限级别账户逐步提升到更高权限级别的过程
举个栗子
举例:Equifax数据泄露事件中的提权操作 背景:Equifax是一家全球知名的信用评级机构,其存储了大量用户的敏感信息。在2017年,Equifax遭受了一次严重的网络攻击,导致大量个人敏感信息泄露 提权过程:攻击者首先利用Apache Struts框架的一个零日漏洞实现了对Equifax系统的初步入侵 然后,通过一系列提权操作,攻击者逐步提升了自己的权限,最终获得了对大量个人敏感信息的访问权限 结果:这次攻击导致了Equifax数百万用户的敏感信息泄露,包括姓名、地址、社会保障号码、驾驶执照号码等 这一事件对Equifax的声誉和业务造成了严重打击
2.类型
第一种分法
操作系统提权:利用操作系统层面的安全漏洞 如内核漏洞、权限设置不当等,从普通用户权限提升至管理员或其他高级权限 应用程序提权:利用应用程序自身的安全漏洞,如代码注入、配置错误等,实现权限提升 如,Web应用程序中存在的SQL注入漏洞可能导致攻击者获取数据库管理权限
第二种分法
垂直权限提升: 攻击者进入组织的IT基础架构后,设法获取比当前权限更高的访问权限 在Windows系统中,垂直权限提升可能涉及缓冲区溢出等漏洞,允许恶意软件提升权限并在系统上运行任意代码 在Linux系统中,垂直权限提升可能涉及利用root用户权限在目标计算机上运行或修改程序 水平权限提升: 攻击者在同一权限级别内获取对其他系统或资源的访问权限 这通常涉及对系统配置的深入了解和对用户行为的模仿
第三种分法
后台权限:通过弱口令,SQL注入等手段进入网站的后台 在此权限下,能够执行后台的一些功能,比如发布文章,但是执行的功能也仅仅局限于后台 数据库权限:一般通过弱口令或注入得到 在此权限下,可以对数据库文件进行修改 普通权限:包括网站权限和普通的用户权限 网站权限:通过RCE或文件上传,文件包含,反序列化等手段直达Shell在此权限下,可以更改网站的源代码或配置文件,也能收集到操作系统的相关信息 用户权限要比网站权限更高一些 System权限:要么通过高危的系统漏洞,要么通过网站权限等提权得到 在此权限下,就相当于操作自己的电脑。 在Windows中,System权限是最高权限,相当于Linux里面的root
3.方法
利用系统漏洞提权 内核漏洞利用: 攻击者通过发现并利用操作系统内核中的安全漏洞,可以绕过正常的权限检查机制,从而提升自己的权限 这种方法需要较高的技术水平和深入的系统知识,同时存在一定的风险,因为内核漏洞的利用往往会导致系统崩溃或不稳定 SUID/SGID程序滥用: SUID(Set User ID)和SGID(Set Group ID)是Unix和类Unix系统中文件权限的特殊位 当一个设置了SUID位的可执行文件被执行时,该文件将以文件所有者的权限运行 同样,设置了SGID位的文件将以文件所属组的权限运行 攻击者可以寻找并滥用这些设置了SUID/SGID位的程序,以提升自己的权限 密码破解与暴力猜测: 如果系统管理员使用了弱密码或默认的密码,攻击者可以通过密码破解工具或暴力猜测的方式获取管理员权限 此外,如果系统存在密码泄露的风险,如密码文件未加密或加密强度不足,攻击者也可以尝试获取密码哈希值并进行破解 利用应用程序漏洞提权 Web应用程序漏洞: Web应用程序中常见的漏洞如SQL注入、跨站脚本(XSS)、文件包含等,都可能被攻击者利用来提升权限 例如,通过SQL注入漏洞,攻击者可以执行任意的数据库查询操作,包括获取数据库管理权限 服务配置不当: 一些服务在配置时可能存在安全漏洞,如未限制访问权限、未启用安全认证等 攻击者可以利用这些配置不当的服务来提升自己的权限 提权漏洞利用工具: 攻击者可能会使用专门的提权漏洞利用工具来自动化地寻找并利用系统中的漏洞 这些工具通常包含大量的漏洞利用代码和攻击脚本,可以快速地检测并利用系统中的漏洞 其他提权方法 社会工程学攻击: 通过欺骗、诱导等手段获取用户的敏感信息或访问权限,进而实现提权 这种方法不需要高超的技术水平,但需要对目标系统的用户和环境有深入的了解 利用第三方软件或插件: 一些第三方软件或插件可能存在安全漏洞或配置不当的问题,攻击者可以利用这些漏洞来提升权限 因此,在选择和使用第三方软件或插件时,需要谨慎评估其安全性和可靠性
4.防范对策
及时修补漏洞:保持操作系统和所有应用程序的最新更新,及时修复已知的安全漏洞 最小权限原则:确保每个用户和进程仅拥有完成其任务所必需的最低权限 强化日志审计与监控:建立完善的日志记录和审计机制,密切关注任何异常活动,特别是涉及权限变更的行为 定期安全评估与渗透测试:通过专业的渗透测试和安全评估,模拟真实攻击场景,主动发现潜在的提权途径并加以修复 加强访问控制和权限管理:严格限制对敏感资源和服务的访问权限,避免将高权限账户泄露给不必要的用户 加强密码策略:强制用户使用强密码,并定期更换密码 加强员工培训和意识提升:定期对员工进行网络安全培训,提高他们的安全意识和防范能力
5.Windows权限提升
5.1 溢出提权
定义:溢出提权是利用系统或应用程序中的缓冲区溢出漏洞,通过向程序发送超出其处理能力的数据,导致程序崩溃或执行恶意代码,从而提升权限 例如,某些旧版本的Windows系统存在缓冲区溢出漏洞,攻击者可以构造特殊的输入数据,触发漏洞并运行任意代码,进而提升权限 举例:Windows系统内核溢出漏洞提权 描述:利用Windows系统中没有打补丁的内核溢出漏洞进行攻击 攻击者首先会查看当前用户权限和系统安全补丁 然后与可以进行提权的内核溢出漏洞EXP(漏洞利用程序)进行对比,找到可利用的漏洞并执行EXP进行提权 过程: 手动或自动查找系统潜在漏洞。 根据找到的漏洞,上传并执行相应的溢出程序。 成功利用漏洞后,获得系统的高权限
5.2 MySQL数据库提权
定义:MySQL数据库提权通常涉及获取数据库管理员权限,然后利用数据库系统提供的功能或漏洞提升系统权限 例如,通过SQL注入攻击获取数据库账号密码,然后利用数据库备份泄露、默认或弱口令等漏洞进入数据库 进一步通过数据库系统提供的文件操作功能或执行系统命令的漏洞,提升系统权限 MySQL提权通常涉及以下几种方法: UDF提权:通过上传并加载自定义函数(UDF)动态链接库(DLL)文件,执行任意系统命令 这要求攻击者能够上传文件到服务器,并且MySQL服务有权限加载这些DLL MOF提权:利用Windows管理对象格式(MOF)文件的漏洞,通过MySQL写入恶意的MOF文件到系统目录,从而执行任意命令 举例:通过UDF(用户自定义函数)提权 描述:利用MySQL数据库的UDF漏洞进行提权 攻击者首先会上传一个恶意的DLL文件到服务器上,然后创建一个UDF函数来调用这个DLL文件中的恶意代码 过程: 上传恶意DLL文件到服务器 使用CREATE FUNCTION语句创建一个UDF函数,指向上传的DLL文件 通过调用这个UDF函数执行恶意代码,提升权限
5.3 SQL Server数据库提权
定义:SQL Server数据库提权指的是攻击者通过一系列技术手段,获取到SQL Server数据库中的更高权限,通常是从普通用户权限提升到管理员(如sysadmin角色)权限 这种权限提升使得攻击者能够执行更多的数据库操作,甚至可能控制整个数据库服务器 攻击者可能会利用这些高权限来执行恶意SQL语句、修改数据库内容、读取敏感数据或进一步攻击系统 SQL Server提权通常涉及以下几种方法: xp_cmdshell提权:如果xp_cmdshell存储过程被启用,攻击者可以执行任意DOS命令 这通常要求攻击者已经获得了SQL Server的sysadmin权限 CLR提权:通过编写和部署CLR(公共语言运行时)程序集,执行任意 sp_OACreate提权:sp_OACreate是一个存储过程,用于调用OLE对象 攻击者可以利用该存储过程执行系统命令或操作文件,从而提升权限 举例:利用xp_cmdshell扩展存储过程提权 描述:xp_cmdshell是SQL Server的一个扩展存储过程,可以让SQL Server调用系统命令 如果攻击者获得了SA(系统管理员)账户权限,就可以利用xp_cmdshell执行系统命令,从而提升权限 过程: 确认xp_cmdshell是否已启用。如果没有启用,使用sp_configure命令启用它 使用xp_cmdshell执行系统命令,如添加新用户、将其添加到管理员组等 通过新添加的管理员账户登录系统,获得高权限
5.4 MSSQL数据库提权
定义:MSSQL是Microsoft SQL Server的另一种常见称呼,因此MSSQL数据库提权与SQL Server数据库提权在定义上是相同的 它同样指的是攻击者通过技术手段获取到MSSQL(即Microsoft SQL Server)数据库中的更高权限 这种权限提升使得攻击者能够对数据库进行更广泛的控制和操作,从而威胁到数据库的安全性和数据的完整性 举例:与SQL Server数据库提权类似,也可以利用xp_cmdshell或sp_oacreate等存储过程进行提权 描述:MSSQL(Microsoft SQL Server)数据库提权的方法与SQL Server类似 攻击者通常会尝试利用存储过程执行系统命令或操作文件系统 过程: 确认目标MSSQL数据库版本和已安装的补丁 查找可利用的存储过程,如xp_cmdshell或sp_oacreate 使用找到的存储过程执行系统命令或操作文件系统,提升权限
5.5 令牌窃取
定义:令牌窃取是攻击者通过某种方式获取系统进程中的令牌(Token),然后使用该令牌提升权限 例如,攻击者可以利用Windows系统中的某些漏洞或工具,获取高权限进程的令牌,然后使用该令牌执行需要高权限的操作 举例:Windows令牌窃取提权 描述:令牌是Windows操作系统中用于表示用户身份和权限的数据结构 攻击者可以通过窃取高权限用户的令牌来获得相应的权限 过程: 使用工具或编写代码来枚举当前系统中的所有令牌 找到目标高权限用户的令牌 使用令牌窃取技术(如Incognito等)将当前进程的令牌替换为目标令牌 以高权限用户的身份执行操作
5.6 UAC提权
定义:UAC(用户账户控制)是Windows系统提供的一种安全机制,用于限制应用程序和用户对系统的访问权限 攻击者可能会尝试绕过UAC机制,以提升权限 例如,通过修改注册表或使用特定的工具,攻击者可以欺骗UAC机制,使其认为某个需要高权限的操作是由低权限用户发起的,从而绕过UAC限制 举例:绕过UAC(用户账户控制)提权 描述:UAC是Windows操作系统中的一种安全机制,用于限制应用程序的权限。攻击者可以通过绕过UAC来获得更高的权限 过程: 识别目标系统中的UAC级别 使用已知的绕过UAC的技术或工具(如Metasploit中的exploit/windows/local/ask等)来尝试绕过UAC 如果绕过成功,以管理员身份执行恶意代码或操作
5.7 进程注入
定义:进程注入是将恶意代码注入到另一个正在运行的进程中,从而利用该进程的权限执行恶意操作 例如,攻击者可能会将恶意代码注入到高权限进程中,如系统服务或管理员运行的程序,然后利用该进程的权限执行恶意操作 举例:进程注入提权 描述:进程注入是一种将恶意代码注入到正在运行的进程中的技术 攻击者可以通过进程注入将恶意代码注入到高权限进程中,从而获得相应的权限 过程: 识别目标高权限进程 使用进程注入工具或编写代码将恶意代码注入到目标进程中 在目标进程中执行恶意代码,提升权限
5.8 BypassUAC
定义:BypassUAC是指绕过Windows系统的用户账户控制(UAC)机制,以提升权限 例如,攻击者可能会利用某些漏洞或工具,模拟高权限用户的操作,从而绕过UAC限制并执行需要高权限的操作 举例:利用已知漏洞或技术绕过UAC 描述:BypassUAC是绕过UAC的一种通用术语 攻击者可以使用已知的漏洞或技术来绕过UAC的限制,从而获得更高的权限 过程: 收集关于目标系统的信息,包括UAC级别和已安装的补丁 查找已知的BypassUAC漏洞或技术 使用找到的漏洞或技术尝试绕过UAC 如果绕过成功,以管理员身份执行恶意代码或操作
5.9 DLL劫持
定义:DLL劫持是指攻击者通过替换或修改系统中的DLL文件,使应用程序在加载DLL时执行恶意代码 例如,攻击者可能会将恶意的DLL文件放置在应用程序的搜索路径中,当应用程序尝试加载该DLL时,就会执行恶意代码,从而提升权限 举例:利用DLL劫持技术提权 描述:DLL劫持是一种利用应用程序加载动态链接库(DLL)时的搜索顺序漏洞进行攻击的技术 攻击者可以将恶意DLL替换为应用程序要加载的合法DLL,从而执行恶意代码 过程: 识别目标应用程序要加载的合法DLL 创建一个与合法DLL同名的恶意DLL 将恶意DLL放置在应用程序搜索路径中的优先位置(如应用程序目录或系统目录) 当应用程序尝试加载合法DLL时,实际上加载的是恶意DLL 在恶意DLL中执行恶意代码,提升权限
5.10 引号路径
定义:引号路径漏洞通常与文件路径处理不当有关 例如,当应用程序在处理文件路径时没有正确处理引号时,攻击者可能会利用该漏洞构造特殊的文件路径,使应用程序执行恶意文件或命令,从而提升权限 举例:利用引号路径漏洞进行提权 描述:引号路径漏洞是一种与路径解析相关的漏洞 当应用程序在解析带有引号的路径时存在漏洞,攻击者可以利用这个漏洞来执行恶意代码或访问敏感资源 过程(假设漏洞存在): 构造一个带有引号的恶意路径,该路径指向攻击者控制的恶意文件 诱使目标应用程序加载或执行该恶意路径指向的文件 在恶意文件中执行恶意代码,提升权限
5.11 服务权限
定义:服务权限是指Windows系统中服务进程的权限 攻击者可能会尝试提升服务进程的权限,以便执行需要高权限的操作 例如,通过修改服务的配置或利用服务中的漏洞,攻击者可以使服务以高权限运行,并利用该服务执行恶意操作 举例:利用服务权限漏洞进行提权 描述:Windows服务是运行在系统后台的进程,它们通常具有较高的权限 如果服务配置不当或存在漏洞,攻击者可以利用这些漏洞来提升权限 过程: 识别目标系统中的服务及其权限配置 查找已知的服务权限漏洞 利用找到的漏洞尝试提升服务进程的权限 如果提升成功,以服务进程的权限执行恶意代码或操作
6.Linux权限提升
6.1 内核提权
定义:利用操作系统内核中的漏洞或缺陷来提升权限 举例:攻击者可能发现内核中的某个未打补丁的漏洞,通过构造特定的恶意输入或执行特定的操作序列,绕过正常的权限检查机制,从而获得更高的权限
6.2 SUID提权
定义:通过为可执行文件设置SUID(Set User ID)权限,使得任何执行该文件的用户都临时拥有文件所有者的权限 举例:假设有一个名为myprogram的可执行文件,其所有者是root用户,并且已经为其设置了SUID权限 当普通用户执行该文件时,将临时获得root用户的权限,从而可以执行一些通常需要更高权限的操作
6.3 脏牛(Dirty Cow)漏洞提权
定义:Dirty Cow是Linux操作系统中的一个本地特权升级漏洞,源于Copy-On-Write(写时复制)机制的竞态条件 该漏洞允许低权限用户在本地系统上提升为root用户 举例:攻击者可以利用脏牛漏洞修改只读文件,如/etc/passwd,添加一个新的用户并将其权限提升为root 这通常涉及使用特定的C代码编写利用程序,并编译运行以触发漏洞
6.4 定时任务提权
定义:通过修改或利用系统中的定时任务(如crontab)来执行特权命令或脚本,从而实现权限提升 举例:攻击者可能通过某种方式(如社会工程学或漏洞利用)在系统中添加一个定时任务 该任务在特定时间执行一个特权脚本,该脚本包含需要以特权身份执行的命令
6.5 环境变量提权
定义:通过修改或利用环境变量中的路径或值来影响系统的行为,从而实现权限提升 举例:在某些情况下,攻击者可能通过修改$PATH环境变量来包含恶意可执行文件的路径,从而在执行特定命令时执行恶意代码
6.6 权限配置不当提权
定义:由于系统管理员配置不当或疏忽,导致某些文件或目录的权限设置过于宽松,从而允许低权限用户访问或修改这些文件或目录 举例:如果某个重要文件的权限被设置为可写(如chmod 666),则任何用户都可以修改该文件的内容,从而可能导致权限提升或系统被破坏
6.7 数据库提权
定义:通过利用数据库系统中的漏洞或配置不当,获得对数据库的更高权限,进而可能通过数据库访问或控制整个系统 举例:攻击者可能利用数据库中的SQL注入漏洞来执行恶意SQL语句,从而获取对数据库的更高权限 在某些情况下,这些权限可能允许攻击者执行系统命令或访问敏感数据
二:开发
1.注意事项
安全编码实践 制定和推广安全编码规范,培训开发人员编写安全可靠的代码 在开发过程中加入安全性考量,如输入验证、输出编码等 代码审查 对软件代码进行定期审查,发现和修复潜在的安全漏洞和弱点 确保代码符合安全最佳实践和标准 安全架构设计 参与系统和应用程序的安全架构设计,包括网络拓扑设计、身份认证与授权机制、数据加密与传输等 选择合适的安全工具和技术,如防火墙、入侵检测系统(IDS)、入侵防御系统(IPS)等,以增强系统的安全防护能力
2.方法
全面的安全方法: 在开发过程开始之初,就应采用一种纪律严明的方法来构建端到端安全的系统 需要有人对安全性进行监督,以确保所有单独的要素放在一起后,最终系统能保持全面安全 验证所有数据: 不验证用户输入的数据会使网站遭受各种破坏性攻击的风险,如SQL注入、跨站点脚本等 应内置数据验证以确保输入的所有信息都不会造成损害 扫描和更新: 定期对系统进行扫描以查找漏洞和安全弱点,并及时进行修复 将软件更新到最新版本或应用安全补丁程序以消除漏洞 使用强密码和严格的权限管理: 强制用户使用强密码,并实施双向验证以提高安全性 严格管理管理员权限,避免将信息提供给非必要的用户和第三方
3.举例
举例:开发安全的Web应用程序 目标:开发一个安全的Web应用程序,确保用户数据的安全性和隐私性 安全措施: 输入验证:对用户输入的数据进行严格的验证和过滤,防止SQL注入、XSS等攻击 输出编码:对输出数据进行编码,防止攻击者通过编码方式注入恶意代码 身份认证与授权:采用强密码策略、多因素认证等身份认证机制,确保用户身份的真实性 同时,实施细粒度的授权控制,确保用户只能访问其权限范围内的资源 数据加密:对敏感数据进行加密存储和传输,确保数据在存储和传输过程中的安全性 安全审计与监控:建立完善的日志记录和审计机制,实时监测和记录系统的异常情况 结果:通过实施上述安全措施,开发的Web应用程序能够有效地抵御各种网络攻击,确保用户数据的安全性和隐私性 过滤和阻止针对Web应用程序的恶意流量,保护用户数据并维护Web服务的完整性
三:对抗
1.方法
了解攻击手段 深入研究各种网络攻击手段,如DDoS攻击、SQL注入、XSS攻击等 了解攻击者的动机、目标和攻击方式,以便更好地制定防御策略 建立防御体系 构建多层次、多角度的安全防护体系,包括网络层、系统层、应用层等 部署防火墙、入侵检测系统、安全审计系统等安全设备,实时监测和防御网络攻击 应急响应与恢复 制定完善的应急响应计划,确保在发生安全事件时能够迅速响应和恢复 定期进行应急演练,提高团队的应急响应能力和协作水平 持续学习与更新 随着网络技术的不断发展和新的安全威胁的出现,网络安全人员需要持续学习和更新自己的知识和技能 参加安全培训、研讨会等活动,了解最新的安全技术和趋势 部署防火墙和入侵检测系统: 防火墙可以阻止未经授权的访问和恶意流量 入侵检测系统可以实时监测网络中的异常行为,并发出警报 定期安全评估和渗透测试: 通过专业的安全评估和渗透测试,模拟真实攻击场景,主动发现潜在的漏洞并加以修复 强化日志审计与监控: 建立完善的日志记录和审计机制,密切关注任何异常活动 特别是涉及权限变更的行为,需要快速响应潜在的攻击 员工培训和意识提升: 定期对员工进行网络安全培训,提高他们的安全意识和防范能力 教育员工如何识别网络钓鱼、恶意软件等常见网络威胁 应急响应和灾难恢复计划: 制定详细的应急响应计划,以便在发生安全事件时能够迅速采取行动 定期演练灾难恢复计划,确保在关键时刻能够恢复系统的正常运行
2.举例
举例:对抗DDoS攻击 背景:DDoS攻击是一种常见的网络攻击方式,攻击者通过控制大量僵尸网络向目标服务器发送大量请求,导致服务器资源耗尽,无法响应正常用户的请求 对抗措施: 流量清洗:部署流量清洗设备或服务,对进入目标服务器的流量进行实时检测和过滤,将恶意流量清洗掉,确保正常流量的顺畅通行 IP黑名单:将攻击者的IP地址加入黑名单,阻止其继续向目标服务器发送请求 增加带宽和资源:增加目标服务器的带宽和资源,提高服务器的抗攻击能力 启用CDN:启用内容分发网络(CDN),将用户请求分散到多个节点上处理,减轻目标服务器的压力 结果:通过实施上述对抗措施,能够有效地抵御DDoS攻击,确保目标服务器的正常运行和用户的正常访问