攻防演练之漏洞利用的那些事儿
攻防演练活动的初衷是查缺补漏,通过组织演练活动完善信息系统纵深防御安全 体系,提升各单位应急响应能力和日常的安全意识。近两年来参与单位的数量和范围不多增加,演练也愈趋向于实战化,红方采用的攻击手段也越来越高级,比如社会工程学、新型免杀木马、0day漏洞利用等,今天就来讲讲漏洞利用那些事儿。
攻击者通过漏洞利用一般是为了实现权限提升、权限维持和清除痕迹。在攻击渗透的过程中通过漏洞获取到目标主机权限后,如果做到权限提升、权限维持,可以避免管理员发现、修补漏洞而导致对服务器权限的丢失,便于后面横向移动和搜集、渗透。主要是实现了如下几点:
1.渗透测试:利用相关漏洞拿下目标站点
2.持续输出:可以持久输出数据
3.获取信息:利用webshell获取到需要的信息
4.权限维持:对目标进行权限维持
一、0day漏洞
在近三年的攻防演练活动中,VPN漏洞成为重灾区,包括VPN、OA及其它众多的软件、工具中都被发现了此漏洞,攻击者也是没有错过机会,利用此类漏洞攻破了很多防线,拿到了不少的分数。这块发生的漏洞可以从CNVD查看。
从0day漏洞攻击的时间跨度,可梳理八个关键节点:
1、引入漏洞
可以理解为我们业务程序带伤上场,而此时编程人员或安全人员却全然不知。
2、攻击者发现漏洞
攻击者通过技术手段对攻击目标进行深入分析,挖掘其存在的0day漏洞,探寻绕过现有安全机制的有效途径。
3、攻击者对漏洞的利用
攻击者利用0day漏洞对特定目标实施攻击,发起"致命一击"。
4、受攻击者/供应商发现漏洞
受攻击者/供应商意识到该漏洞,但仍无法安装/发布有效修复补丁。
5、漏洞公开披露
供应商或安全研究人员披露此漏洞,使大家广泛意识到此漏洞的危害。
6、发布防病毒签名
当攻击者选择采用恶意程序对0day进行利用并实施攻击时,防病毒供应商通常会迅速响应并识别其签名加以防范,但当攻击者选择采用远程代码,或执行/注入等形式发起攻击时,则传统防护手段将失效,受攻击者面对威胁仍旧束手无策,甚至只能被迫关停服务或网络。
7、发布补丁
供应商最终发布该漏洞的修复补丁,但补丁分发周期通常需要数个小时,甚至数天,具体取决于修复补丁的复杂性,以及供应商对修复补丁的重视程度。
8、补丁程序部署
这里需要注意的是,即使收到修复补丁,用户也需要较长花费时间对补丁进行充分验证及部署。
二、Web漏洞
1、SQL注入漏洞
SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令代入行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。
通常情况下,SQL注入的位置包括:
(1)表单提交,主要是POST请求,也包括GET请求;
(2)URL参数提交,主要为GET请求参数;
(3)Cookie参数提交;
(4)HTTP请求头部的一些可修改的值,比如Referer、User_Agent等;
(5)一些边缘的输入点,比如.mp3文件的一些文件信息等。
2、XSS跨站脚本漏洞
跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、窃取密码、传播恶意代码等攻击。
XSS攻击使用到的技术主要为HTML和Javascript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。
XSS类型包括:
(1)非持久型跨站:即反射型跨站脚本漏洞,是目前最普遍的跨站类型。跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码不存储到服务端(比如数据库中)。上面章节所举的例子就是这类情况。
(2)持久型跨站:这是危害最直接的跨站类型,跨站代码存储于服务端(比如数据库中)。常见情况是某用户在论坛发贴,如果论坛没有过滤用户输入的Javascript代码数据,就会导致其他浏览此贴的用户的浏览器会执行发贴人所嵌入的Javascript代码。
(3)DOM跨站(DOM XSS):是一种发生在客户端DOM(Document Object Model文档对象模型)中的跨站漏洞,很大原因是因为客户端脚本处理逻辑导致的安全问题。
3、弱口令漏洞
弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。设置密码通常遵循以下原则:
(1)不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。
(2)口令长度不小于8个字符。
(3)口令不应该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。
(4)口令应该为以下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。
(5)口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail地址等等与本人有关的信息,以及字典中的单词。
(6)口令不应该为用数字或符号代替某些字母的单词。
(7)口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。
(8)至少90天内更换一次口令,防止未被发现的入侵者继续使用该口令。
4、Struts2远程命令执行漏洞
ApacheStruts是一款建立Java web应用程序的开放源代码架构。Apache Struts存在一个输入过滤错误,如果遇到转换错误可被利用注入和执行任意Java代码。
网站存在远程代码执行漏洞的大部分原因是由于网站采用了Apache Struts Xwork作为网站应用框架,由于该软件存在远程代码执高危漏洞,导致网站面临安全风险。CNVD处置过诸多此类漏洞,例如:“GPS车载卫星定位系统”网站存在远程命令执行漏洞(CNVD-2012-13934);Aspcms留言本远程代码执行漏洞(CNVD-2012-11590)等。
5、文件上传漏洞
文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。
三、远程代码执行漏洞
远程代码执行是一种网络攻击,攻击者可以借此在其他人的计算设备上远程执行命令。RCE通常是由主机下载的恶意恶意软件引起的,无论设备的地理位置如何,都可能发生。
远程代码执行允许攻击者完全地控制远程计算机,就像他们实际坐在计算机前面一样。这包括但不限于复制、编辑和删除文档或文件、安装新程序、更改或禁用防火墙和防病毒等防御产品、设置关键日志记录器或后门,以及使用入侵的计算机攻击新机器。
远程代码执行漏洞是在内存层执行的,不易被检测到,其它如基于主机的IPS(HIPS)、应用程序控制、文件白名单和服务器端点套件等一般局限于文件静态检测、启发式检测、动态行为分析、主动防御等技术,这些技术虽然对传统威胁攻击具有不错的检测、防御效果,但对于基于内存的攻击缺少检测能力,并容易产生大量的误报。
四、Netlogon特权提升漏洞
近年来,针对企业AD域服务器攻击的事情层出不穷,一旦拥有域控管理权限的域控服务器被攻破,所有加入域的终端和服务器都将被控制,存在被横向渗透直至全网沦陷的可能。
例如,2020年微软的典型NetLogon特权提升漏洞事件。2020年08月11日,微软官方发布了NetLogon特权提升漏洞的风险通告,该漏洞评分为10级,几乎所有微软服务器操作系统都受到影响,严重威胁域控服务器安全。由于安全公司Secura发布了相关的漏洞利用程序Zerologon,因此攻击者可以轻松的利用该漏洞获取到域控服务器的控制权限。
利用此漏洞允许未经身份验证的攻击者通过网络访问域控制器,建立易受攻击的Netlogon会话并最终获得域管理员权限。该漏洞特别严重,因为成功利用的唯一要求是能够与域控制器建立连接。使用此访问权限,攻击者可以获取凭据,然后执行攻击。
此外,由于该漏洞具有如下特点,对组织机构的危害比较大。
-
易于访问的攻击媒介(网络)
-
攻击复杂度低
-
对权限或用户交互没有要求
-
对机密性、完整性和可用性的影响很大
在攻防演练中,攻击者寄希望于通过此漏洞突破防线,拿到分数;防守者也应了解此类攻击的细节,可以针对性的制定防御措施,确保防线不失。