1.6.3 漏洞利用
漏洞利用(Exploitation)是将软件错误、软件漏洞以及安全风险结合起来,将安全风险变为实际的攻击行为。一般来说,漏洞利用通常是一段代码、一个程序或一个精心编制的数据,它利用软件漏洞对系统进行攻击,从而使安全风险具体化,实现意外的行为。
漏洞利用分为本地利用和远程利用两种。本地利用指的是利用系统的本地漏洞进行权限提升,实现对目标系统的完全控制。远程利用一般针对特定的网络服务,利用远程系统的漏洞,其目的是获取未经授权的信息或资源。
常见的漏洞利用类型有:
(1)拒绝服务(Denial of Service, DoS)。DoS利用系统的漏洞造成给定服务或系统崩溃。一般来说,攻击者从系统崩溃或停止服务中得不到好处,因此,DoS一般不是攻击者想要的目标,专业的渗透测试中很少会用DoS。
(2)本地权限提升(Local Privilege Escalation, LPE)。本地权限提升的目标是利用本地系统的脆弱性,提升原有的系统有限访问权限。一般是指获取到管理员的权限,具体有:
• 活动目录的“Domain Admin”。
• Windows系统下“NT Authority/System”。
• UNIX/Linux下“Root”用户的权限。
(3)远程代码执行(Remote Code Execution, RCE)。远程代码执行的目的是在目标系统上执行任意的代码。
(4)针对Web应用的利用(Web Applications, WebApps)。
(5)Client-Side Exploits,即针对客户端应用漏洞的利用。
(6)PoC(Proof of Concept)。PoC可以在无须发起攻击的情况下利用一段代码来检查给定系统是否存在某个特定漏洞。
在进行漏洞利用时,我们不得不提到漏洞利用的有效载荷,因为它是大多数漏洞利用不可分割的一部分。有效载荷基本上定义了利用漏洞后要执行的操作。常见的操作有:执行代码、引发一个逆向shell、创建一个后门、创建一个用户、对文件进行读取。
有效载荷通常以shell代码的形式编写,但也有例外,如WebApps漏洞利用就是以文本形式提供有效负载的。