新建一个文本文件,更改扩展名为aabb.udl双击此文件,选数据库类型、设置ip、用户名、密码,数据库可进行连接测试 ,当然对方要开sql服务的测试成功后,点确定将这个文件以文本方式打开, 里面有连接字符串,装sql 查询分析器。
身处不同的渗透测试环境下就会有不同的渗透思路以及渗透的技术手段,今天我们将从攻与守两个不同的视角来了解渗透测试在不同处境下所使用的技术手段。
从攻方视角看渗透
攻方既包括了潜在的黑客、入侵者,也包括了经过企业授权的安全专家。在很多黑客的视角中,只要你投入了足够多的时间和耐心,那么这个世界上就没有不可能渗透的目标。目前我们只从授权渗透的角度来讨论渗透测试的攻击路径及其可能采用的技术手段。
测试目标的不同,自然也导致了技术手段的不同,接下来我们将简单说明在不同的位置可能采用的技术手段。
内网测试
内网测试指的是由渗透测试人员在内部网络发起的测试,这类的测试能够模拟企业内部违规操作者的行为。它的最主要的“优势”就是绕过了防火墙的保护。内部可能采用的主要渗透方式有:远程缓冲区溢出,口令猜测,以及B/S或C/S应用程序测试(如果在渗透测试中有涉及到C/S程序测试的,那么就需要提前准备相关客户端软件供测试使用)。
外网测试
外网测试则恰恰与内网测试相反,在此类测试当中渗透测试人员完全处于外部网络(例如拨号、ADSL或外部光纤),来模拟对内部状态一无所知的外部攻击者的行为。外部可能采用的渗透方式包括:对网络设备的远程攻击,口令管理安全性测试,防火墙规则试探、规避、Web及其它开放应用服务的安全性测试。
不同网段/Vlan之间的渗透
这种渗透方式是从某内/外部网段,尝试对另一网段/Vlan来进行渗透。这类测试通常可能用到的技术包括:对网络设备的远程攻击、对防火墙的远程攻击或规则探测、规避尝试。
信息的收集和分析伴随着渗透测试的每一个步骤,而每一个步骤又有三个部分组成:操作、响应和结果分析。
端口扫描
通过对目标地址的TCP/UDP端口扫描,确定其所开放的服务的数量以及类型,这是所有渗透测试的基础。端口扫描是计算机解密高手喜欢的一种方式。通过端口扫描,可以大致确定一个系统的基本信息并搜集到很多关于目标主机的各种有用的信息,然后再结合安全工程师的相关经验就可以确定其可能存在的以及可能被利用的安全弱点,从而为进行深层次的渗透提供可靠性依据。
远程溢出
这是当前出现的频率最高、威胁最严重,同时又是最容易实现的一种渗透方法,一个仅仅具有一般的基础性网络知识的入侵者就可以在相当短的时间内利用现成的工具实现远程溢出攻击。
对于防火墙内的系统同样存在这样的风险,只要对跨接防火墙内外的一台主机攻击成功,那么通过这台主机对防火墙内的主机进行攻击就易如反掌。
口令猜测
口令猜测也是一种出现概率很高的风险,几乎不需要任何攻击工具,利用一个简单的暴力攻击程序和一个比较完善的字典,就可以进行猜测口令。
对一个系统账号的猜测通常包括两个方面:首先是对用户名的猜测,其次是对密码的猜测。只要攻击者能猜测或者确定用户口令,就能获得机器或者网络的访问权,并且能够访问到用户能够访问的审核信息资源。
本地溢出
所谓本地溢出是指在拥有了一个普通用户的账号之后,通过一段特殊的指令代码来获取管理员权限的方法。使用本地溢出的前提是首先你要获得一个普通用户密码。也就是说由于导致本地溢出的一个关键条件是设置不当的密码策略。
多年的实践证明,在经过前期的口令猜测阶段获取的普通账号登录系统之后,对系统实施本地溢出攻击,就能获取不进行主动安全防御的系统的控制管理权限。
脚本及应用测试
Web脚本及应用测试专门针对Web及数据库服务器进行。根据最新的技术统计表明,脚本安全弱点是当前Web系统尤其是存在动态内容的Web系统比较严重的安全弱点之一。利用脚本相关弱点轻则可以获取系统其他目录的访问权限,重则将有可能取得系统的控制管理权限。因此对于含有动态页面的Web、数据库等系统,Web脚本及应用测试将是渗透测试中必不可少的一个环节。
在Web脚本及应用测试中,可能需要检查的部份包括:
(1)检查应用系统架构,防止用户绕过系统直接修改数据库;
(2)检查身份认证模块,用以防止非法用户绕过身份认证;
(3)检查数据库接口模块,用以防止用户获取系统权限;
(4)检查文件接口模块,防止用户获取系统文件;
(5)检查其他安全威胁。
无线测试
虽然中国的无线网络还处于建设时期,但是无线网络的部署及其简易,所以在一些大城市里的普及率已经很高了。在北京和上海的商务区内至少有80%的地方都可以找到接入点。
通过对无线网络的测试,可以判断企业局域网的安全性,这已经成为渗透测试中越来越重要的环节。
除了以上的测试手段以外,还有一些可能会在渗透测试过程中使用的技术,包括:社交工程学、拒绝服务攻击,以及中间人攻击。
从守方视角看渗透
当具备渗透测试攻击经验的人们站到系统管理员的角度,要保障一个大网的安全时,我们会发现,关注点是完全不同的。从攻方的视角看是“攻其一点,不及其余”,只要找到一个小漏洞,就有可能撕开整条战线;但如果你从守方的视角来看,就会发现往往是“千里之堤,毁于蚁穴”。因此,必须要有好的理论指引,从技术到管理都要注重安全,才能使网络固若金汤。
渗透测试的必要性
渗透测试利用网络安全扫描器、专用安全测试工具和富有经验的安全工程师的人工经验对网络中的核心服务及其重要的网络设备,包括服务器、网络设备、防火墙等进行非破坏性质的模拟黑客攻击,目的是侵入系统并获取机密信息并将入侵的过程和细节产生报告给用户,从而实现网络信息安全的防护。
渗透测试和工具扫描可以很好的互相补充。工具扫描具有很好的效率和速度,但存在一定的误报率和漏报率,并且不能发现高层次的、复杂的、并且相互关联的安全问题;而渗透测试则需要投入大量的人力资源、并且对测试者的专业技能要求很高(渗透测试报告的价值直接依赖于测试者的专业技能水平),但是非常准确,可以发现逻辑性更强、更深层次的弱点,效果更加的明显。
一般的渗透测试流程如下:
时间的选择
为减少渗透测试对网络和主机的负面影响,渗透测试的时间尽量安排在业务量不大的时段或者是晚上。
策略的选择
为了防止渗透测试造成网络和主机的业务中断的问题,在渗透测试的过程中尽量不使用含有拒绝服务的测试策略。
授权渗透测试的监测手段
在评估过程中,由于渗透测试的特殊性,用户可以要求对整体测试流程进行实时的监控(PS:可能会提高渗透测试的成本)。
测试方自控
由渗透测试方对本次测透测试过程中的三方面数据进行完整记录:操作、响应、分析,最终会形成完整有效的渗透测试报告并将其提交给用户。
用户监控
用户监控一共有四种形式:
全程监控:采用类似Ethereal的嗅探软件进行全程抓包嗅探;
择要监控:对其扫描过程不进行录制,仅在安全工程师分析数据后,准备发起渗透前才开启软件进行嗅探;
主机监控:仅监控受测主机的存活状态,用以避免意外情况发生;
指定攻击源:用户指定由特定攻击源地址进行攻击,该源地址的主机由用户进行进程、网络连接、数据传输等多方面的监督控制。
(友情提示:文章中会出现与之前文章些许重复的情况,望各位亲包容,不过重复即是记忆。大家要常驻米安网哦!)
黑箱测试 黑箱测试又被称为所谓的“Zero-Knowledge Testing”,渗透者完全处于对系统一无所知的状态,通常这类型测试,最初的信息获取来自于DNS、Web、Email及各种公开对外的服务器。 白盒测试 白盒测试与黑箱测试恰恰相反,测试者可以通过正常渠道向被测单位取得各种资料,包括网络拓扑、员工资料甚至网站或其它程序的代码片断,也能够与单位的其它员工(销售、程序员、管理者……)进行面对面的沟通。这类测试的目的是模拟企业内部雇员的越权操作。 隐秘测试 隐秘测试是对被测单位而言的,通常情况下,接受渗透测试的单位网络管理部门会收到通知:在某些时段进行测试。因此能够监测网络中出现的变化。但隐秘测试则被测单位也仅有极少数人知晓测试的存在,因此能够有效地检验单位中的信息安全事件监控、响应、恢复做得是否到位。 根据渗透目标分类 主机操作系统渗透 对Windows、Solaris、AIX、Linux、SCO、SGI等操作系统本身进行渗透测试。 数据库系统渗透 对MS-SQL、Oracle、MySQL、Informix、Sybase、DB2等数据库应用系统进行渗透测试。 应用系统渗透 对渗透目标提供的各种应用,如ASP、CGI、JSP、PHP等组成的WWW应用进行渗透测试。 网络设备渗透 对各种防火墙、入侵检测系统、网络设备进行渗透测试。 从攻方视角看渗透 攻方既包括了潜在的黑客、入侵者,也可能是经过企业授权的安全专家。在很多黑客的视角中,世界上永远没有不可能渗透的目标,差别仅在时间和耐性上。 目前我们仅仅从授权渗透的角度来讨论渗透测试的攻击路径及可能采用的技术手段。 测试目标不同,涉及需要采用的技术也会有一定差异,因此下面简单说明在不同位置可能采用的技术。 内网测试 内网测试指的是渗透测试人员由内部网络发起测试,这类测试能够模拟企业内部违规操作者的行为。最主要的“优势”是绕过了防火墙的保护。内部主要可能采用的渗透方式:远程缓冲区溢出,口令猜测,以及B/S或C/S应用程序测试(如果涉及C/S程序测试,需要提前准备相关客户端软件供测试使用)。 外网测试 外网测试指的是渗透测试人员完全处于外部网络(例如拨号、ADSL或外部光纤),模拟对内部状态一无所知的外部攻击者的行为。包括对网络设备的远程攻击,口令管理安全性测试,防火墙规则试探、规避,Web及其它开放应用服务的安全性测试。 不同网段/Vlan之间的渗透 这种渗透方式是从某内/外部网段,尝试对另一网段/Vlan进行渗透。这类测试通常可能用到的技术包括:对网络设备的远程攻击;对防火墙的远程攻击或规则探测、规避尝试。 渗透测试的流程图如图2所示: 信息的收集和分析伴随着每一个渗透测试步骤,每一个步骤又有三个组成部分:操作、响应和结果分析。 端口扫描 通过对目标地址的TCP/UDP端口扫描,确定其所开放的服务的数量和类型,这是所有渗透测试的基础。通过端口扫描,可以基本确定一个系统的基本信息,结合安全工程师的经验可以确定其可能存在,以及被利用的安全弱点,为进行深层次的渗透提供依据。 远程溢出 这是当前出现的频率最高、威胁最严重,同时又是最容易实现的一种渗透方法,一个具有一般网络知识的入侵者就可以在很短的时间内利用现成的工具实现远程溢出攻击。 对于防火墙内的系统同样存在这样的风险,只要对跨接防火墙内外的一台主机攻击成功,那么通过这台主机对防火墙内的主机进行攻击就易如反掌。 口令猜测 口令猜测也是一种出现概率很高的风险,几乎不需要任何攻击工具,利用一个简单的暴力攻击程序和一个比较完善的字典,就可以猜测口令。 对一个系统账号的猜测通常包括两个方面:首先是对用户名的猜测,其次是对密码的猜测。 本地溢出 所谓本地溢出是指在拥有了一个普通用户的账号之后,通过一段特殊的指令代码获得管理员权限的方法。使用本地溢出的前提是首先要获得一个普通用户密码。也就是说由于导致本地溢出的一个关键条件是设置不当的密码策略。 多年的实践证明,在经过前期的口令猜测阶段获取的普通账号登录系统之后,对系统实施本地溢出攻击,就能获取不进行主动安全防御的系统的控制管理权限。 脚本及应用测试 Web脚本及应用测试专门针对Web及数据库服务器进行。根据最新的技术统计,脚本安全弱点为当前Web系统,尤其是存在动态内容的Web系统比较严重的安全弱点之一。利用脚本相关弱点轻则可以获取系统其他目录的访问权限,重则将有可能取得系统的控制权限。因此对于含有动态页面的Web、数据库等系统,Web脚本及应用测试将是必不可少的一个环节。在Web脚本及应用测试中,可能需要检查的部份包括: 检查应用系统架构,防止用户绕过系统直接修改数据库; 检查身份认证模块,用以防止非法用户绕过身份认证; 检查数据库接口模块,用以防止用户获取系统权限; 检查文件接口模块,防止用户获取系统文件; 检查其他安全威胁; 无线测试 中国的无线网络还处于建设时期,但是由于无线网络的部署简易,在一些大城市的普及率已经很高了。北京和上海的商务区至少80%的地方都可以找到接入点。 通过对无线网络的测试,可以判断企业局域网安全性,已经成为越来越重要的渗透测试环节。 除了上述的测试手段外,还有一些可能会在渗透测试过程中使用的技术,包括:社交工程学、拒绝服务攻击,以及中间人攻击。 从守方视角看渗透 当具备渗透测试攻击经验的人们站到系统管理员的角度,要保障一个大网的安全时,我们会发现,需要关注的问题是完全不同的:从攻方的视角看,是“攻其一点,不及其余”,只要找到一点漏洞,就有可能撕开整条战线;但从守方的视角看,却发现往往“千里之堤,毁于蚁穴”。因此,需要有好的理论指引,从技术到管理都注重安全,才能使网络固若金汤。 渗透测试的必要性 渗透测试利用网络安全扫描器、专用安全测试工具和富有经验的安全工程师的人工经验对网络中的核心服务器及重要的网络设备,包括服务器、网络设备、防火墙等进行非破坏性质的模拟黑客攻击,目的是侵入系统并获取机密信息并将入侵的过程和细节产生报告给用户。 渗透测试和工具扫描可以很好的互相补充。工具扫描具有很好的效率和速度,但是存在一定的误报率和漏报率,并且不能发现高层次、复杂、并且相互关联的安全问题;渗透测试需要投入的人力资源较大、对测试者的专业技能要求很高(渗透测试报告的价值直接依赖于测试者的专业技能),但是非常准确,可以发现逻辑性更强、更深层次的弱点。 微软在其IT攻击和渗透测试团队的任务描述中提到,他们内部有一支渗透测试团队,日常的工作流程如下: 时间选择 为减轻渗透测试对网络和主机的影响,渗透测试时间尽量安排在业务量不大的时段或晚上。 策略选择 为防止渗透测试造成网络和主机的业务中断,在渗透测试中不使用含有拒绝服务的测试策略。 授权渗透测试的监测手段 在评估过程中,由于渗透测试的特殊性,用户可以要求对整体测试流程进行监控(可能提高渗透测试的成本)。 测试方自控 由渗透测试方对本次测透测试过程中的三方面数据进行完整记录:操作、响应、分析,最终形成完整有效的渗透测试报告提交给用户。 用户监控 用户监控有四种形式,其一全程监控:采用类似Ethereal的嗅探软件进行全程抓包嗅探,;其二择要监控:对扫描过程不进行录制,仅仅在安全工程师分析数据后,准备发起渗透前才开启软件进行嗅探;其三主机监控:仅监控受测主机的存活状态,避免意外情况发生;其四指定攻击源:用户指定由特定攻击源地址进行攻击,该源地址的主机由用户进行进程、网络连接、数据传输等多方监控。 图1 软件开发的生命周期及渗透测试的地位 图2 渗透测试技术流程图 图3 微软IT攻击与渗透团队工作流程 链接 网络信息搜集 使用PING Sweep、DNS Sweep、SNMP Sweep、Tracert等手段对主机存活情况、DNS名、网络链路等进行信息收集。可以对目标的网络情况、拓扑情况、应用情况有一个大致的了解,为更深层次的渗透测试提供资料。 保守策略选择 对于不能接受任何可能风险的主机系统,如银行票据核查系统,电力调度系统等,可选择如下保守策略: 1) 复制一份目标环境,包括硬件平台,操作系统,数据库管理系统,应用软件等。 2) 对目标的副本进行渗透测试。 本篇文章来源于 黑客基地-全球最大的中文黑客站 原文链接:
渗透测试,是为了证明网络防御按照预期计划正常运行而提供的一种机制。不妨假设,你的公司定期更新安全策略和程序,时时给系统打补丁,并采用了漏洞扫描器等工具,以确保所有补丁都已打上。如果你早已做到了这些,为什么还要请外方进行审查或渗透测试呢?因为,渗透测试能够独立地检查你的网络策略,换句话说,就是给你的系统安了一双眼睛。而且,进行这类测试的,都是寻找网络系统安全漏洞的专业人士。
渗透测试一定要遵循软件测试基本流程,要知道测试过程和目标特殊,在具体实施步骤上主要包含以下几步:
1、明确目标
当测试人员拿到需要做渗透测试的项目时,首先确定测试需求,如测试是针对业务逻辑漏洞,还是针对人员管理权限漏洞等;然后确定客户要求渗透测试的范围,如ip段、域名、整站渗透或者部分模块渗透等;最后确定渗透测试规则,如能够渗透到什么程度,是确定漏洞为止还是继续利用漏洞进行更进一步的测试,是否允许破坏数据、是否能够提升权限等。
2、收集信息
在信息收集阶段要尽量收集关于项目软件的各种信息。比如:对于一个Web应用程序,要收集脚本类型、服务器类型、数据库类型以及项目所用到的框架、开源软件等。信息收集对于渗透测试来说非常重要,只要掌握目标程序足够多的信息,才能更好地进行漏洞检测。
信息收集的方式可分为以下2种:主动收集、被动收集。
3、扫描漏洞
在这个阶段,综合分析收集到的信息,借助扫描工具对目标程序进行扫描,查找存在的安全漏洞。
4、验证漏洞
在扫描漏洞阶段,测试人员会得到很多关于目标程序的安全漏洞,但这些漏洞有误报,需要测试人员结合实际情况,搭建模拟测试环境对这些安全漏洞进行验证。被确认的安全漏洞才能被利用执行攻击。
5、分析信息
经过验证的安全漏洞就可以被利用起来向目标程序发起攻击,但是不同的安全漏洞,攻击机制不同,针对不同的安全漏洞需要进一步分析,制定一个详细的攻击计划,这样才能保证测试顺利执行。
6、渗透攻击
渗透攻击实际是对目标程序进行的真正攻击,为了达到测试的目的,像是获取用户账号密码、截取目标程序传输数据等。渗透测试是一次性测试,在攻击完成后能够执行清理工作。
7、整理信息
渗透攻击完成后,整理攻击所获得的信息,为后边编写测试报告提供依据。
8、编写报告
测试完成之后要编写报告,阐述项目安全测试目标、信息收集方式、漏洞扫描工具以及漏洞情况、攻击计划、实际攻击结果等。此外,还要对目标程序存在的漏洞进行分析,提供安全有效的解决办法。
01、信息收集
1、域名、IP、端口
域名信息查询:信息可用于后续渗透
IP信息查询:确认域名对应IP,确认IP是否真实,确认通信是否正常
端口信息查询:NMap扫描,确认开放端口
发现:一共开放两个端口,80为web访问端口,3389为windows远程登陆端口,嘿嘿嘿,试一下
发现:是Windows Server 2003系统,OK,到此为止。
2、指纹识别
其实就是网站的信息。比如通过可以访问的资源,如网站首页,查看源代码:
看看是否存在文件遍历的漏洞(如图片路径,再通过…/遍历文件)
是否使用了存在漏洞的框架(如果没有现成的就自己挖)
02、漏洞扫描
1、主机扫描
Nessus
经典主机漏扫工具,看看有没有CVE漏洞:
2、Web扫描
AWVS(Acunetix | Website Security Scanner)扫描器
PS:扫描器可能会对网站构成伤害,小心谨慎使用。
03、渗透测试
1、弱口令漏洞
漏洞描述
目标网站管理入口(或数据库等组件的外部连接)使用了容易被猜测的简单字符口令、或者是默认系统账号口令。
渗透测试
① 如果不存在验证码,则直接使用相对应的弱口令字典使用burpsuite 进行爆破
② 如果存在验证码,则看验证码是否存在绕过、以及看验证码是否容易识别
风险评级:高风险
安全建议
① 默认口令以及修改口令都应保证复杂度,比如:大小写字母与数字或特殊字符的组合,口令长度不小于8位等
② 定期检查和更换网站管理口令
2、文件下载(目录浏览)漏洞
漏洞描述
一些网站由于业务需求,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意的文件,可以是源代码文件、敏感文件等。
渗透测试
① 查找可能存在文件包含的漏洞点,比如js,css等页面代码路径
② 看看有没有文件上传访问的功能
③ 采用…/来测试能否夸目录访问文件
风险评级:高风险
安全建议
① 采用白名单机制限制服务器目录的访问,以及可以访问的文件类型(小心被绕过)
② 过滤【./】等特殊字符
③ 采用文件流的访问返回上传文件(如用户头像),不要通过真实的网站路径。
示例:tomcat,默认关闭路径浏览的功能:
param-namelistings/param-name
param-valuefalse/param-value
3、任意文件上传漏洞
漏洞描述
目标网站允许用户向网站直接上传文件,但未对所上传文件的类型和内容进行严格的过滤。
渗透测试
① 收集网站信息,判断使用的语言(PHP,ASP,JSP)
② 过滤规则绕过方法:文件上传绕过技巧
风险评级:高风险
安全建议
① 对上传文件做有效文件类型判断,采用白名单控制的方法,开放只允许上传的文件型式;
② 文件类型判断,应对上传文件的后缀、文件头、图片类的预览图等做检测来判断文件类型,同时注意重命名(Md5加密)上传文件的文件名避免攻击者利用WEB服务的缺陷构造畸形文件名实现攻击目的;
③ 禁止上传目录有执行权限;
④ 使用随机数改写文件名和文件路径,使得用户不能轻易访问自己上传的文件。
4、命令注入漏洞
漏洞描述
目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句,导致各种调用系统命令的web应用,会被攻击者通过命令拼接、绕过黑名单等方式,在服务端运行恶意的系统命令。
渗透测试
风险评级:高风险
安全建议
① 拒绝使用拼接语句的方式进行参数传递;
② 尽量使用白名单的方式(首选方式);
③ 过滤危险方法、特殊字符,如:【|】【】【;】【’】【"】等
5、SQL注入漏洞
漏洞描述
目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句查询后台数据库相关信息
渗透测试
① 手动测试:判断是否存在SQL注入,判断是字符型还是数字型,是否需要盲注
② 工具测试:使用sqlmap等工具进行辅助测试
风险评级:高风险
安全建议
① 防范SQL注入攻击的最佳方式就是将查询的逻辑与其数据分隔,如Java的预处理,PHP的PDO
② 拒绝使用拼接SQL的方式
6、跨站脚本漏洞
漏洞描述
当应用程序的网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建 HTML或JavaScript 的浏览器 API 更新现有的网页时,就会出现 XSS 缺陷。XSS 让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。
三种XSS漏洞:
① 存储型:用户输入的信息被持久化,并能够在页面显示的功能,都可能存在存储型XSS,例如用户留言、个人信息修改等。
② 反射型:URL参数需要在页面显示的功能都可能存在反射型跨站脚本攻击,例如站内搜索、查询功能。
③ DOM型:涉及DOM对象的页面程序,包括:document.URL、document.location、document.referrer、window.location等
渗透测试
存储型,反射型,DOM型
风险评级:高风险
安全建议
① 不信任用户提交的任何内容,对用户输入的内容,在后台都需要进行长度检查,并且对【】【】【"】【’】【】等字符做过滤
② 任何内容返回到页面显示之前都必须加以html编码,即将【】【】【"】【’】【】进行转义。
7、跨站请求伪造漏洞
漏洞描述
CSRF,全称为Cross-Site Request Forgery,跨站请求伪造,是一种网络攻击方式,它可以在用户毫不知情的情况下,以用户的名义伪造请求发送给被攻击站点,从而在未授权的情况下进行权限保护内的操作,如修改密码,转账等。
渗透测试
风险评级:中风险(如果相关业务极其重要,则为高风险)
安全建议
① 使用一次性令牌:用户登录后产生随机token并赋值给页面中的某个Hidden标签,提交表单时候,同时提交这个Hidden标签并验证,验证后重新产生新的token,并赋值给hidden标签;
② 适当场景添加验证码输入:每次的用户提交都需要用户在表单中填写一个图片上的随机字符串;
③ 请求头Referer效验,url请求是否前部匹配Http(s)😕/ServerHost
④ 关键信息输入确认提交信息的用户身份是否合法,比如修改密码一定要提供原密码输入
⑤ 用户自身可以通过在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie;
8、内部后台地址暴露
漏洞描述
一些仅被内部访问的地址,对外部暴露了,如:管理员登陆页面;系统监控页面;API接口描述页面等,这些会导致信息泄露,后台登陆等地址还可能被爆破。
渗透测试
① 通过常用的地址进行探测,如login.html,manager.html,api.html等;
② 可以借用burpsuite和常规页面地址字典,进行扫描探测
风险评级:中风险
安全建议
① 禁止外网访问后台地址
② 使用非常规路径(如对md5加密)
9、信息泄露漏洞
漏洞描述
① 备份信息泄露:目标网站未及时删除编辑器或者人员在编辑文件时,产生的临时文件,或者相关备份信息未及时删除导致信息泄露。
② 测试页面信息泄露:测试界面未及时删除,导致测试界面暴露,被他人访问。
③ 源码信息泄露:目标网站文件访问控制设置不当,WEB服务器开启源码下载功能,允许用户访问网站源码。
④ 错误信息泄露:目标网站WEB程序和服务器未屏蔽错误信息回显,页面含有CGI处理错误的代码级别的详细信息,例如SQL语句执行错误原因,PHP的错误行数等。
⑤ 接口信息泄露:目标网站接口访问控制不严,导致网站内部敏感信息泄露。
渗透测试
① 备份信息泄露、测试页面信息泄露、源码信息泄露,测试方法:使用字典,爆破相关目录,看是否存在相关敏感文件
② 错误信息泄露,测试方法:发送畸形的数据报文、非正常的报文进行探测,看是否对错误参数处理妥当。
③ 接口信息泄露漏洞,测试方法:使用爬虫或者扫描器爬取获取接口相关信息,看目标网站对接口权限是否合理
风险评级:一般为中风险,如果源码大量泄漏或大量客户敏感信息泄露。
安全建议
① 备份信息泄露漏洞:删除相关备份信息,做好权限控制
② 测试页面信息泄露漏洞:删除相关测试界面,做好权限控制
③ 源码信息泄露漏洞:做好权限控制
④ 错误信息泄露漏洞:将错误信息对用户透明化,在CGI处理错误后可以返回友好的提示语以及返回码。但是不可以提示用户出错的代码级别的详细原因
⑤ 接口信息泄露漏洞:对接口访问权限严格控制
10、失效的身份认证
漏洞描述
通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌, 或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。
渗透测试
① 在登陆前后观察,前端提交信息中,随机变化的数据,总有与当前已登陆用户进行绑定的会话唯一标识,常见如cookie
② 一般现在网站没有那种简单可破解的标识,但是如果是跨站认证,单点登录场景中,可能为了开发方便而简化了身份认证
风险评级:高风险
安全建议
① 使用强身份识别,不使用简单弱加密方式进行身份识别;
② 服务器端使用安全的会话管理器,在登录后生成高度复杂的新随机会话ID。会话ID不能在URL中,可以安全地存储,在登出、闲置超时后使其失效。
11、失效的访问控制
漏洞描述
未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。
渗透测试
① 登入后,通过burpsuite 抓取相关url 链接,获取到url 链接之后,在另一个浏览器打开相关链接,看能够通过另一个未登入的浏览器直接访问该功能点。
② 使用A用户登陆,然后在另一个浏览器使用B用户登陆,使用B访问A独有的功能,看能否访问。
风险评级:高风险
安全建议
① 除公有资源外,默认情况下拒绝访问非本人所有的私有资源;
② 对API和控制器的访问进行速率限制,以最大限度地降低自动化攻击工具的危害;
③ 当用户注销后,服务器上的Cookie,JWT等令牌应失效;
④ 对每一个业务请求,都进行权限校验。
12、安全配置错误
漏洞描述
应用程序缺少适当的安全加固,或者云服务的权限配置错误。
① 应用程序启用或安装了不必要的功能(例如:不必要的端口、服务、网页、帐户或权限)。
② 默认帐户的密码仍然可用且没有更改。
③ 错误处理机制向用户披露堆栈跟踪或其他大量错误信息。
④ 对于更新的系统,禁用或不安全地配置最新的安全功能。
⑤ 应用程序服务器、应用程序框架(如:Struts、Spring、ASP.NET)、库文件、数据库等没有进行相关安全配置。
渗透测试
先对应用指纹等进行信息搜集,然后针对搜集的信息,看相关应用默认配置是否有更改,是否有加固过;端口开放情况,是否开放了多余的端口;
风险评级:中风险
安全建议
搭建最小化平台,该平台不包含任何不必要的功能、组件、文档和示例。移除或不安装不适用的功能和框架。在所有环境中按照标准的加固流程进行正确安全配置。
13、使用含有已知漏洞的组件
漏洞描述
使用了不再支持或者过时的组件。这包括:OS、Web服务器、应用程序服务器、数据库管理系统(DBMS)、应用程序、API和所有的组件、运行环境和库。
渗透测试
① 根据前期信息搜集的信息,查看相关组件的版本,看是否使用了不在支持或者过时的组件。一般来说,信息搜集,可通过http返回头、相关错误信息、应用指纹、端口探测(Nmap)等手段搜集。
② Nmap等工具也可以用于获取操作系统版本信息
③ 通过CVE,CNVD等平台可以获取当前组件版本是否存在漏洞
风险评级:按照存在漏洞的组件的安全风险值判定当前风险。
安全建议
① 移除不使用的依赖、不需要的功能、组件、文件和文档;
② 仅从官方渠道安全的获取组件(尽量保证是最新版本),并使用签名机制来降低组件被篡改或加入恶意漏洞的风险;
③ 监控那些不再维护或者不发布安全补丁的库和组件。如果不能打补丁,可以考虑部署虚拟补丁来监控、检测或保护。
详细学习可参考:
第一类:网络渗透测试工具
网络渗透测试工具是一种可以测试连接到网络的主机/系统的工具。通用的网络渗透测试工具有ciscoAttacks、Fast-Track、Metasploit、SAPExploitation等,这些工具各有各的特点和优势。因为网络渗透测试是一个相对广泛的概念,所以上述工具也可以包括社会工程学渗透测试模块,网络渗透测试模块和无线渗透测试模块。
第二类:社会工程学渗透测试工具
社会工程学渗透测试是利用社会工程学进行渗透测试,通常利用人们行为中的弱点来达到渗透的目的。典型的社会工程学渗透测试工具有BeefXSS和HoneyPots,这些工具诱使用户访问特定的网站,获得用户的Cookie信息,达到渗透的目的。
第三类:网站渗透测试工具
网站渗透测试是对Web应用程序和相应的设备配置进行渗透测试。在进行网站渗透测试时,安全工程序必须采用非破坏性的方法来发现目标系统中的潜在漏洞。常用的网络渗透测试工具有asp-auditor、darkmysql、fimap、xsser等。
第四类:无线渗透测试工具
无线渗透测试工具是蓝牙网络和无线局域网的渗透测试。在进行无线渗透测试时,一般需要先破解目标网络的密码,或者建立虚假热点来吸引目标用户访问,然后通过其他方式控制目标系统。常见的蓝牙网络渗透测试工具有atshell、btftp、bluediving、bluemaho等;常见的无线局域网渗透测试工具有aircack-ng、airmon-ng、pcapgetiv和weakivgeng等,这些工具实现了不同的功能,可以让安全工程师通过各种方式进行无线渗透测试。
我来说两句