大话人生

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  299 随笔 :: 0 文章 :: 73 评论 :: 0 Trackbacks
You are here: Home / Tools / 第三方应用开发安全规范

第三方应用开发安全规范

十一月 26, 2011 by · Leave a Comment 

特别提示:
1. 安全漏洞测试checklist中出现的安全漏洞相关的术语解释,检测方法以及修复方案,将在下面的章节中进行详细描述。
2. 第三方应用测试人员必须按照下列checklist进行安全漏洞检查。
3. 第三方应用提交上线申请后,腾讯后台将对应用进行安全扫描,如果发现漏洞,将发邮件以及告警短信通知第三方进行修改,直至没有安全漏洞后才能上线。因此遵守该checklist才能让您的应用尽快上线。
此外,如果上线内测区以后,仍然多次被扫描出安全漏洞,腾讯将根据中关于安全的有关规定,对应用进行相应的处理。

目录

[隐藏]

  • 1 1 安全漏洞测试checklist
  • 2 2 安全漏洞危害等级评定标准
  • 3 3 系统应用程序漏洞定义,检测方法及修复方案
    • 3.1 3.1 Apache
      • 3.1.1 3.1.1 UserDir漏洞
      • 3.1.2 3.1.2 目录浏览漏洞
      • 3.1.3 3.1.3 默认页面泄漏漏洞
    • 3.2 3.2 QHTTP或者其他Web Server
      • 3.2.1 3.2.1 404页面XSS漏洞
      • 3.2.2 3.2.2 任意文件读取漏洞
    • 3.3 3.3 Tomcat
      • 3.3.1 3.3.1 Tomcat默认管理后台漏洞
      • 3.3.2 3.3.2 Tomcat默认页面泄漏漏洞
    • 3.4 3.4 Nginx
      • 3.4.1 3.4.1 远程溢出漏洞
      • 3.4.2 3.4.2 目录浏览漏洞
    • 3.5 3.5 MySQL
      • 3.5.1 3.5.1 空口令/弱口令漏洞
    • 3.6 3.6 FTP
      • 3.6.1 3.6.1 FTP匿名登录漏洞
    • 3.7 3.7 Oracle
      • 3.7.1 3.7.1 空口令漏洞
    • 3.8 3.8 PHPMyAdmin
      • 3.8.1 3.8.1 空口令漏洞
    • 3.9 3.9 Linux
      • 3.9.1 3.9.1 默认口令漏洞
      • 3.9.2 3.9.2 Samba任意用户访问漏洞
      • 3.9.3 3.9.3 高危端口/服务开放漏洞
  • 4 4 Web应用程序漏洞
    • 4.1 4.1 注入漏洞
      • 4.1.1 4.1.1 SQL注入漏洞
      • 4.1.2 4.1.2 XSS漏洞
      • 4.1.3 4.1.3 命令注入漏洞
      • 4.1.4 4.1.4 HTTP响应头注入漏洞
      • 4.1.5 4.1.5 跳转漏洞
      • 4.1.6 4.1.6 XML注入漏洞
    • 4.2 4.2 信息泄漏漏洞
      • 4.2.1 4.2.1 HPInfo()信息泄漏漏洞
      • 4.2.2 4.2.2 测试页面泄漏在外网漏洞
      • 4.2.3 4.2.3 备份文件泄漏在外网漏洞
      • 4.2.4 4.2.4 版本管理工具文件信息泄漏漏洞
      • 4.2.5 4.2.5 HTTP认证泄漏漏洞
      • 4.2.6 4.2.6 管理后台泄漏漏洞
      • 4.2.7 4.2.7 泄漏员工电子邮箱漏洞以及分机号码
      • 4.2.8 4.2.7 错误详情泄漏漏洞
    • 4.3 4.3 请求伪造漏洞
      • 4.3.1 4.3.1 CSRF漏洞
      • 4.3.2 4.3.2 JSON-hijackin漏洞
    • 4.4 4.4 权限控制漏洞
      • 4.4.1 4.4.1 文件上传漏洞
      • 4.4.2 4.4.2 crossdomain.xml配置不当漏洞
      • 4.4.3 4.4.3 flash标签配置不当漏洞
      • 4.4.4 4.4.4 embed标签配置不当漏洞
      • 4.4.5 4.4.5 并发漏洞
      • 4.4.6 4.4.6 Cookie安全性漏洞
      • 4.4.7 4.4.7 Frame-proxy攻击漏洞

 

