7.应用程序未容错漏洞
漏洞名称
应用程序未容错漏洞
漏洞地址
https://mirrors.tuna.tsinghua.edu.cn/
漏洞等级
中危
漏洞描述
Web 服务器未能正确处理异常请求导致 Web 服务器版本信息泄露,攻击者收集到服务器信息后可进行进一步针对性攻击。
检测到服务器返回的页面信息中包含数据库错误信息。通过数据库错误信息可以得知后台数据库类型,甚至数据库结构。为进一步 SQL 注入攻击提供有利信息。
漏洞成因
应用程序未屏蔽执行过程中的错误信息,直接抛出了异常。
一般情况下是Web应用程序接收用户输入的信息后,未捕获异常,如:数据类型错误、空值、非法字符造成程序不能继续执行,导致抛出错误信息。
漏洞危害
攻击者收集到服务器信息后可进行进一步针对性攻击,检测到服务器返回的页面信息中包含数据库错误信息,通过数据库错误信息可以得知后台数据库类型,甚至数据库结构,为进一步 SQL 注入攻击提供有利信息。
修复方案
PHP
在页面中添加:
error_reporting(0);
或更改php.ini
display_errors
的默认值为On
,代表显示错误提示,如果设置为Off
,就会关闭所有的错误提示。
Tomcat
修改 web.xml
,加入如下代码:
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
IIS
“网站属性
”->“主目录
”->“应用程序配置
”->“调试
”,选择“向客户端发送下列文本信息
”
JSP
1.检查程序中的所有变量,以了解所有预期的参数和值是否存在。当参数缺失导致程序错误时,程序应转向统一的错误页面,不应该抛出未经处理的异常。2.应用程序应验证其输入是否由有效字符组成(解码后)。例如,应拒绝包含空字节(编码为 %00
)、单引号、引号等的输入值。3.确保值符合预期范围和类型。如果应用程序预期特定参数具有特定集合中的值,那么该应用程序应确保其接收的值确实属于该集合。例如,如果应用程序预期值在 10-99
范围内,那么就该确保该值确实是数字,且在 10-99
范围内。4.验证数据是否属于提供给客户端的集合。5.请勿在生产环境中输出调试错误消息和异常。
测试过程
向Web应用提交一些恶意字符:
%df
%27
%20
'
}
;
)
-
../../
一般情况下是Web应用程序接收用户输入的信息后,未捕获异常,如:数据类型错误、空值、非法字符造成程序不能继续执行,导致抛出错误信息。
复测情况
已修复
测试人员
南风向晚
原文始发于微信公众号(利刃藏锋):应用程序未容错漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论