JAVA开发运维(关于渗透测试与漏洞修复)

Posted 茅河野人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA开发运维(关于渗透测试与漏洞修复)相关的知识,希望对你有一定的参考价值。

对于C端的网站,H5,小程序或者app都需要进行渗透测试。

渗透测试是模拟真实黑客的攻击手段,对目标网站或主机进行全面的安全评估。 与黑客攻击不同,渗透测试的目的是尽可能多地发现安全漏洞,而真正的黑客只需要找到一种入侵。 点击进入目标系统。一个好的渗透测试员也可以被认为是一个好的黑客,也可以称为白帽。

渗透测试并没有一个标准的定义,一般通用的说法是,渗透测试指模拟攻击者入侵来评估计算机系统安全的行为,是一种授权的行为。

或者说是为了证明网络防御按照预期计划正常运行而提供的一种机制。再换句话说,渗透测试就是给你的系统安了一双眼睛。

一般渗透测试都由专业人士在不同位置利用各种手段对某个特定网络进行测试,以期发现和挖掘系统中存在的漏洞,然后输出渗透测试报告,并提交给网络的所有者。

一、渗透测试分类:

1、黑箱测试

黑箱测试又被称为所谓的“Zero-Knowledge Testing”,渗透者完全处于对系统一无所知的状态,通常这类型测试,最初的信息获取来自于DNS、Web、Email及各种公开对外的服务器。

2、白盒测试

白盒测试与黑箱测试恰恰相反,测试者可以通过正常渠道向被测单位取得各种资料,包括网络拓扑、员工资料甚至网站或其它程序的代码片段,也能够与单位的其它员工进行面对面的沟通。这类测试的目的是模拟企业内部雇员的越权操作。

3、隐秘测试

隐秘测试是对被测单位而言的,通常情况下,接受渗透测试的单位网络管理部门会收到通知:在某些时段进行测试。因此能够监测网络中出现的变化。但隐秘测试则被测单位也仅有极少数人知晓测试的存在,因此能够有效地检验单位中的信息安全事件监控、响应、恢复做得是否到位。

二、测试目标靶

1、主机操作系统渗透

对Windows、Solaris、AIX、Linux、SCO、SGI等操作系统本身进行渗透测试。

2、数据库系统渗透

对MS-SQL、Oracle、mysql、Informix、Sybase、DB2、Access等数据库应用系统进行渗透测试。

3、应用系统渗透

对渗透目标提供的各种应用,如ASP、CGI、JSP、php等组成的WWW应用进行渗透测试。

4、网络设备渗透

对各种防火墙、入侵检测系统、网络设备进行渗透测试。

三、测试步骤

当前的自动化渗透领域,主要依赖自动化渗透工具和框架,包括:APT2、AutoSploit、NIG-AP、Deep Exploit、AutoPentest-DRL等。

工具:nmap、Burpsuite、Kali Linux 、sqlmap等

渗透测试的基本流程主要分为以下几步:

  • 明确目标

  • 信息收集

  • 漏洞探测(挖掘)

  • 漏洞验证(利用)

  • 提升权限

  • 清楚痕迹

  • 时候信息分析

  • 编写渗透测试报告

1、明确目标

主要是确定需要渗透资产范围;确定规则,如怎么去渗透;确定需求,如客户需要达到一个什么样的效果。

2、信息收集

收集一些基础信息,系统信息,应用信息,版本信息,服务信息,人员信息以及相关防护信息。

3、漏洞探测(挖掘)

主要是探测(挖掘)系统漏洞、web服务器漏洞、web应用漏洞以及其他端口服务漏洞。

4、漏洞验证(利用)

利用探测到的漏洞进行攻击

5、提升权限

提升权限主要是在当前用户权限不是管理员的时候需要进行提升权限,提升权限可以是提升系统权限,web应用权限或是数据库权限等。

6、清楚痕迹

清楚渗透过程中的一些痕迹,如添加的测试账号,上传的测试文件等。