1 安全漏洞测试checklist

NO 检查点
1 严禁在自己系统处理用户Login,必须使用腾讯公司统一提供的登录接口或者参数openid/openkey登录。
获取到openid/openkey后必须进行校验才能使用,校验规则请见这里
2 严禁增/删/改防火墙iptables,私自开通高危端口。
3 检查Flash跨域策略文件crossdomain.xml是否合法。
4 检查是否有CSRF漏洞。
5 信息泄露漏洞安全性检查(例如test.cgi、phpinfo.php、info.pho、.svn/entries、HTTP认证泄漏漏洞、管理后台泄漏漏洞、内网信息泄漏漏洞、错误详情信息泄漏等)。
6 检查是否有XSS漏洞(不合法的参数不能在页面原样返回,特别是openid/openkey)
7 检查是否泄漏后台默认文件漏洞
8 检查Flash跨域策略文件的安全性。避免Flash注入javascript或者actionscript脚本在浏览器或者flash中执行跨站攻击。
9 Cookie安全性检查。
10 检查是否有跳转漏洞。
11 检查是否有Header注入漏洞。
12 检查是否有源代码泄漏漏洞。
13 检查是否有Frame-proxy攻击漏洞。
14 检查是否有SQL注入攻击漏洞。
15 检查是否有并发漏洞。
16 敏感信息检查。应用需要对可能造成腾讯公司公关、媒体危机的敏感内容,以及用户生成内容(UGC,由用户发表的言论)进行检查和过滤。
敏感词过滤必须采用腾讯公司提供的敏感词过滤接口/security/word filter
17 检查通过WEB页面发起的临时会话窗口的所有显示内容。
18 目录浏览漏洞安全性检查
19 检查是否泄漏员工电子邮箱漏洞以及分机号码。

2 安全漏洞危害等级评定标准

安全漏洞危害等级评分方法:
1. 对“潜在危险”“可重现性”“可利用性”“影响用户”“可发现性”这5项,根据高、中、低标准进行打分(分别是3,2,1分);
2. 然后5项得分累加即得总分。 3. 如果总分是 5-7 分,则是低风险; 8-11分,则是中等风险;12-15分,则是高风险。

评分标准如下:


高(3分) 中(2分) 低(1分)
潜在危险 黑客可获取完全验证权限,执行管理员操作,非法上传文件 泄漏了敏感信息 泄漏其它信息
可重现性 攻击者可以以随意再次攻击 攻击者可以重复攻击,但是有时间限制 攻击者很难重复攻击过程
可利用性 初学者在短期内可以掌握攻击方法 熟练的攻击者才能完成攻击 漏洞利用条件非常苛刻
影响用户 所有用户,关键用户 部分用户 极少数用户,匿名用户
可发现性 漏洞很明显,攻击条件很容易获取 有私有区域,部分人可以看到,需要深入挖掘才能发现漏洞 发现漏洞极其困难

 

3 系统应用程序漏洞定义,检测方法及修复方案

系统应用程序指运行在操作系统之上的应用程序,包括操作系统本身及APP(例如Apache、Nginx、MySQL)。
对于部署在腾讯服务器上的第三方APP,腾讯后台将对机器进行安全漏洞扫描,可检测出包括Apache、Nginx、MySQL等的常见安全漏洞。

3.1 Apache

3.1.1 UserDir漏洞

名称:Apache UserDir 漏洞

描述:早期版本的Apache默认会开启UserDir,这个无关功能会泄漏主机的账户名,也可能由于配置不当导致敏感文件被下载。

检测方法:在浏览器里输入http://ip/~root ,若目录存在(即HTTP状态码返回403),则说明UserDir开启。
如下图所示:

修复方案:
1. 在Apache配置文件中取消UserDir,可能遇到的两种情况:
(1)注释掉以下三行,然后重启Apache:

(2)如果配置文件中没有上图中所示的三行,则添加(或修改)一行配置:UserDir disable,然后重启Apache
2. 升级到高版本的Apache(2.1.4及以上版本默认不开启UserDir)

3.1.2 目录浏览漏洞

名称:Apache 目录浏览漏洞

