一:漏洞名称:

未自定义统一错误页面导致信息泄露,抛出异常信息泄露,错误详情信息泄漏

AWVS漏洞名称如下:

Application error message

Error message on page

ASP.NET error message

描述:

1.如果攻击者通过伪造包含非应用程序预期的参数或参数值的请求,来探测应用程序,那么应用程序可能会进入易受攻击的未定义状态。攻击者可以从应用程序对该请求的响应中获取有用的信息,且可利用该信息,以找出应用程序的弱点。

错误消息中泄露重要信息的另一个原因,是脚本编译引擎,web服务器或数据库配置错误。

    * 此漏洞的利用的重点在于应用程序未能正确处理自身发生的错误 
    * 此漏洞的技术重点在于某些应用程序出错时,会把错误信息反馈到用户端,这些错误信息通常可用于调试的目的 
    * 此漏洞的方法重点在于从错误反馈信息中获取有用的信息,从而加以利用,突破网站安全

总的来说:当Web应用程序发生错误时,如果处理不得当,可能会把相关的错误信息反馈至客户浏览器,这些信息往往可能含有重要的安全信息。。

2.JBOSS默认配置会有一个后台漏洞,漏洞发生在jboss.deployment命名空间,中的addURL()函数,该函数可以远程下载一个war压缩包并解。 如果压缩包里含有webshell文件,是直接可以解析的。

检测条件:

被测网站web业务正常运行

检测方法:

  1. 通过web扫描工具对网站扫描可得到结果。
  2. 或者通过手工,去尝试打开一些不存在的网站路径,或者文件,以及在url中输入一些敏感的字符,看其页面是否会抛出异常或者报错,导致错误消息中包含一些网站架构,版本,等敏感信息。

漏洞修复:

详细的各种修复方案请参考如下:

1.对于tomcat的中间件下,常用修复方式如下:找到配置文件web.xml,修改内容如下:

配置一个统一的静态页面,将400、403、404、500等常见报错重定向到该静态页面,而不是抛出异常(报错信息导致代码信息泄漏)。

<error-page><exception-type>java.lang.Throwable</exception-type><location>/jsp/common/error.html</location></error-page><error-page><error-code>500</error-code><location>/jsp/common/error.html</location></error-page><error-page><error-code>404</error-code><location>/jsp/common/error.html</location></error-page><error-page><error-code>403</error-code><location>/jsp/common/error.hrml</location></error-page>

2.对于常用的jsp语言开发的网站,可在业务流程中,加入异常捕获过程中预定义的错误编码,将异常输出到错误日志中,并在前台页面返回相应的错误编码,以便应用系统运维人员进行异常排查。代码参考:

try {//某业务处理流程……
} catch (Exception e) {e.printStackTrace();logger.error(e.getMessage());resultMessage = getText("业务处理发生异常,错误编码A-04221!");return "errorJsp";
}

3.对于IIS/ASP.net下设置404错误页面:这样,便可以保证IIS能够正确地返回“404”状态码:首先,修改应用程序根目录的设置,打开 “web.config” 文件编辑,在其中加入如下内容:

<configuration><system.web><customErrors mode=”On” defaultRedirect=”error.asp”><error statusCode=”404″ redirect=”notfound.asp” /></customErrors></system.web>
</configuration>
注:上文例中“error.asp”为系统默认的404页面,“notfound.asp”为自定义的404页面,
使用时请修改相应文件名。然后,在自定义的404页面“notfound.asp”中加入将显示的代码页面,
如“not found”。

4.对于apache服务器的设置:修改 httpd.conf,找到如下:

#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
httpd.conf中的这一部分,#ErrorDocument 404 /missing.html 是显示错误页信息的,去掉前面的#,修改为:ErrorDocument 404 /404.jsp

5.对于PHP中间件的使用者,可通过修改php.ini文件来实现如果关闭与开启错误信息,关闭错误显示后,php函数执行错误的信息将不会再显示给用户,这样能在一定程度上防止攻击者从错误信息得知脚本的物理位置,以及一些其它有用的信息,起码给攻击者的黑箱检测造成一定的障碍。这些错误信息可能对我们自己有用,可以让它写到指定文件中去,那么修改以下

log_errors = Off
改为:
log_errors = On
以及指定文件,找到下面这行:
;error_log = filename
去掉前面的;注释,把filename改为指定文件,如/usr/local/xxx/logs/php_error.log
error_log = /usr/local/xxx/logs/php_error.log
这样所有的错误都会写到php_error.log文件里。

6.对于J2EE项目开发的网站,如果想通过捕获抛出的异常信息的方式来修复,可以使用使用Spring MVC统一异常处理的方法来进行修复, Spring MVC处理异常有3种方式:

1.使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver:

