您的位置:首页 > 编程语言 > ASP

OWASP TOP 10

2017-05-14 10:38 260 查看
漏洞描述
风险描述
漏洞等级
修改建议
SQL注入:

没有对参数进行SQL过滤,且操作数据语句是拼接方式进行。

攻击者可以通过构造特殊URL的手段,利用SQL注入漏洞从数据库中获取敏感数据、修改数据库数据(插入/更新/删除) 、执行数据库管理操作(如关闭数据库管理系统),从而能导致数据丢失或数据破坏、缺乏可审计性或是拒绝服务。注入漏洞有时甚至能导致完全主机接管。


对用户输入的数据进行全面安全检查或过滤,尤其注意检查是否包含SQL特殊字符。这些检查或过滤必须在服务器端完成,必须注意大小写问题,建议过滤的常见危险字符如下:

--,#,//(注释符)

and 

or

select

update

delete

drop

declare

insert

xp_shell

(,)括号

 ||,+, (空格) 连接符

 ' 单引号

|(竖线符号)

 & (& 符号)

;(分号)

$(美元符号)

%(百分比符号)

 @(at 符号)

'(单引号)

"(引号)

\'(反斜杠转义单引号)

\"(反斜杠转义引号)

<>(尖括号)

CR(回车符,ASCII 0x0d)

LF(换行,ASCII 0x0a)

,(逗号)

\(反斜杠)

跨站脚本:

系统只是在局部对部分危险进行了过滤,并没有进行全局过滤,且是使用replaceAll对危险字符进行过滤易被攻击者绕过。

攻击者可以通过构造URL注入JavaScript、VBScript、ActiveX、HTML或者Flash的手段,利用跨站脚本漏洞欺骗用户,收集Cookie等相关数据并冒充其他用户。通过精心构造的恶意代码,可以让访问者访问非法网站或下载恶意木马,如果再结合其他攻击手段(如社会工程学、提权等),甚至可以获取系统的管理权限。


对用户输入的数据进行全面安全检查或过滤,尤其注意检查是否包含HTML特殊字符。这些检查或过滤必须在服务器端完成,建议过滤的常见危险字符如下:

Ø |(竖线符号)

Ø & (& 符号)

Ø ;(分号)

Ø $(美元符号)

Ø %(百分比符号)

Ø @(at 符号)

Ø '(单引号)

Ø "(引号)

Ø \'(反斜杠转义单引号)

Ø \"(反斜杠转义引号)

Ø <>(尖括号)

Ø ()(括号)

Ø +(加号)

Ø CR(回车符,ASCII 0x0d)

Ø LF(换行,ASCII 0x0a)

Ø ,(逗号)

Ø \(反斜杠)

Ø Eval方法

Ø Document

Ø Cookie

Ø Javascript

Ø Script

Ø onerror

短信炸弹:

在调用短信发送功能的程序中未对发送次数和间隔时间进行限制,且手机号未前段直接传入,这是恶意用户可向任意手机号短时间内发生大量垃圾短信。

恶意用户可以在短时间内对某一用户手机号发送大量的短信,造成该手机号不能正

暴力破解1:

系统在根据用户ID 和 旧密码 校验初始密码是否正确中,只在后台验证了用户ID和密码,没有检验验证码,且登录密码为弱密码,导致恶意用户可暴力破解用户密码。

恶意攻击者可以使用暴力破解的手段猜解任意用户密码,从而查看任意用户敏感信息,非法模拟正常用户登录系统进行操作。


1、建议从会话中获取用户ID,2、建议在服务端验证验证码,且保证验证不可重复利用。

暴力破解2:

系统在登录验证中,只在后台验证了用户名和密码,没有检验验证码,且登录密码为弱密码,导致恶意用户可暴力破解用户密码。

恶意攻击者可以使用暴力破解的手段猜解任意用户密码,从而查看任意用户敏感信息,非法模拟正常用户登录系统进行操作。


建议在登录后台验证验证码,且保证验证不可重复利用。