7、事后信息分析

对整个渗透过程进行信息分析与整理,分析脆弱环节,技术防护情况以及管理方面的情况进行一个现状分析以及提出相关建议。

8、编写渗透测试报告

根据测试情况编写报告,说清楚渗透清单(范围)、攻击路径、渗透成果、漏洞详情及可行的修复建议,最后对整改渗透情况进行简单的总结和分析。

四、主要测试项

1、信息收集

信息收集剖析这是所有侵略恶意攻击前提条件/原曲/基本。根据对互联网信息收集剖析,能够随之、针对性地制订仿真模拟黑客攻击恶意攻击方案,以提升侵略成功概率、减少曝露或被发现了的机率。信息收集的办法包含服务器网络扫描、操作类型辨别、运用辨别、账户扫描仪、配置辨别这些。

2、端口扫描

根据对总体目标地址的TCP/UDP端口扫描,确认其所开放式的提供服务的数量及种类,这是每个网站渗透测试的前提。根据端口扫描,能够基本上确定一个系统软件的相关信息,融合测试工程师积累的经验可以知道其可能出现,和被利用的安全性缺点,为开展更深层次的渗入提供参考。

3、权限提升

根据获取信息与分析,具有二种概率,其一是总体目标系统软件存在重大缺点:测试工程师能直接保障措施系统软件,之后直接调研总体目标系统中缺点遍布、缘故,产生最后的检测报告;其二是总体目标系统软件并没有远程控制重要缺点,但是能够得到远程控制一般权限,这时候测试工程师能通过该一般权限进一步搜集总体目标系统数据。下面,竭尽全力获得当地权限,搜集当地材料信息内容,寻找当地权限提升的机遇。这种不断地信息收集剖析、权限提升的结论将组成本次新项目全部网站渗透测试流程的导出。

4、溢出测试

当测试工程师不能直接利用账号动态口令登陆系统时,也会使用系统软件溢出的办法立即得到自动控制系统权限,这种方法有时候也会导致系统死机或者从新启动,但是不会可能会导致内容丢失,若出现卡死等常见故障,只需把系统软件从新启动并打开原来服务项目就可以。一般情况下,假如未经授权,将无法开展该项测试。

5、WEB应用测试

Web脚本制作及应用测试针对Web及数据库服务开展。依据最新统计分析,脚本制作安全性缺点为现阶段Web系统,特别是存有动态性视频的Web系统非常严重的安全性缺点之一。利用脚本制作有关缺点轻者可以获得系统软件别的文件目录的访问限制,严重将有可能会获得系统软件控制权限。所以对于带有动态网站的Web、数据库系统等功能,Web脚本制作及应用测试将是不可缺少的的一个环节。

6、SQL注入攻击

SQL引入多见于运用了SQL数据库后端网络服务器,侵略者根据递交一些独特SQL句子,最后很有可能获得、伪造、操纵网址服务端数据库系统里面的内容。该类系统漏洞是侵略者常用侵略方式之一。

7、检测页面隐藏字段

网站应用系统软件常选用隐藏字段存储信息。很多根据页面的电子商务应用程序流程用隐藏字段来存放产品价格、登录名、登陆密码等敏感内容。故意用户使用实际操作隐藏字段具体内容做到故意交易盗取信息内容等情形,是一种非常可怕的系统漏洞。

8、跨站恶意攻击

侵略者可以利用网址来恶意攻击浏览此网站的终端产品用户,来获取客户动态口令或者使用网站挂马来西亚操纵手机客户端。

9、Cookie利用

网站应用系统软件常使用cookies机制在手机客户端服务器上储存一些信息内容,比如客户ID、动态口令、时戳等。侵略者很有可能根据伪造cookies具体内容,获得客户的账户,造成严重后果。

10、后门程序检查

系统软件开发环节中遗留下来的侧门和调节选择项有可能被侵略者所利用,造成侵略者轻而易举地从近道执行恶意攻击。

五、渗透测试发现的一般问题