<bean class="org.springframework.web.servlet.handler.SimpleMapping
ExceptionResolver">
<!-- 定义默认的异常处理页面,当该异常类型的注册时使用 -->
<property name="defaultErrorView" value="error"></property>
<!-- 定义异常处理页面用来获取异常信息的变量名,默认为exception --〉
<property name="exceptionAttribute" value="ex"></property>
<!-- 定义需要特殊处理的异常,用类名或完全路径名作为key,异常也页名作为值 -->
<property name="exceptionMappings">
<props>
<prop key="cn.basttg.core.exception.BusinessException">error-business</prop>
<prop key="cn.basttg.core.exception.ParameterException">error-parameter</prop>
<!-- 这里还可以继续扩展对不同异常类型的处理 -->
</props>
</property>
</bean>
启动测试项目,经验证,各种层面所抛出的异常(业务异常BusinessException、
参数异常ParameterException和其它的异常Exception)都能准确显示定义的异常处理页面,
达到了统一异常处理的目标。使用SimpleMappingExceptionResolver进行异常处理,
具有集成简单、有良好的扩展性、对已有代码没有入侵性等优点,但该方法仅能获取到异常信息,
若在出现异常时,对需要获取除异常以外的数据的情况不适用。

2.实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器; 增加HandlerExceptionResolver 接口的实现类MyExceptionHandler,代码如下:

public class MyExceptionHandler implements HandlerExceptionResolver {  public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,  Exception ex) {  Map<String, Object> model = new HashMap<String, Object>();  model.put("ex", ex);  // 根据不同错误转向不同页面  if(ex instanceof BusinessException) {  return new ModelAndView("error-business", model);  }else if(ex instanceof ParameterException) {  return new ModelAndView("error-parameter", model);  } else {  return new ModelAndView("error", model);  }  }
}
在Spring的配置文件applicationContext.xml中增加以下内容:
<bean
id="exceptionHandler" class="cn.basttg.core.exception.MyExceptionHandler"/>
启动测试项目,经验证各种层抛出的异常(业务异常BusinessException、
参数异常ParameterException和其它的异常Exception)都能准确显示定义的异常处理页面,
达到了统一异常处理的目标,使用实现HandlerExceptionResolver接口的异常处理器进行异常处理,
具有集成简单、有良好的扩展性、对已有代码没有入侵性等优点,同时,
在异常处理时能获取导致出现异常的对象,有利于提供更详细的异常处理信息。

3.使用@ExceptionHandler注解实现异常处理;增加BaseController类,并在类中使用@ExceptionHandler注解声明异常处理,代码如下:

public class BaseController {  /** 基于@ExceptionHandler异常处理 */  @ExceptionHandler  public String exp(HttpServletRequest request, Exception ex) {  request.setAttribute("ex", ex);  // 根据不同错误转向不同页面  if(ex instanceof BusinessException) {  return "error-business";  }else if(ex instanceof ParameterException) {  return "error-parameter";  } else {  return "error";  }  }
}
修改代码,使所有需要异常处理的Controller都继承该类,如下所示,
修改后的TestController类继承于BaseController:
public class TestController extends BaseController
使用@ExceptionHandler注解实现异常处理,具有集成简单、有扩展性好
(只需要将要异常处理的Controller类继承于BaseController即可)、
不需要附加Spring配置等优点,但该方法对已有代码存在入侵性(需要修改已有代码,
使相关类继承于BaseController),在异常处理时不能获取除异常以外的数据

其他补充说明:

(摘自:jboss和tomcat之间的区别是什么)

JBoss和Tomcat之间的主要区别在于:JBoss是一个基于Java的服务器应用程序,使用Java EE规范;Tomcat是一个servlet容器、一个Web服务器,使用Sun Microsystems的特定规范。

什么是JBoss?

JBoss服务器应用程序(也称为JBoss AS)是基于Java的应用程序服务器。它是一个免费的软件(或开源)服务器,可用于Java支持的任何操作系统(因为服务器是基于Java的)。【视频教程推荐:Java教程】

什么是Tomcat?

Tomcat是一个开源Web服务器和servlet容器,通常被称为“Apache Tomcat”。它提供了一个纯Java Web服务器环境来运行Java应用程序;其中包含用于配置和管理的工具,可以通过编辑XML配置文件来完成直接配置。

JBoss和Tomcat之间的相似处

 ● 两者都能够开发Java EE应用程序。

 ● 两者都是开源和跨平台。

JBoss和Tomcat之间的区别

JBoss

1、JBoss是一个基于Java EE的开源应用程序服务器,用于构建,部署和托管Java应用程序和服务。

2、JBoss可以处理servlet,JSP和EJB,JMS。

3、JBoss使用Java EE规范。

Tomcat

1、Tomcat是一个的Java servlet容器和Web服务器。

2、Tomcat可以处理servlet和JSP。

3、Tomcat使用Sun Microsystems规范。

浅谈“异常信息泄露(应用程序错误)”相关推荐