任意文件下载:

在下载程序中未对下载路径进行安全控制,导致攻击者可以下载FTP服务器上包括其他用户上传的任意文件。

攻击者可以查看和下载服务器上特定的文件,其中可能包含受限文件。


服务器端必须对文件名中的“../”字符进行过滤,避免路径跳转,对文件下载的路径要进行严格控制。

访问控制:

对于攻击者提交的查看“角色信息列表”模块请求,系统未在后台再次进行权限的验证。导致低权限用户也可以使用高权限用户才拥有的查看“角色信息列表”功能。

虽然系统已经做了基于角色的权限控制,一旦攻击者通过其他方式(社工、测试页面、已经被注释的url、使用一部包含了很多后台路径的字典扫描等),获得“权限管理”功能的url,攻击者就可以随意修改角色的权限,造成越权操作。


把需要保护的页面“隐藏”起来,并不是很好解决访问控制问题的办法。需要在后台对当前用户是否拥有该url的访问权限,进行再次验证。

用户枚举:

在用户登录的时候验证用户密码是否过期的操作中未做任何安全防护,将导致攻击者可以构造任意用户名传入服务端并根据系统返回的结果判断系统中是否存在该用户。

攻击者通过使用工具和字典的进行用户名枚举,在得到系统中存在的用户名之后执行进一步的攻击操作。


建议增加验证码验证,将生成的验证码保存在会话中,每次在后台使用完之后应清空该会话中保存的值,防止验证码被重复利用。
异常处理:

暴露异常信息详细错误

恶意用户可以利用系统异常收集web应用发布路径、数据库操作语句等敏感信息。


屏蔽暴露详细错误信息,如遇到未知错误信息可以将详细信息写入到错误日志中,只在客户端提示错误信息内容为时间,ID等不敏感信息。如“未知错误,2004-10-18 15:30 ,ID为”。

敏感信息泄露1:

数据库连接、帐号、密码

攻击者可以利用这些信息为进一步攻击系统提供帮助、登录系统,甚至直接控制数据库等服务器等操作。


将帐号、密码进行加密处理

敏感信息泄露2:

明文FTP服务器连接、帐号、密码

攻击者可以利用这些信息为进一步攻击系统提供帮助、登录系统,甚至直接控制服务器等操作。


将IP、帐号、密码进行加密处理

https漏洞1:

SSL 3.0 POODLE攻击信息泄露漏洞(CVE-2014-3566)

 

 SSL3.0是已过时且不安全的协议,目前已被TLS 1.0,TLS 1.1,TLS 1.2替代,因为兼容性原因,大多数的TLS实现依然兼容SSL3.0。
 为了通用性的考虑,目前多数浏览器版本都支持SSL3.0,TLS协议的握手阶段包含了版本协商步骤,一般来说,客户端和服务器端的最新的协议版本将会被使用。其在与服务器端的握手阶段进行版本协商的时,首先提供其所支持协议的最新版本,若该握手失败,则尝试以较旧的协议版本协商。能够实施中间人攻击的攻击者通过使受影响版本浏览器与服务器端使用较新协议的协商的连接失败,可以成功实现降级攻击,从而使得客户端与服务器端使用不安全的SSL3.0进行通信,此时,由于SSL
3.0使用的CBC块加密的实现存在漏洞,攻击者可以成功破解SSL连接的加密信息,比如获取用户cookie数据。这种攻击被称为POODL攻击(Padding Oracle On
Downgraded Legacy Encryption)。
 


建议:

临时解决方法:
 如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
* 禁用SSL 3.0协议。
 目前常用浏览器只有IE 6.0仍然不支持TLS 1.0,禁用SSL 3.0协议将影响IE 6客户的

SSL访问。
 服务端禁用方法:
Apache 2.x:

在mod_ssl配置文件中使用如下命令禁用SSLv2和SSLv3:

SSLProtocol All -SSLv2 -SSLv3

重启Apache
 Nginx:

在配置文件中使用:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

重启Nginx
 IIS:

