web安全-剖析_基础构架剖析

剖析是用于研究和精确描述网站结构和应用工做方式的策略,是一个很是重要却常被忽视的Web入侵方向.html

基础架构的支持:Web服务器,硬件/软件,DNS项目,网络设备,负载平衡器等.前端

1、介绍nginx

2、基本的标志获取web

3、高级HTTP指纹识别数据库

4、基础构架中介apache

1、介绍后端

  1.足迹法(Footprinting)-使用各类基于互联网的研究方法肯定目标应用或组织的范围.传统上有许多工具和技术用于这项任务:安全

    a.互联网注册研究服务器

    b.DNS询问cookie

    c.整体组织研究

  2.基本基础架构侦察技术,如:

    a.服务器发现(Ping扫描) 

    b.网络服务识别(端口扫描)

  3.公认端口HTTP的TCP 80 以及/或用于HTTPS/SSL/TLS的TCP 443操做.

  提示:不要忽视端口扫描,许多web应用经过运行于Web服务器或者其余DMZ中与Web应用服务器相邻的服务器上的不恰当服务遭到入侵.

2、基本的标志获取

  标志获取(Banner grabbing), 识别运行中的Web服务器软件类型型号(版本).

[root@localhost netcat-0.7.1]# nc 210.14.147.222 80
HEAD / HTTP/1.0

HTTP/1.1 403 Forbidden
Server: nginx/1.6.0
Date: Sun, 27 Sep 2015 13:58:34 GMT
Content-Type: text/html
Content-Length: 168
Connection: close

3、高级HTTP指纹识别

  跟高级的标志获取技术已经获取,可以肯定真正运行的Web服务器。将针对HTTP的标志获取称为Web服务器指纹识别(Fingerprinting),他再也不只是简单地关注部首值,还观察各类服务其中每一个Web服务器中每一个Web服务器的整体表现以及其响应的独特性.例如:IIS服务器对无效的HTTP请求的响应和可能不一样于Apache Web服务器.这是肯定实际运行的Web服务器类型和型号的好方法,也是学习Web服务器之间细微差异的重要之处.还有许多其余方法.

  1.意外的HTTP方法.不一样web服务器对不一样类型的请求作出的不一样反应:(其中已用粗体标出)

Sun One Web Server                      IIS5.x
$ nc  sun.site.com 80                    $ nc iis5.site.com 80
PUT / HTTP/1.0                           PUT / HTTP/1.0
Host:sun.site.com                        Host:iis5.site.com

HTTP/1.1 401 Unauthorized               HTTP/1.1 403 Forbidden
Server: Sun-ONE-Web-Server/6.1        Server:Microsoft-IIS/5.1 IIS 6.0                                  Apache 2.0.x
$ nc iis6.site.com 80                    $nc apache.site.com 80
PUT / HTTP/1.0                           PUT / HTTP/1.0
Host:iist6.site.com                      Host:apache.site.com

HTTP/1.1 411 Length Required        HTTP/1.1 405 Method Not Allowed
Server:Microsoft-IIS/6.0                 Server:Apache/2.0.54
Content-Type:text/html

  2.服务器首部异常

  例如:在Apache 2.x中,Date:部首在最前面,在Server:首部之上,以下:

HTTP/1.1 200 OK
Cache-Control: private, max-age=0, no-cache
Content-Length: 43
Content-Type: image/gif
Date: Sun, 27 Sep 2015 14:20:01 GMT
Pragma: no-cache
Server: apache
X-Content-Type-Options: nosniff

  又例如:在nginx中,Server:部首在最前面,在Date:部首之上.

HTTP/1.1 304 Not Modified
Server: nginx
Date: Sun, 27 Sep 2015 14:20:00 GMT
Connection: keep-alive
Last-Modified: Tue, 06 Nov 2012 02:01:10 GMT
ETag: "50986f66-2d1a"
Expires: Sun, 27 Sep 2015 14:35:01 GMT
Cache-Control: max-age=900

  再例如,在Sun One上,Server:和Date:首部的顺序与IIS 5.1相同,但注意,Content-length中,”length“是小写。Content-type:也同样,而IIS5.1中,这些部首都以大写开头:

HTTP/1.1 200 OK
Server: Sun-One-Web-Server/6.1
Date: Mon,22 Aug 2005 20:33:36 GMT
Content-length:2628
Content-type:text/html
Last-modified:Tue,01 Apr 2003 20:47:57 GMT
Accept-ranges:bytes
Connection:close

  3.Httprint工具

    a.Net-Square的Httprint工具.带有一个可定制的web服务器特征码数据库.

    b.SHODAN,一个搜索引擎,搜索的对象是可以对信息安全产生影响的计算机(路由,服务器等.),互联网的大部分区域都已经为SHODAN索引,能够简单的识别,

      .gov域中的全部IIS服务器.

      瑞士的全部的Apache服务器.

      全部具备特定Web服务器平台已知漏洞的系统的IP地址

4、基础构架中介

  包括,负载均衡器,虚拟服务器配置,代理和Web应用防火墙.

  A.虚拟服务器.在一台机器上运行多个虚拟IP的服务器.

  B.检测负载平衡器,通常不可见,许多攻击者进行评估的时候忽略了它们,但负载平衡器可能极大地改变评估的方式.平衡器用来确保单个服务器的请求不会超载,用来分割流量.

  C.对邻近IP范围进行端口扫描,识别负载平衡器的一种简单方法是,首先肯定公认服务器IP地址,而后编写脚本对周围IP范围发出请求.若是获得多个几乎相同的响应,这可能都是负载平衡器的相同Web服务器.偶尔也会碰到一个或者几个服务器和其余有所不一样。如软件版本过期,或者替代的SSH和FTP,这些异常多是某种服务安全配置错误,能够针对IP地址单独发起攻击.

  D.时间戳分析,检测负载平衡器的一个方法就是分析响应时间戳,由于许多服务器没有同步时间,能够经过在一秒内发出多个请求来肯定是否有多台服务器.

  E.ETag和Last-Modified的差别:经过比较相同请求资源的首部响应中的ETag和Last-Modified值,肯定是否会从多个服务器上获得不一样的文件.

