网络安全知识科普

微信公众号:计算机与网络安全

一、什么是漏洞

二、Web漏洞的分类

1、SQL注入

2、XSS(跨站脚本攻击)

3、文件上传

文件上传

”本身没有问题,有问题的是文件上传之后服务器怎么处理、解释文件。如果服务器的处理逻辑做得不够安全,则会有严重的不安全隐患。

4、文件下载

可以下载网站所有的信息数据,包括源码、网站的配置文件等信息。

5、目录遍历

如果Web设计者设计的Web内容没有恰当的访问控制,允许HTTP遍历,攻击者就可以访问受限的目录,并可以在Web根目录以外执行命令。

6、本地文件包含(Local File Include)

这是PHP脚本的一大特色,程序员们为了开发方便常常会用到包含。比如把一系列功能函数都写进fuction.php中,之后当某个文件需要调用时就直接在文件头中写上一句<?php include("fuction.php");?>,然后调用内部定义的函数。

本地包含漏洞是PHP中一种典型的高危漏洞。由于程序员未对用户可控的变量进行输入检查,导致用户可以控制被包含的文件名,当被成功利用时可以使Web Server将特定文件当成PHP脚本执行,从而导致用户获取一定的服务器权限。

7、远程文件包含

服务器通过PHP的特性(函数)去包含任意文件时,由于要包含的文件来源过滤不严,可以包含一个恶意文件,而我们可以构造这个恶意文件达到渗透系统的目的。几乎所有的 CGI程序都有这样的Bug,只是具体的表现方式不一样罢了。

8、全局变量覆盖

register_globals是PHP中的一个控制选项,可以设置成Off或者On,默认为Off,决定是否将EGPCS(EGPCS是Environment、GET、POST、Cookie、Server的缩写)变量注册为全局变量。

如果打开register_globals,客户端提交的数据中含有GLOBALS变量名,就会覆盖服务器上的$GLOBALS变量。

9、代码执行

由于开发人员编写源码时没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交恶意构造语句,并交由服务器端执行。Web服务器没有过滤类似system()、eval()、exec()等函数是该漏洞攻击成功的最主要原因。

10、信息泄露

由于代码编写不严谨或应用固有的功能,造成网站服务器信息被非法获取,但这只是一个低危漏洞。

11、弱口令

12、跨目录访问

开发人员没有正确地限制能够访问存储系统的网页路径。通常,跨目录攻击的受害者大多是社交网站,或者是全球性的Web服务器。因为在同一个Web服务器上可能为不同的用户或部门分配不同的目录。例如,每个MySpace用户都有一个个人的网络空间。此时,如果使用Cookie或者DOM存储,就可能产生跨目录攻击。

13、缓冲区溢出

14、Cookies欺骗

Cookies 能够让网站服务器把少量数据储存到客户端的硬盘,或从客户端的硬盘读取数据。当你浏览某网站时,由Web服务器置于你硬盘上一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。当你再次来到该网站时,网站通过读取Cookies得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就可以直接登录等。

从本质上讲,它可以看作是你的身份证。但Cookies不能作为代码执行,也不会传送病毒,为你所专有,且只能由提供它的服务器来读取。保存的信息片断以“名/值对”(Name-Value Pairs)的形式储存,一个“名/值对”仅仅是一条命名的数据。Cookies欺骗就是修改其中保存的信息,从而实现某些特殊的目的。

15、反序列化

如果服务端程序没有对用户可控的序列化代码进行校验,而是直接进行反序列化使用,并且在程序中运行一些比较危险的逻辑(如登录验证等),那么就会触发一些意想不到的漏洞。比如经典的有Weblogic反序列化和Joomla反序列化漏洞。

16、CSRF(跨站请求伪造)

攻击者通过用户的浏览器注入额外的网络请求,破坏一个网站会话的完整性。浏览器的安全策略是允许当前页面发送到任何地址,因此也就意味着当用户在浏览其无法控制的资源时,攻击者可以控制页面的内容来控制浏览器,发送其精心构造的请求。

系统对用户输入的数据没有进行严格过滤就运用,并且使用bash或cmd执行。

三、漏洞挖掘常用的方法

1、SQL注入

对于注入漏洞,通常我们在 URL后加单引号即可判断是否有注入漏洞。如http://www.isafe.cc/list.asp?id=1后加单引号,即http://www.isafe.cc/list.asp?id=1’,这时服务器会把1’代入数据库查询,然后页面报错,而对于不同的数据库错误信息也不一样。

对于不报错的页面,可以使用and 1=1和and 1=2,并根据页面返回内容判断是否有注入。如果and 1=1和and 1=2返回的页面内容不同,则可以断定存在注入。比如,第一次提交的URL http://www.isafe.cc/list.asp?id=1 and 1=1页面有返回内容,而第二次提交的URL http://www.isafe.cc/list.asp?id=1 and 1=2页面没有完整的内容,则可以断定存在SQL注入。

SQL注入一般有基于报错的注入、基于布尔值的注入和基于时间的注入。

2、XSS(跨站漏洞)

3、文件上传

文件上传漏洞一般视情况而定,有些是中间件的漏洞如 apache、nginx、iis等。对于apache上传1.php.bak这样的文件是可以作为PHP文件执行的(某些版本),对于nginx上传1.jpg文件,访问http://www.isafe.cc/upload/1.jpg/1.php就可以执行PHP代码。对于iis 6.0上传1.asp、1.jpg这样的文件可以被作为ASP来执行,建立1.asp文件夹,在1.asp文件下的任意后缀文件都可以作为ASP来执行。有些是代码过滤不严谨造成的任意文件上传,有些代码对文件上传根本不过滤,对应过滤的文件也可以通过各种方法绕过上传。文件上传视情况而定,有各种各样可利用的方法。

4、文件下载

下载系统上的任意文件,如数据库配置文件、密码文件Shadow等,Web层面会提供下载附件或软件的功能,一般形式如http://www.isafe.cc/download.php?filename= /files/document.doc,Web后端会根据filename参数在指定的目录中读取文件的内容返回给浏览器,如果修改filename为http://www.isafe.cc/download.php?filename= ../../../.. /../../../etc/passwd这样的形式,则可以跨越指定的目录访问系统的任意文件。

5、代码执行

远程代码执行多见于PHP、Java等脚本语言中,PHP中的Eval、System、Assert、Popen等函数如果对外界传入的参数直接使用,则会造成远程代码执行,我们在找漏洞的时候只要定位到相关函数,观察相关函数的参数来源即可。

(来源:计算机与网络安全)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181205B152JL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券