描述:Apache默认配置时允许目录浏览。如果目录下没有索引文件,则会出现目录浏览,导致文件信息泄漏。

检测方法:直接访问目录,如果能看到目录下的文件信息,则说明存在目录浏览漏洞。
修复方案:
在Apache配置文件中,将目录配置中的“Indexes”删除,或者改为“-Indexes”,如下图所示:

3.1.3 默认页面泄漏漏洞

名称:Apache 默认页面泄漏漏洞

描述:Apache在安装后存在默认目录/icons/、/manual/

检测方法:在浏览器里输入http://IP/icons/,http://IP/manual/,如果能访问,则说明存在默认页面泄漏漏洞。
如下图所示:

修复方案:
1. 对于Apache2,注释掉Apache配置文件中的目录配置中的以下两行:

Alias /icons/ “/usr/share/apache2/icons/”
AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|ru))?(/.*)?$ “/usr/share/apache2/manual$1″

2. 或者删除配置文件中的icons、manual两个目录。

 

3.2 QHTTP或者其他Web Server

3.2.1 404页面XSS漏洞

名称:QHTTP 404 页面XSS漏洞

描述:低版本的QHTTP在返回404页面时,未对URL进行编码,导致出现XSS漏洞。

检测方法:在浏览器里输入http://ip/xxx.xxx?a=<script>alert(0)</script> ,若出现如下弹框,则说明存在XSS漏洞。

修复方案:升级QHTTP到2.1及以上版本。升级版本可能带来性能问题,开发人员需要进行相关的性能测试。

3.2.2 任意文件读取漏洞

名称:任意文件读取漏洞

描述:低版本的Web Server在处理请求时存在漏洞,会泄漏服务器上任意文件内容。

检测方法:在浏览器里输入http://ip/../../../../../etc/passwd,如果能访问,则说明存在任意文件读取漏洞。
修复方案:如果使用QHTTP,请升级QHTTP到2.1及以上版本。升级版本可能带来性能问题,开发人员需要进行相关的性能测试。

3.3 Tomcat

3.3.1 Tomcat默认管理后台漏洞

名称:Tomcat默认管理后台漏洞

描述:Tomcat在安装后默认能访问到后台管理登录页面。

检测方法:在浏览器里输入http://ip/manager/html ,若出现如下弹框,则说明存在Tomcat默认管理后台漏洞。

修复方案:删除tomcat安装目录下webapps下的manager目录。

3.3.2 Tomcat默认页面泄漏漏洞

名称:Tomcat默认页面泄漏漏洞

描述:Tomcat在安装后存在默认页面。

检测方法:直接访问Tomcat的默认页面,若出现如下页面,则说明存在默认页面泄漏漏洞。

修复方案:删除这些与运营环境无关的目录。

3.4 Nginx

3.4.1 远程溢出漏洞

名称:Nginx远程溢出漏洞