ETag: "20095-2de2-3fdf365353cc0"
ETag: "6ac117-2c5e-3eb9ddfaa3a40"
Last_Modified: Sun, 19 Dec 2004 20:30:25 GMT
Last_Modified: Sun, 19 Dec 2004 20:31:12 GMT

  上面时间戳的差别代表服务器没有当即复制,请求的资源在大约1分钟以后才复制到其余服务器.

  F.负载平衡器Cookie:有些代理服务器和负载平衡器在HTTP会话中添加本身的Cookie,以便它们能够保持更好的状态.

    eg:AA002=1131030950-54332355234/12343234

    通过搜索AA002是一个跟踪Cookie,表示"Avenue A"

  G.枚举SSL异常:看看网站的SSL证书是否存在差别,或者SSL证书是否都支持相同的密码长度.

  H.检查HTML源码:相同的页面的屡次请求可能返回不一样的HTML源代码注释.

  I.检测代理:

    IRACE请求:TRACE请求通知Web服务器回复刚刚收到的请求内容.在HTTP/1.1中做为调试工具.代理服务器将修改请求而且将其发送给Web服务器,代理服务器接着传回收到的请求.这样就能发现代理服务器对请求的修改.eg:

"Via:","x-Forwarded-For:","Proxy-Connection:"
HTTP/1.0 200 OK 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS, TRACE, HEAD, CONNECT 
Access-Control-Allow-Headers: authorization 
Access-Control-Max-Age: 3628800 
Content-Type: text/html 
Date: Fri, 05 Dec 2014 21:35:45 GMT 
Cache-Control: no-cache,must-revalidate 
Expires: Thu, 26 Oct 1995 00:00:00 GMT 
Transfer-Encoding: chunked 
Server: Allegro-Software-RomPager/5.10b1 
Via: 1.1 192.168.1.5

    反向代理是一个前端代理,未来自互联网的入站请求路由到后端服务器,其中两种修改方式:(1)将从新映射URL指向内部服务器上的相应URL。例如,TRACE /index.aspx HTTP/1.1 可能改成TRACE /site1/folder/index.asp HTTP/1.1 (2)反向代理修改Host:首部指向相关的内部服务器来转发请求.

  J.标准链接测试:CONNECT命令主要用于代理服务器代理SSL链接.代理表明客户端创建一个SSL链接,例如:CONNECT https://secure.site.com:443 ,将通知代理服务器创建一个指向secure.site.com 443端口的SSL链接.但这个命可能会被滥用,用于链接网络内部的服务器.

*Request*
CONNECT remote-webserver:80 HTTP/1.0
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
Host: remote-webserver
*Successful Response*
HTTP/1.1 200 Connection established

   可用的一种较好的技术是识别目标的内部IP地址范围,而后对者一范围进行端口扫描.

  K.检测Web应用防火墙:能够看做Web应用入侵防护系统(IPS)

    若是在测试中你老是被踢出来,或者在发送攻击请求时超时,那么极可能在你和应用之间有一个应用防火墙.另外一个迹象是,始终返回相同类型的错误.

    一些常见的Web应用防火墙和一些很是简单的检测方法》

    》Teros:该防火墙将对简单的TRACE请求或者任何无效的HTTP请求响应以下错误:

TRACE / HTTP/1.0
Host: www.site.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36

HTTP/1.0 500
Content-Type:text/html
<html><head><title>Error</title></head><body>
<h2>ERROR:500</h2>
Invalid method code<br>
</body></html>

    检测的Teros的另外一种方法是定位它发出的cookie .like this : st8id=1aeaadf13asdf243sd233435k33c3s.00.d4512ad323342sdf)   大部分状况下cookie的值将具备相似的字符集和长度.

    》F5 Trafficshield:

      发送一个没有数据的PUT方法.将出现以下错误:

PUT / HTTP/1.0
Host:www.site.com
User-Agent:Mozilla/4.0 (compatible;MSIE 5.01;Windows NT 5.0)

HTTP/1.0 400 Bad Request
Content-Type:text/html
<html><head><title>Error</title></head>
<body><h1>HTTP Error 400 </h1>
<h2>400 Bad Request</h2>
The server could not understand your request.<br>Your error ID is :5fa97729</body></html>

    TrafficShield也有一个专用的标准Cookie:ASINFO

    》Netcontinuum:

      该防火墙的Cookie为NCI_SessionId。而且该设备对全部无效请求都响应一个404错误.

    》URLScan:

      这是一个免费的ISAPI过滤器,为控制HTTP请求提供了不少灵活工具。这类产品不提供动态保护,而是依赖冗长的特征代码配置文件或者容许长度文件配置来阻止攻击.

      默认规则下,若是发送一个超过260个字符的路径,URLScan将响应一个404错误.但若是田间如下任何一个部首,URLScan将拒绝该请求:

        Translate:

        IF:

        Lock-Token:

        Transfer-Encoding:

      以上部首将致使URLscan返回404错误.

    》SecureIIS:

      SecureIIS相似于URLScan的加强版本,-它是添加了漂亮GUI和一些极好特性的扩充商业版本.默认状况下返回一个拒绝响应为406错误码。

      其中一条是限制任何部首值长度都为1024字符,因此只要设置超过这一限制的部首,查看请求是否被拒绝就能够了.

返回顶部

相关文章
相关标签/搜索