渗透测试常常会发现如最常见的 SQL 注入漏洞、XSS 漏洞、文件上传漏洞、越权漏洞、弱口令等。

序号

漏洞

风险

支持不安全的TLSv1.0协议

序号

漏洞

风险

短信轰炸漏洞

支持不安全的TLSv1.0协议

TLS/SSL Sweet32漏洞

不安全的CORS配置漏洞

不安全的文件上传检测机制漏洞

javascript框架版本过低漏洞

启动了不安全的HTTP方法漏洞

名词解释:

  • 注入测试

攻击者通过客户端提交恶意构造的SQL语句,来获取数据库中的敏感数据,修改数据库并执行数据库管理操作,在某些情况下能对操作系统执行系统命令。

  • 跨站脚本测试

XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的,如盗取用户密码、种植木马等操作。

  • 路径遍历测试

许多的Web应用程序一般会有对服务器的文件读取查看的功能,大多会用到提交的参数来指明文件名,形如:http://www.xxx.com/getfile=image.jpg当服务器处理传送过来的image.jpg文件名后,Web应用程序即会自动添加完整路径,形如“d://site/images/image.jpg”,将读取的内容返回给访问者。由于文件名可以任意更改而服务器支持“~/”,“/..”等特殊符号的目录回溯,从而使攻击者越权访问或者覆盖敏感数据,如网站的配置文件、系统的核心文件。

  • 绕过授权模式

测试应用程序B/S模式身份验证机制是否严格,如访问未授权文件,COOKIES后台欺骗。通过修改数据包来提升普通用户的权限,并尝试执行管理员操作等。

  • 文件包含漏洞测试