  1. 浅谈“敏感信息泄露“

    一:漏洞名称: 敏感信息泄露 描述: 敏感数据包括但不限于:口令.密钥.证书.会话标识.License.隐私数据(如短消息的内容).授权凭据.个人数据(如姓名.住址.电话等)等,在程序文件.配置文件. ...

  2. 浅谈“POODLE信息泄露漏洞”

    一:漏洞名称: POODLE信息泄露漏洞 描述:  POODLE即Padding Oracle On Downgraded Legacy Encryption.是安全漏洞(CVE-2014-3566) ...

  3. java编译异常和运行时异常_浅谈异常结构图、编译期异常和运行期异常的区别...

    异常处理一般有2种方式,要么捕获异常try-catch,要么抛出异常throws 如果一个方法后面抛出一个运行时期异常(throws RuntimeException),调用者无须处理 如果一个方法后 ...

  4. 异常信息:由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults

    异常信息:由于内部错误,服务器无法处理该请求.有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults <behaviors><endpo ...

  5. 初中计算机课教什么时候,浅谈初中信息技术课教学

    浅谈初中信息技术课教学 时间: 2013-11-26 栏目: 浅谈初中信息技术课教学 浅谈初中信息技术课教学 伍建洪 [摘要]初中信息技术课,教师要关心爱护学生,真正的融入到学生当中去,在教学中要联系 ...

  6. 计算机老师德育论文,浅谈小学信息技术课中的德育论文

    正文 字体大小:大 中 小 浅谈小学信息技术课中的德育论文 (2009-12-17 16:28:54) 转载▼ 浅谈小学信息技术课中的德育论文 随着科学技术的快速发展,信息技术已经普及到人类生活的方方 ...

  7. Python打印异常信息并暂停程序

    文章目录 一.应用场景 二.实现方法 一.应用场景 Pycharm中程序异常退出后在控制台是可以看到异常信息的 但是程序如果需要打包成exe执行文件,那就得在cmd中运行,在cmd中报错就会直接退出并 ...

  8. 黑马程序员--老毕视频之浅谈异常抛出

    ---------------------- <a href="http://www.itheima.com"target="blank">Jsp. ...

  9. classnotfoundexception是什么异常_大佬说“异常信息”是优秀程序员编写代码的宝贵财富,这是真的吗...

    嗯嗯.......大佬给我看看我的代码呢,到底错哪里了?大佬走过来,一波骚操作,安排得巴巴适适的.走时撂下一句:哥仔建议你看一下控制台,那么简单的问题,记住异常信息就是你宝贵的财富. try 用来指定 ...

  10. 浅谈“phpinfo()信息泄漏”

    一:漏洞名称: PHPInfo信息泄漏.phpinfo()函数信息泄漏 描述: PHPInfo函数信息泄露漏洞常发生一些默认的安装包,比如phpstudy等,默认安装完成后,没有及时删除这些提供环境测 ...

最新文章

  1. 金碧辉煌!皇城定制5月22日正式对外运营开业!
  2. 正经“长生不老药”新进展:口服那种,贝佐斯投资 | 柳叶刀子刊
  3. 对于基础太模糊下一步需要清晰 几个目标
  4. 合格前端系列第五弹- Virtual Dom Diff
  5. MySQL STR_TO_DATE函数
  6. 烟台大学计算机学院学院,烟台大学计算机学院
  7. 【Algorithm】逆序数的分治求解
  8. php网站简繁切换,一个独立可用的中文简体繁体转换PHP程序
  9. [ PyQt入门教程 ] Qt Designer工具的使用
  10. 千千静听滚动条消失的原因
  11. 怎么把ppt弄成链接的形式_怎么把ppt改成pptx_把pptx转换成ppt的方法
  12. python3中unicode-objects must be encoded before hashing问题
  13. 费曼和西蒙的学习方法分享
  14. 数学中竟然还有这样的定理!
  15. Hark语音识别学习(一)-Hark desinger的使用
  16. JEECG3.8 全套实战视频全部开放,免费下载!
  17. 10019---JavaWeb基础--EL
  18. 学弟教程-Python-Flask设置允许跨域
  19. windows10内置Linux子系统挂载文件
  20. WindRiver.Tornado.v2.2.for.Mips-ISO 2CD

热门文章

  1. 测试初中英语词汇量软件,背单词最好的软件排名【浅析初中英语单词拼写】
  2. 小巷开店问题(第三题)
  3. 基于Windows2003实现网关-网关虚拟专用网络
  4. 上原れな - 届かない恋
  5. 使用开源软件的优点和缺点是什么
  6. 高分卫星影像查询地址
  7. VMware 虚拟机 Nat 模式无法上网
  8. 刚入行的软件测试工程师如何自学软件测试?
  9. 智能家居监控移动手机组态现实生活中的应用
  10. 双循环背景下的全球供应链机遇与挑战