描述:低版本的nginx存在远程溢出漏洞(详见 http://www.kb.cert.org/vuls/id/180065 的说明)。

检测方法:0.8.15, 0.7.62, 0.6.39, 0.5.38以下版本均存在此漏洞。
修复方案:升级nginx到0.8.15+/0.7.62+/0.6.39+/0.5.38+以上,或者安装官方补丁( http://nginx.org/download/patch.180065.txt )。
注:安装补丁后,Nginx的版本号不会变,因此腾讯安全扫描系统可能仍然会发安全漏洞告警。

3.4.2 目录浏览漏洞

名称:Nginx目录浏览漏洞

描述:如果开启nginx的目录浏览,会泄漏目录下的文件信息。

检测方法:直接访问目录,如果能看到目录下的文件信息,则说明存在目录浏览漏洞。

修复方案:不要启用nginx的目录浏览。

 

3.5 MySQL

3.5.1 空口令/弱口令漏洞

名称:MySQL空口令/弱口令漏洞

描述:MySQL服务器未设置root帐号口令或者某个帐号使用了简单的口令,导致可以远程不使用口令连接或者很容易猜测到帐号口令。

检测方法:使用MySQL客户端以空口令登录或者帐号/口令形式进行猜解,如果能够登录,则表示存在MySQL空口令/弱口令漏洞。如下图所示:

修复方案:在MySQL中为帐号加一个安全的口令。一个安全的口令应该包含以下四项中的三项:
(1)大写字母
(2)小写字母
(3)特殊字符
(4)数字

 

3.6 FTP

3.6.1 FTP匿名登录漏洞

名称:FTP匿名登录漏洞

描述:FTP Server允许匿名登录(使用ftp或者anonymous用户,密码为空),可能会泄漏一些敏感信息。

检测方法:FTP登录时使用anonymous/ftp帐户,如果登录成功,则表示存在FTP匿名登录漏洞。

修复方案:配置FTP Server为禁止匿名登录。以vsftp2.2.0为例,需按照如下说明修改配置文件:
(1)将anonymous_enable值改为为NO(如果没有这一行,加上anonymous_enable=NO即可)。
(2)添加local_enable=YES(开启本地用户访问)。

 

3.7 Oracle

3.7.1 空口令漏洞

名称:Oracle空口令漏洞

描述:Oracle服务器未设置管理帐号口令,导致可以远程不使用口令控制Oracle Server。

检测方法:使用Oracle客户端以空口令登录,如果能够登录,则表示存在Oracle空口令漏洞。

修复方案:在MySQL中为帐号加一个安全的口令。一个安全的口令应该包含以下四项中的三项:
(1)大写字母
(2)小写字母
(3)特殊字符
(4)数字

 

3.8 PHPMyAdmin

3.8.1 空口令漏洞

名称:PHPMyAdmin空口令漏洞

描述:PHPMyAdmin没有设置口令,任何人都可以控制数据库。

检测方法:访问http://IP/PHPMyAdmin,如果能够访问,则表示存在PHPMyAdmin空口令漏洞。

修复方案:在PHPMyAdmin中为帐号加一个安全的口令。一个安全的口令应该包含以下四项中的三项:
(1)大写字母
(2)小写字母
(3)特殊字符
(4)数字

 

3.9 Linux

3.9.1 默认口令漏洞

名称:默认口令漏洞

描述:第三方应用申请机器时,腾讯会为该应用分配一个跳板机帐号,以及跳板机的初始固定密码。 应用拿到跳板机帐号和密码后,需要修改这个初始固定密码,否则可能导致帐号被他人利用。

检测方法:详见跳板机登录说明中关于登录的步骤。

修复方案:修改跳板机固定密码为一个安全的口令。一个安全的口令应该包含以下四项中的三项:
(1)大写字母
(2)小写字母
(3)特殊字符
(4)数字

3.9.2 Samba任意用户访问漏洞

名称:Samba任意用户访问漏洞

描述:在配置Samba Server的时候,未进行用户身份进行控制,导致任何人可以访问。

检测方法:以SMB协议连接服务器,如果可以访问,则表示存在Samba任意用户访问漏洞。如下图所示:

修复方案:为Samba Server添加一个安全的口令。一个安全的口令应该包含以下四项中的三项:
(1)大写字母
(2)小写字母
(3)特殊字符
(4)数字

3.9.3 高危端口/服务开放漏洞

名称:高危端口/服务开放漏洞

描述:
1. 高危端口:
目前默认给应用开通的端口为80,443,843,8001 – 8010,其中8001~8010同时支持TCP和UDP协议。
除这些默认开通的端口以外的其他端口可能带来安全隐患,严禁对防火墙iptables进行增删改,私自开通高危端口。 如果需要开通,请通过企业QQ联系运维支持,提出申请。

2. 高危服务:
目前以下服务属于高危服务,禁止对外开放,不能申请
SSH,Telnet,X-windows,Rlogin,ms-rpc,SNMP, FTP,TFTP,RPC,MS-RPC,NetBios,MS-SMB,MS-SQL,MYSQL, memcache,proxy类服务(http-proxy, ftp-proxy,ccproxy-http), rsync,nfs 。

修复方案:禁止对外使用高危服务。高危端口使用前需申请。

4 Web应用程序漏洞

Web应用程序指以各种语言(PHP、JSP、C++等)开发的CGI/Web Service。

4.1 注入漏洞

4.1.1 SQL注入漏洞

名称: SQL注入漏洞(SQL Injection)

描述:Web程序代码中对于用户提交的参数未做过滤就直接放到SQL语句中执行,导致参数中的特殊字符打破了SQL语句原有逻辑,黑客可以利用该漏洞执行任意SQL语句。

检测方法:通过修改参数来判断是否存在漏洞。

修复方案:
1. 针对ASP的防XSS库,Microsoft有提供统一的方法,具体可以参见如下链接: http://www.cnblogs.com/hcmfys/archive/2008/07/11/1240809.html
2. 针对其它语言如下细分:
在代码级对带入SQL语句中的外部参数进行转义或过滤:
(1)对于整数,判断变量是否符合[0-9]的值;其他限定值,也可以进行合法性校验
(2)对于字符串,对SQL语句特殊字符进行转义(单引号转成两个单引号,双引号转成两个双引号)。关于这点,PHP有类似的转义函数mysql_escape_string和mysql_real_escape_string。安全中心的CGI安全API( http://soc.itil.com/sec_api/index.html )也实现了该功能。
建议:
(1)使用腾讯CMEM存储方案;
(2)对与数据库进行交互的用户请求数据,要先做过滤,防止SQL注入。

4.1.2 XSS漏洞

名称:XSS注入漏洞(Cross-site Scripting)

描述:Web程序代码中把用户提交的参数未做过滤就直接输出到页面,参数中的特殊字符打破了HTML页面的原有逻辑,黑客可以利用该漏洞执行恶意HTML/JS代码、构造蠕虫传播、篡改页面实施钓鱼攻击等。

检测方法:通过修改参数来判断是否存在漏洞。
比如用户输入内容:’<u>a</u>”的时候,合法的显示是: ’<u>a</u>” ,合法的显示的源码是:

而存在漏洞的页面显示却是:’a

源码是:
修复方案:
1. 开发者应该严格按照概念和术语中给出的openid和openkey校验规则判断openid和openkey是否合法,且判断其它参数的合法性,不合法不返回任何内容。

2. 严格限制URL参数输入值的格式,不能包含不必要的特殊字符( %0d、%0a、%0D 、%0A 等)。

3. 针对ASP的防XSS库,Microsoft有提供统一的库,具体可以参见如下链接
(1)微软官网:http://msdn.microsoft.com/en-us/library/aa973813.aspx
(2)翻译总结后的:http://www.zu14.cn/2009/05/05/microsoft-anti-xss-library/

4. 具体的js方法可以参见:、http://soc.itil.com/sec_api/down_page.php?file=filter_js.zip
(1)对于用户输入的参数值展现在HTML正文中或者属性值中的情况,例如:
展现在html正文中:<a href=’http://www.contoso.com’>Un-trusted input</a>
展现在属性值中:<input name=”searchword” value=”Un-trusted input“>
此时需要将红色的不可信内容中做如下的转码(即将< > ‘ “ ` 转成html实体):
(2)对于用户输入落在<script>的内容中的情况,例如:

<script type=”text/javascript”>

var mymsg=”Un-trusted input”;
var uin=Un-trusted input;

</script>

需要将红色的不可信内容中做如下的转码: [a-zA-Z0-9.-_,]以及ASC值大于0x80之外的所有字符转化为\x**这种形式,例如:

 

公司站点的修复方案:参见安全中心安全API库 既需要使用正常HTML标签又要禁止危险HTML标签的富文本要使用专有的富文本filter过滤 安全中心的CGI安全API( http://soc.itil.com/sec_api/index.html )可以统一实现XSS防御 另外,在一些不需要HTML解释的页面(如纯JSON数据返回页面),可以通过设置HTTP响应中的Content-Type为application/json来实现

4.1.3 命令注入漏洞

名称:命令注入漏洞(Command Injection)

描述:Web程序代码中把用户提交的参数未做过滤就直接使用shell执行,攻击者可以执行任意系统命令。

检测方法:通过修改参数来判断是否存在漏洞。

修复方案:在代码级调用shell时,对命令行中的特殊字符进行转义(|、&、;等),防止执行其他非法命令。
PHP中可使用escapeshellarg、escapeshellcmd来转义。

 

4.1.4 HTTP响应头注入漏洞

名称:HTTP响应头注入漏洞(HTTP-Response-Splitting,HTTP_header_injection)

描述:Web程序代码中把用户提交的参数未做过滤就直接输出到HTTP响应头中,攻击者可以利用该漏洞来注入HTTP响应头,可以造成xss攻击、欺骗用户下载恶意可执行文件等攻击。
另外根据国际安全组织司acunetix统计,以下apache存在header injection漏洞:1.3.34/2.0.57/2.2.1。

检测方法:通过修改参数来判断是否存在漏洞。
比如国内某著名网站曾经出现过header注入漏洞,如下url:

http://www.YYYYYYYYY.com/YYYYWeb/jsp/website/agentInvoke.jsp?agentid=%0D%0AX-foo:%20bar

抓包时发现:

修复方案:
1. 在设置HTTP响应头的代码中,过滤回车换行(%0d%0a、%0D%0A)字符。
2. 不采用有漏洞版本的apache服务器,同时对参数做合法性校验以及长度限制,谨慎的根据用户所传入参数做http返回包的header设置。

 

4.1.5 跳转漏洞

名称:跳转漏洞

描述:Web程序直接跳转到参数中的URL,或页面引入任意的第三方URL。

检测方法:修改参数中的合法URL为非法URL。例如测试一下如下URL:

http://***.qq.com/cgi-bin/demo_es.cgi?backurl=http://www.***.com,看是否会跳转到注入的http://www.***.com站点。

修复方案:在控制页面转向的地方校验传入的URL是否为可信域名。
例如以下是一段校验是否是腾讯域名的JS函数:

function VaildURL(sUrl)
{
return (/^(https?:\/\/)?[\w\-.]+\.(qq|paipai|soso|taotao)\.com($|\/|\\)/i).test(sUrl)||(/^[\w][\w\/\.\-_%]+$/i).test(sUrl)||(/^[\/\\][^\/\\]/i).test(sUrl) ? true : false;
}

4.1.6 XML注入漏洞

名称:XML注入漏洞

描述:Web程序代码中把用户提交的参数未做过滤就直接输出到XML中。

检测方法:通过修改参数来判断是否存在漏洞。

修复方案:在代码级输出时对XML特殊字符(“<”、“>”、“>]]”)进行转义。

4.2 信息泄漏漏洞

4.2.1 HPInfo()信息泄漏漏洞

名称:PHPInfo()信息泄漏漏洞

描述:Web站点的某些测试页面可能会使用到PHP的phpinfo()函数,会输出服务器的关键信息。如下图所示:

检测方法:访问http://[ip]/test.php 以及http://[ip]/phpinfo.php看是否成功。

修复方案:删除该PHP文件。

 

4.2.2 测试页面泄漏在外网漏洞

名称:测试页面泄漏在外网漏洞

描述:一些测试页面泄漏到外网,导致外界误传公司被黑客入侵。如下图所示:

1. http://parts.baby.qzoneapp.com/

 

2. http://parts.baby.qzoneapp.com/test.php

3. http://other.baby.qzoneapp.com

检测方法:检测页面内容,看是否是测试页面。

修复方案:删除测试页面,例如test.cgi,phpinfo.php,info.pho, .svn/entries等。

 

4.2.3 备份文件泄漏在外网漏洞

名称:备份文件泄漏在外网漏洞

描述:编辑器或者人员在编辑文件时,产生的临时文件,如vim自动保存为.swp后缀、UltrlEditor自动保存.bak后缀等,这些文件会泄漏源代码或者敏感信息。如下图所示:

泄漏源代码可以让黑客完全了解后台开发语言、架构、配置信息等。下图是国内某著名网站曾经出现过的源代码泄漏漏洞:

检测方法:在cgi文件后面添加.bak、.swp、.old、~等后缀探测。

修复方案:删除备份文件。

 

4.2.4 版本管理工具文件信息泄漏漏洞

名称:版本管理工具文件信息泄漏漏洞

描述:版本管理工具SVN和CVS会在所有目录添加特殊文件,如果这些文件同步到Web目录后就会泄漏路径等信息。如下图所示:

检测方法:访问http://[ip]/CVS/Entriesp 以及http://[ip]/.svn/entriesp看是否成功。

修复方案:删除SVN各目录下的.svn目录;删除CVS的CVS目录。

 

4.2.5 HTTP认证泄漏漏洞

名称:HTTP认证泄漏漏洞

描述:Web目录开启了HTTP Basic认证,但未做IP限制,导致攻击者可以暴力破解帐号密码。如下图所示:

修复方案:限制IP访问该目录。

 

4.2.6 管理后台泄漏漏洞

名称:管理后台泄漏漏洞

描述:管理后台的帐号和密码设计过于简单,容易被猜测到,导致攻击者可以暴力破解帐号密码。如下图所示:

修复方案:
1. 将管理后台的服务绑定到内网ip上,禁止开放在外网。
2. 如果该管理后台必须提供给外网访问,则未登录页面不要显示过多内容,防止敏感信息泄漏,登录帐号需经过认证,且密码设置规则尽量复杂,增加验证码,以防止暴力破解。

4.2.7 泄漏员工电子邮箱漏洞以及分机号码

名称:泄漏员工电子邮箱漏洞以及分机号码

描述:泄漏员工内部电子邮箱以及分机号码相当于泄漏了员工内部ID,可以为黑客进行社会工程学攻击提供有价值的材料,同时也为黑客暴力破解后台服务提供重要的帐号信息。

修复方案:删除页面注释等地方中出现腾讯员工电子邮箱以及分机号码的地方。

 

4.2.7 错误详情泄漏漏洞

名称:错误详情泄漏漏洞

描述:页面含有CGI处理错误的代码级别的详细信息,例如sql语句执行错误原因,php的错误行数等。

检测方法:修改参数为非法参数,看页面返回的错误信息是否泄漏了过于详细的代码级别的信息。

修复方案:将错误信息对用户透明化,在CGI处理错误后可以返回友好的提示语以及返回码。但是不可以提示用户出错的代码级别的详细原因。

4.3 请求伪造漏洞

4.3.1 CSRF漏洞

名称:CSRF漏洞(Cross Site Request Forgery)

描述:用户以当前身份浏览到flash或者第三方网站时,JS/flash可以迫使用户浏览器向任意CGI发起请求,此请求包含用户身份标识,CGI如无限制则会以用户身份进行操作。

检测方法:
1. 在实际的测试过程中,测试人员需要判断操作是否为保存类操作,是否强制为POST方式传输参数。
判断方式是通过抓包工具把所有的POST参数都改成GET方式提交。
需要注意的是,这种方法只可防止图片跳转式CSRF漏洞,如果页面上有XSS漏洞话,CSRF无法防御。
2. 最简单的办法就是查阅该cgi是否带有无法预知的参数,例如随机字符串等。

修复方案:可使用以下任意办法防御CSRF攻击:
1. 在表单中添加form token(隐藏域中的随机字符串);
2. 请求referrer验证;
3. 关键请求使用验证码。

4.3.2 JSON-hijackin漏洞

名称:JSON-hijackin漏洞

描述:CGI以JSON形式输出数据,黑客控制的第三方站点以CSRF手段强迫用户浏览器请求CGI得到JSON数据,黑客可以获取敏感信息.

检测方法:
1. 检查返回的json数据是否包含敏感信息,例如用户ID,session key,邮箱地址,手机号码,好友关系链等。
2. 确认提交是否带有无法预知的参数,例如随机字符串等。
修复方案:可使用以下任意办法防御CSRF攻击:
1. 在请求中添加form token(隐藏域中的随机字符串);
2. 请求referrer验证。

4.4 权限控制漏洞

4.4.1 文件上传漏洞

名称:文件上传漏洞

描述:接受文件上传的Web程序未对文件类型和格式做合法性校验,导致攻击者可以上传Webshell(.php、.jsp等)或者非期望格式的文件(.jpg后缀的HTML文件)

修复方案:文件上传的CGI做到:
1. 上传文件类型和格式校验;
2. 上传文件以二进制形式下载,不提供直接访问。

4.4.2 crossdomain.xml配置不当漏洞

名称:crossdomain.xml配置不当漏洞

描述:网站根目录下的文件crossdomain.xml指明了远程flash是否可以加载当前网站的资源(图片、网页内容、flash等)。
如果配置不当,可能带来CSRF攻击。如下图所示:

检测方法:
访问http://[domain]/crossdomain.xml
修复方案:对于不需要外部加载资源的网站,crossdomain.xml中更改allow-access-from的domain属性为域名白名单。
修复大致样本参考如下(备注:示例中的app10000.qzoneapp.com请修改为自己指定的站点):

<?xml version=”1.0″?>
<cross-domain-policy>
<allow-access-from secure=”false” domain=”*.qq.com”/>
<allow-access-from secure=”false” domain=”*.soso.com”/>
<allow-access-from secure=”false” domain=”*.paipai.com”/>
<allow-access-from secure=”false” domain=”*.gtimg.cn”/>
<allow-access-from secure=”false” domain=”*.pengyou.com”/>
<allow-access-from secure=”false” domain=”app18288.qzoneapp.com”/>
<allow-access-from secure=”false” domain=”imgcache.qzoneapp.com”/>
</cross-domain-policy>

4.4.3 flash标签配置不当漏洞

名称:flash标签配置不当漏洞

描述:网页在引入flash的时候,会通过object/embed标签,在设置的时候,如果一些属性配置不当,会带来安全问题:
1. allowScriptAccess:是否允许flash访问浏览器脚本。如果不对不信任的flash限制,默认会允许调用浏览器脚本,产生XSS漏洞。
always(默认值),总是允许;sameDomain,同域允许;never,不允许
2. allowNetworking:是否允许flash访问ActionScript中的网络API。如果不对不信任的flash限制,会带来flash弹窗、CSRF等问题。
all,允许所有功能,会带来flash弹窗危害;internal,可以向外发送请求/加载网页;none,无法进行任何网络相关动作(业务正常功能可能无法使用)

修复方案:对于不信任flash源,allowScriptAccess设置为never,allowNetworking设置为none(业务需要可以放宽为internal)。

4.4.4 embed标签配置不当漏洞

名称:embed标签配置不当漏洞

描述:网页会通过embed标签引入媒体文件(如rm、avi等视频音频),这些媒体文件中如有脚本指令(弹窗/跳转),如果没有限制就会出现安全问题。

检测方法:检查embed标签中是否有invokes标签。

修复方案:添加属性invokes值为-1。

4.4.5 并发漏洞

名称:并发漏洞

描述:攻击者通过并发http/tcp请求而达到次获奖、多次收获、多次获赠等非正常逻辑所能触发的效果。
下面以简化的例子说明在交易的Web应用程序中潜在的并行问题,并涉及联合储蓄帐户中的两个用户(线程)都登录到同一帐户试图转账的情况:
帐户A有100存款,帐户B有100存款。用户1和用户2都希望从帐户A转10分到帐户B.
如果是正确的交易的结果应该是:帐户A 80分,帐户B 120分。
然而由于并发性的问题,可以得到下面的结果:
用户1检查帐户A ( = 100 分)
用户2检查帐户A ( = 100 分)
用户2需要从帐户A 拿取10 分( = 90 分) ,并把它放在帐户B ( = 110 分)
用户1需要从帐户A 拿取10分(仍然认为含有100 个分)( = 90 分) ,并把它放到B( = 120 分)
结果:帐户A 90 分,帐户B 120 分。

检测方法:发送并发http/tcp请求,查看并发前后CGI 功能是否正常。例如:并发前先统计好数据,并发后再统计数据,检查2次数据是否合理。

修复方案:对数据库操作加锁。

4.4.6 Cookie安全性漏洞

名称:Cookie安全性漏洞

描述:cookie的属性设置不当可能会造成其他SNS游戏的运行出错等安全隐患。

检测方法:抓取数据包查看cookie的domain属性设定是否合理。

修复方案:对cookie字段的domain属性做严格的设定,openkey以及openid的domain只能设置到子域,禁止设置到父域qzoneapp.com。如下图所示:

4.4.7 Frame-proxy攻击漏洞

名称:Frame-proxy攻击漏洞

描述:在一些老版本浏览器(比如IE6)下,Frame-proxy攻击可以把非常驻XSS漏洞以常驻型的方式做攻击。

修复方案:qzoneapp.com域名下的应用不能再通过iframe嵌入qq.com域名下页面。

原理如下图所示,假设域名xiaoyou.qq.com底下没有任何xss漏洞,然后xiaoyou.qq.com通过iframe嵌入了一个xxx.qzoneapp.com域名。

假设qq.com的某个子域vul.qq.com存在一个非常驻的xss漏洞,那么当xxx.qzoneapp.com通过iframe嵌入vul.qq.com时,访问xiaoyou.qq.com域名的用户将受到常驻型XSS漏洞的攻击。
转载自:腾讯开发平台资料库 http://opensns.qq.com/
posted on 2013-12-12 10:50 大话人生 阅读(483) 评论(0)  编辑 收藏 引用 所属分类: 安全性测试
只有注册用户登录后才能发表评论。