服务器通过PHP(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可去包含一个恶意文件,而攻击者可以构造这个恶意文件来源,如读取目标服务器上的数据库配置文件,包含远程脚本木马文件获取Webshell来操控网站等权限。

  • 弱口令测试

弱口令指的是容易被别人猜测到或被破解工具破解的口令均为弱口令。例如“123”、“abc”等,并且大多程序是通过用户名和口令来作为身份验证机制。

  • 文件上传测试

网站的上传文件页面若对上传的文件类型过滤的不严格或上传逻辑漏洞,可能被恶意绕过上传验证,攻击者可以上传网页后门以控制网站。

  • 敏感信息泄漏

通过恶意构造URL地址让页面报错,从而得到服务器的敏感信息,如网站绝对路径、版本等,并使用工具扫描网站的备份文件,测试文件等,使攻击者能进一步的了解网站的结构

  • 暴力破解测试

暴力破解密码,其中一种就是用某种暴力破解软件,一个接一个的试,直到试验出正确的密码,也称为穷举法,如使用XSCAN猜解FTP密码。

  • 溢出测试

溢出是黑客利用操作系统的漏洞,专门开发了一种程序,加相应的参数运行后,就可以得到目标服务器管理员资格的控制权,如常见的MS07-029 、MS08-067等。

  • 嗅探测试

用集线器组建的网络是基于共享的原理的,局域网内所有的计算机都接收相同的数据包,而网卡构造了硬件的“过滤器”通过识别MAC地址过滤掉和自己无关的信息,嗅探程序只需关闭这个过滤器,将网卡设置为“混杂模式”就可以进行嗅探,用交换机switch组建的网络是基于“交换”原理的,交换机不是把数据包发到所有的端口上,而是发到目的网卡所在的端口,常见黑客嗅探工具Cain,通过ARP欺骗可嗅探各种密码。

  • 权限提升

攻击者通过使用各种工具和技术,使用他们可获得从Guest到SYSTEM不等的访问权限。常见如Windows Linux本地溢出漏洞,应用程序FTP SERV-U本地提权等。

  • 配置缺陷测试

目标网站应用程序若设置不当,会产生目录浏览,IIS写入,数据库文件泄漏等漏洞,通过这些配置缺陷可查看网站根目录下所有文件,并能直接PUT脚本木马,达到控制网站的目的。

六、漏洞修复

.......

一次渗透测试漏洞和web漏洞修复

Apache Tomcat AJP连接器请求注入

:将tomcatconf/server.xml配置文件中<Connector port=“8009” protocol="AJP/1.3"redirectPort=“8443” />注释掉

DS_Store文件信息泄露

.DS_Store是Mac下Finder用来保存如何展示文件//文件夹的数据文件,每个文件夹下对应一个。由于开发/设计人员在发布代码时未删除文件夹中隐藏的.DS_store,可能造成文件目录结构泄漏、源代码文件等敏感信息的泄露。

:删除.DS_Store文件

任意文件下载

比如一个图片访问接口,如果访问的是服务器本地的图片,那么需要对访问路径进行限制
例如:接口127.0.0.1:8080/user/getImg/path=123.jpg123.jpg是直接存放在服务器固定路径下的,如果没有对路径进行限制,这样访问接口127.0.0.1:8080/user/getImg/path=../../../../../etc/passwd,可能会访问到服务器的任何文件,此处使用/etc/passwd文件作为例子

:过滤接口参数中的路径信息,例如java中可以使用replace("/","")方法将/替换为空

登录信息爆破

有些服务的登录接口会返回用户名不存在,这样就能够被有心之人利用,爆破找到数据库中存在的用户,进而造成威胁

:无论是用户名不存在还是密码错误都返回同样的返回信息 用户名或者密码错误

登录缺失验证码

系统登陆处未设置验证码功能校验登录是否是人工登录行为,攻击者可通过工具进行字典攻击可对账号密码进行暴力破解

:添加需要验证码登录的功能

Tomcat管理界面泄露

:如果项目发布在tomcat中,删除其他所有tomcat自带的webapps下的文件,只保留自己的项目

Apache Tomcat样例目录session操纵

访问tomcat自带的webapps中的examples项目,存在众多的样例页面,存在着可被利用成功的风险。
Apache Tomcat默认安装包含”/examples”目录,里面存着众多的样例,其中session样例(/examples/servlets /servlet/SessionExample)允许用户对session进行操纵。因为session是全局通用的,所以用户可以通过操纵 session获取管理员权限

:删除examples目录

启用了TLS 1.0

攻击者可能能够利用此问题进行中间人攻击,并对受影响的服务和客户端之间的通信进行解密

:禁用TLS 1.0并将其替换为TLS 1.2或更高版本
tomcat使用TLS1.2:添加配置sslEnabledProtocols="TLSv1.2"

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
		   maxThreads="150" scheme="https" secure="true"
		   keystoreFile="conf/domains.jks"
		   keystorePass="xxxxxxxx"
		   clientAuth="false" sslProtocol="TLS"  sslEnabledProtocols="TLSv1.2"/>

java中禁用TLS1.0:
jdk安装目录下jre/lib/security/java.security中修改以下配置(添加TLSv1禁用):

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, RC4, DES, MD5withRSA, DH keySize < 1024, \\
    EC keySize < 224, 3DES_EDE_CBC
缺少X-Frame-Options标头

服务器未返回X-Frame-Options标头,这意味着该网站可能会遭受点击劫持攻击的风险。X-Frame-Options HTTP响应标头可用于指示是否应允许浏览器在框架或iframe中呈现页面。网站可以通过确保其内容未嵌入其他网站来避免点击劫持攻击

:后端在header中添加X-Frame-Options标头,java示例代码:

response.setHeader("x-frame-options","SAMEORIGIN");

以上是关于JAVA开发运维(关于渗透测试与漏洞修复)的主要内容,如果未能解决你的问题,请参考以下文章

渗透测试之中间件漏洞复现

用于渗透测试的10种漏洞扫描工具

测试网站搭建+渗透+审计之第二篇渗透测试

推荐渗透测试的10种漏洞扫描工具

一次渗透测试漏洞和web漏洞修复

渗透测试&网络&CTF面试题整理