IPD流程中的Web安全测试
最近整理渗透测试的标准,需要梳理归纳出一个渗透测试的标准流程,参考了很多相关的书籍资料。
(1)IPD常见的流程,(Integrated Product Development)是一套产品开发的模式、理念与方法。熟练应用在互联网企业中。
TR1——概念阶段技术评审点:产品需求和概念技术评审(业务需求评审)。
TR2——计划阶段技术评审点1:需求分解和需求规格评审(功能需求评审,产品级规格)。
TR3——计划阶段技术评审点2:总体方案评审(系统设计,架构设计,概要设计)。
TR4——开发阶段技术评审点1:模块/系统评审(详细设计,BBFV测试结果)。
在产品发布之前,安全测试是TR4版本之后,对Web进行安全测试,
我们使用自动化工具进行的渗透测试(前期的自动化渗透测试),单纯的拿到的是部分常见的的漏洞,比方你发现的跨站脚本,上传漏洞,SQL注入等。这些漏洞并不是针对用户端的代码层的漏洞或者逻辑层的漏洞,对于一些业务逻辑上的漏洞的安全性危害是最大的。常见的这些漏洞会是攻击者进一步获取系统信息升级权限,从而造成对业务逻辑和应用上的攻击。这样就危害大了。 我们常规的安全问题反映在应用上和服务上,应用上主要是移动端,手机,笔记本,台式机等的,服务上主要是服务器。
(2)WEb应用的扫描测试 (使用的工具 APPScan , Burp Suite , Nmap,WEbInset NStalker ACuentix WEb Vulnerablity Scanner 等一些测试工具),测试的时候必然会导致产生垃圾数据或者对待测试的系统产生较大的影响,所以我们使用的测试环境来做Web安全测试。
(3)扫描之后对协议存在的常见的漏洞保留扫描结果之后进行服务信息的收集工作。(信息收集)
第一:测试的目的测试响应的账户的权限, 一般的账户的 admin Administrator ,我们获取的账户的权限的越高对应的账户的Web测试攻击造成的危害越大。也就是说我们预期的目标是没有admin 或者administrator运行的web任务。
在linux下使用运行的命令: “PS - ef|grep java” 返回第一列的操作系统用户就是运行Web服务器的账户。
第二: 使用信息收集的目的在于搜集 Web服务器开放的端口。和未使用的端口。 测试机上安装了kali linux 或者nmap 或者IP advance 等扫描工具。 nmap的话我们使用 命令;
nmap -n -P0 -sS -sV -p1-65535 -oX scan_report.xml 1921.168.1.1保存的报告可以看出是否开启了一些没有必要开启的端口
第三: HTTP 使用的方法的测试,我们一般的话只提get ,put 方法,开启的方法越多意味着 攻击点越多。比方说开启了(delete trace move copy等)
测试的方法: telnet 192.168.1.1 80 (端口号是根据自己部署的设置的) 之后输入 OPTIONS /HTTP/1.0 或者 具体的HTTP版本。查看返回的 allows
PUT方法是想WEb服务器提交文件,我们也可以通过此方法提交木马等恶意代码。所以测试 "PUT"方法第必要的。
测试PUt方法,就是Telnet链接成功之后提交一个文件 ,看是否能够提交成功,之后在浏览器中输入提交的路径,看是否能够访问到提交的东西。 比方说: Https://192.168.1.1/laert/ten/alert.txt 。那么我们如何使用PUT方法写入一句话 提交了, 使用telnet 链接成功之后直接复制下面的 ,之后回车 测试
PUT /alert/ten/alert.txt HTTP/1.3
Content-Length:20
you have been hacked!
如果web服务器存在多个应用的程序(Application)我们需要对多个Application分别进行测试,当然测试的时候PUT提交的位置也要响应的发生变化。
Https://192.168.1.1:8080/Application1/laert/ten/alert.txt
Https://192.168.1.1:8080/Application2/laert/ten/alert.txt
Https://192.168.1.1:8080/Application3/laert/ten/alert.txt
我们后面吧其他HTTP方法的测试也一并写出来,如果WEb存在delete 方法攻击者可以直接通过该方法删除WEb服务器上的文件, 最常见的是直接在链接文章 news类型的文件后面的id 上加上delete 可以直接删除该片 文章或者news 。那么如何测试是否web服务器是否开启了这个功能了。
为了方便说明这个问题,我们首先在服务器上创建一个文件 ,之后测试是否能够删除。即可。
首先还是建立连接,之后 抵用delete 删除刚才创建的文件。 telnet ip 端口号 回车 delete /alert.txt /HTTP/1.0 (如果使用的版本不同可以适当的调节版本的表达方式.)
其实后面的对应测试trace 和copy等方法的测试的一些规范的地方都是相似的,我们简单说明一些即可。WEb提供Trace的方法主要是用于客户端通能过想WEb服务器提交Trace请求进行测试或获得诊断信息,攻击者通过该方法构造跨站攻击, 测试步骤: Telnet 链接 回车, Trace /HTTP/1.3 如果WEb服务器返回的是 “not allowed” 表示Web服务器禁止了TRACE方法。
还有MOVE方法,有些WEb服务器开启了MOVE的方法,用于请求服务器将制定的野蛮移动到另一个网址,这种方法存在一定的安全隐患,容易被利用。测试类似之前Telnet建立端口连接之后 回车输入下面命令: MOVE/test/12.html /13.html /HTTP/1.0 如果返回的结果是不支持(not Supported)表示是安全的,Web服务器没有提供该MOVE方法。
最后还有Copy 方法,web服务器开放Copy方法,用于请求服务器将指定的页面拷贝到另一个网址地址,该方法也不安全,很容易被利用。测试方法类似于MOVE的方法
COPY/test/12.html /14.html HTTP/1.0 查看返回结果 是否支持该方法。
(4)Web服务器的版本信息收集
很多时候在扫描服务器的时候发现,服务器会通过隐藏或者修改Banner的方法防止攻击者收集WebServer的版本信息。为了准确的获得版本信息,这个时候我么需要使用不依靠Server标题头的扫描方式进行服务器类型和版本的判断。我们可以使用HTTprint(Windows环境)我们直接可以在官网上下载之后放在系统盘的System32文件夹之下。在CMD命令下使用,
接下来是文件的目录测试,一般的话使用“啊D工具” 或者进一步使用扫描的工具 ,功能比较齐全的是Burp Suite ,这个工具也是我经常使用的一个工具,或者使用AWVS工具也可以。
渗透测试进行攻击的时候必须要了解Web网站的目录结构,这样才能确定攻击的目标,对于一些隐藏的管理接口外部没有明显的链接,但是可以大量的枚举发现,测试目标主机上是否安装了JRE或者其他的编程执行器 python,
测试主机上安装然健 DirBUster自定适应HTTP协议或者HTTPS协议。填写被测试的主机的IP地址信息。该软件可以添加目录字典进行大量的枚举。可以测试是否web系统对外开启敏感的接口。有些爬虫会专门爬取一些网站的敏感信息,所以在防止爬取网站敏感的信息是使用 Robots 方式会填写一些禁止爬取目录,但是该方法并不能杜绝恶意的爬取 ,所以攻击者可以从robots.txt文件中获得一些敏感 的信息。(比方说接口,甚至有的把默认的账户密码都写在上面)
(5)Web服务器的控制台的扫描信息收集
检查是否部署了Web服务器的控制台,控制条是否存在默认账户,口令,是否存在弱口令的信息。