查找如下注册表项:

HKey_Local_Machine\System\CurrentControlSet\Control\SecurityProviders \SCHANNEL\Protocols

该注册表项通常包含以下子项:

* PCT 1.0

 * SSL 2.0

 * SSL 3.0

 * TLS 1.0

每个注册表项都保留适用于该项的协议相关信息。可以在服务器上禁用这些协议中的任一种。为此,

 请在协议SSL 3.0的服务器子项中创建一个新的DWORD值。将DWORD值设置为“00 00 00 00”。
 

https漏洞2:

SSL/TLS 受诫礼(BAR-MITZVAH)攻击漏洞(CVE-2015-2808)

 

SSL/TLS协议是一个被广泛使用的加密协议,Bar Mitzvah攻击实际上是利用了"不变性漏洞",这是RC4算法中的一个缺陷,它能够在某些情况下泄露SSL/TLS加密流量中的密文,从而将账户用户名密码,信用卡数据和其他敏感信息泄露给黑客。


临时解决方法: 

SSL/TLS 
-------- 
1、禁止apache服务器使用RC4加密算法 
vi /etc/httpd/conf.d/ssl.conf 
修改为如下配置 
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!RC4 
重启apache服务 
2、关于nginx加密算法 
1.0.5及以后版本,默认SSL密码算法是HIGH:!aNULL:!MD5 
0.7.65、0.8.20及以后版本,默认SSL密码算法是HIGH:!ADH:!MD5 
0.8.19版本,默认SSL密码算法是 ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM 
0.7.64、0.8.18及以前版本,默认SSL密码算法是ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP 
低版本的nginx或没注释的可以直接修改域名下ssl相关配置为 
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES 
256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GC 
M-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; 
ssl_prefer_server_ciphers on; 
需要nginx重新加载服务 

3、关于lighttpd加密算法 
在配置文件lighttpd.conf中禁用RC4算法,例如: 
ssl.cipher-list = "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4" 

重启lighttpd 服务。 

4、tomcat参考:  https://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html  https://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html 

5、浏览器手工屏蔽方案 
Windows 用户: 
1)完全关闭 Chrome 浏览器和Mozilla Firefox浏览器 
2)复制一个平时打开 Chrome 浏览器(Mozilla Firefox浏览器)的快捷方式 
3)在新的快捷方式上右键点击,进入属性 
4)在「目标」后面的空格中字段的末尾输入以下命令 --cipher-suite-blacklist=0x0004,0x0005,0xc011,0xc007 

Mac OS X 用户: 
1)完全关闭 Chrome 浏览器 
2)找到本机自带的终端(Terminal) 
3)输入以下命令:/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --cipher-suite-blacklist=0x0004,0x0005,0xc011,0xc007 

Linux 用户: 
1)完全关闭 Chrome 浏览器 
2)在终端中输入以下命令:google-chrome --cipher-suite-blacklist=0x0004,0x0005,0xc011,0xc007

https漏洞3:

SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱(CVE-2015-4000)

Chrome访问不安全的https链接时,Chrome为保护用户隐私会禁止用户访问这类不安全链接。 提示:服务器的瞬时 Diffie-Hellman 公共密钥过弱 一是通过修改服务器配置,增加加密的安全级别。比如,tomcat配置: ciphers


Chrome访问不安全的https链接时,Chrome为保护用户隐私会禁止用户访问这类不安全链接。

提示:服务器的瞬时 Diffie-Hellman 公共密钥过弱

一是通过修改服务器配置,增加加密的安全级别。比如,tomcat配置:

ciphers=”TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA”提高tomcat加密的级别

 

Struts2漏洞: S2-045漏洞攻击(在Content-type: 中插入非法字符串来远程执行命令并尝试执行该脚本,执行完成后删除)

黑客通过Struts2的S2-045漏洞,远程向问题服务器执行恶意代码,导致服务器主动下载脚本并成为肉鸡实施SYN Flood攻击,导致互联网访问出现严重性能下降


升级

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: