精华内容
下载资源
问答
  • tomcat 400错误

    2021-09-12 10:57:25
    tomca 400 错误 在请求目标中无法找到有效字符,有效字符在RFC 7203和 RFC 3986中定义 Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986 org.apache....

    本片文章是对tomcat 400 错误造成信息泄露,如何进行修复进行描述,希望可以对非安全专业的互联网工作人员提供一点帮助,本片文章内容确实也是笔者最近遇到的一些问题。

    漏洞描述

    tomcat 发生400 错误,暴露出中间件版本、以及程序抛出的一些异常。

    异常内容为

        org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:503)
    	org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:502)
    	org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    	org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)
    	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1627)
    	org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	java.lang.Thread.run(Thread.java:745)
    

    和图片有点不一样,因为这个是我从网上粘贴写来的,不过出现异常的一样的,

    虽然实际危害也就那么回事,但是这个毕竟是项目上遇到的问题,打码还是最基本的职业道德。
    在这里插入图片描述

    原因说明

    其中图片中这些异常都不是重点,重点是

    在请求目标中无法找到有效字符,有效字符在RFC 7203和 RFC 3986 中定义
    

    这个报错的英文版是

    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    

    就是说我们传递了无效字符,tomcat 无法处理导致报错,这个问题在高版本tomcat 中均存在,从7.0.88开始,大多数tomcat版本都会出现此问题。

    截图中测试者直接使用burp Suit 传递了一个 XSS payload去测试 autoCode 参数,由于是burp 直接输入的payload, “<”、">",等特殊字符未进行url 编码,tomcat 处理不了了,而tomcat没有报500的服务器端错误,而是报的400错误(请求报文存在语法错误),这是因为,这个错误被认为是客户端的错误(tomcat 是这样认为的)。

    修复方法

    Tomcat增强了其安全性,并且不再允许在查询字符串中使用原始方括号。在请求中,我们有{,} 或其他符号("<",">","[","}"等),因此服务器未处理该请求。

    在tomcat conf路径下的server.xml文件里面的 Connector 标签下添加属性 relaxedQueryChars:

    
    
        <Connector port="8080" protocol="HTTP/1.1"
                       connectionTimeout="20000"
                       redirectPort="8443"
                       maxHttpHeaderSize ="10240"
                       relaxedQueryChars="{,}"/>
    
    
    

    一般直接添加这个

    <Connector port="8084" protocol="HTTP/1.1" relaxedPathChars="[]|" relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;" useBodyEncodingForURI="true" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
    

    多符号可以用"," 隔开,上面那些奇怪的编码是html 实体编码,内容是<、>等符号,直接输入这些符号有些会导致tomcat报错,无法启动服务的,这也是跟实施人员沟通过后才了解到的。

    至于中间件版本好的隐藏,大家去百度的,懒得写了。。。。

    展开全文
  • Tomcat 400错误

    万次阅读 2018-06-29 13:55:55
    The valid characters are defined in RFC 7230 and RFC 3986新版本的tomcat对url的参数做了比较规范的限制,必须按照RFC 7230 and RFC 3986规范,对于非保留字字符,如果不做转义处理,一律都会报The valid ...
    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    

    新版本的tomcat对url的参数做了比较规范的限制,必须按照RFC 7230 and RFC 3986规范,对于非保留字字符,如果不做转义处理,一律都会报The valid characters are defined in RFC 7230 and RFC 3986 错误。


    org.apache.tomcat.util.http.parser.HttpParser#IS_NOT_REQUEST_TARGET[]中定义了一堆 not request target:


    参考解决方法:https://stackoverflow.com/questions/41053653/tomcat-8-is-not-able-to-handle-get-request-with-in-query-parameters


    配置tomcat的catalina.properties
    添加或者修改:
    tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

    或者:对参数进行编码!


    Tomcat 配置项:https://tomcat.apache.org/tomcat-8.5-doc/config/systemprops.html



    %2C : ,            %5C : \

    展开全文
  • Tomcat升级版本出现400问题

    千次阅读 2020-05-28 20:41:22
    但是升上去的tomcat,发现有些页面出现400错误。 二、原因       经过排查发现tomcat在升级的时候,增加了新的特性性 1) URL参数包含大括号{}报错      &...

    一、背景


          以往久远项目经过安全扫描后,发现tomcat版本问题有很多安全问题,故同大版本升级了tomcat小版本版本。但是升上去的tomcat,发现有些页面出现400错误。

    二、原因

          经过排查发现tomcat在升级的时候,增加了新的特性性

    1) URL参数包含大括号{}报错

          由于Tomcat的新版本中增加了一个新特性,就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。

    2) URL参数包含#报错

          根据rfc规范,url中不允许有 |,{,}等特殊字符,但在实际生产中还是有些url有可能携带有这些字符,特别是|还是较为常见的。在对url字符的检查都变严格了,如果出现这类字符,tomcat将直接返回400状态码

    三、解决方法

          按正规编写前端代码,涉及到中文,特殊字符,且需要放到url上面的,请使用encodeURIComponent或encodeURI对URL进行编码。

    展开全文
  • 解决Tomcat出现400问题

    千次阅读 2019-03-06 19:56:46
    有时我们使用SSM框架时,会出现400的错误和这样的The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request...

    有时我们使用SSM框架时,会出现400的错误和这样的The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).页面显示,这是有可能我们创建对象POJO时所使用的类型不对,例如日期的类型是java.util.Date,而不是java.util.sql.

    还有就是从页面传参进数据库时,如果有日期的参数,要对它先进行日期的转换,否则也会报400的错误,有个转变函数是:

    //此方法用于日期的转换,如果未加,当页面日期格式转换错误,将报400错误,实际是因为此方法
    	public void initBinder(WebDataBinder binder) {
    		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    		dateFormat.setLenient(true);
    		binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    	}

     

    展开全文
  • 解决Invalid character found in the request target. The valid characters are defined...Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。 具体来说: org.apache.tomcat.util.http.parser.Ht...
  • 在做javaweb项目时,关于统一错误页面在开发的过程中就做过编码,并且一直都很有效,像500,404,403等常规错误码都能得到有效处理,但是400却不行,而且还暴露tomcat的版本信息,这是很严重的安全漏洞 解决方法百度和测试...
  • 简单介绍:1,nginz 1.4版本2,tomcat 9.0 版本3,证书由 letsencrypt 生成,免费的ov证书。问题描述:比如原来访问test.***.com/manage可以正常访问,配置https后浏览器直接输入test.***.com/manage 域名会自动...
  • 最近遇见一个问题:后台接收一个json字符串:param= {"coords":[{"x":116.46787, "y":39.91491},{"x":116....原因:tomcat 7.0以上版本为了安全,会对一些特殊字符进行了编码,导致400错误 解决:1.找到config/c...
  • tomcat 400 自定义页面

    千次阅读 2020-03-08 11:45:28
    修改%Tomcat_HOME%/conf/server.xml 在Host标签内新增如下内容: <Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" errorCode.400="webapps/error....
  • 先上结论:tomcat7.0-106之后的版本(包括8.5xx之后的版本,只是下了个较新的测试)改了DefualtServerlet类checkIfNoneMatch方法中的比较逻辑,导致用java中引号"与页面传过来被转义了accssi码的引号&...
  • Tomcat 400报错显示tomcat信息,这就存在着很大的安全隐患。 根据官网给出的方案需要重写ErrorReportValve处理400错误跳转到自定义页面,首先需要更改tomcat中的server.xml文件,在host中添加Valve,页面将不显示...
  • 方式1:仅Tomcat8+才支持 Tomcat9及以上的ErrorReportValve类代码 - 自行反编译Tomcat8、Tomcat9此类区别 此方法只能在Tomcat9及以上才生效,因为Tomat8及以下在org.apache.catalina.valves.ErrorReportValve类内...
  • Tomcat错误页面不生效

    2021-06-19 10:41:52
    Tomcat错误页面不生效 配置 `在这里插入代码片`<error-page> <error-code>400</error-code> <location>/error.html</location> </error-page> <error-page> &...
  • tomcat自定义400错误页面

    千次阅读 2020-05-19 14:22:34
    原文链接:https://aspiresoftware.in/blog/catalinatomcat-custom-error-report-valve-to-handle-errors-exceptions/  通过在server.xml文件中 增加上面代码 重启tomcat 400页面如下 自定义 400 错误页面方法 1....
  • tomcat 400错误跳转自定义页面

    千次阅读 2020-12-04 11:44:01
    tomcat 400错误跳转自定义页面 springMVC在web.xml设置可以拦截404,500等错误跳转到自定义页面,但是无法拦截400错误。 <error-page> <error-code>404</error-code> <location>./404....
  • <p><a href=...刷新就显示400,再刷新就有正常了</p>
  • tomcat配置自身错误页面,直接替换tomcat本身的root文件夹即可。然后修改web.xml,具体方式详见:https://blog.csdn.net/f552126367/article/details/107999676
  • 平时使用都是使用tomcat来部署服务的,然后最近升级了tomcat之后,发现了一个Url传参的功能不能用了,然后再仔细一看,乱码了!由于产品的代码都是没改过的,唯一的变量就是tomcat版本了,所以去官网看看tomcat升级...
  • 修改tomcat请求头长度限制 <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxHttpHeaderSize="500000"/> 重启一下tomcat 2.修改application,yml 或者减少...
  • 主要介绍了在Tomcat中配置404自定义错误页面全解,需要的朋友可以参考下
  • 因为tomcat 升级,有个专案突然报错了,查看日志信息显示: 19-Jan-2021 16:12:35.143 信息 [http-nio-8080-exec-47] org.apache.coyote.http11.Http11Processor.service 解析 HTTP 请求 header 错误注意:HTTP请求...
  • tomcat json 400错误

    2019-04-17 10:07:48
    127.0.0.1******.jsp?...我发了个这样的请求,但是却报400.但是在别人哪里却能正常运行。 搜索一下,发现是tomcat 配置问题 1 打开tomcat 配置文件 2 在最后加上或者修改这样的配置 tomcat.util.ht...
  • 控制台报错 java.lang.... at org.apache.tomcat.util.http.parser.HttpParser$DomainParseState.next(HttpParser.java:752) at org.apache.tomcat.util.http.parser.HttpParser.readHostDomainName(H
  • Tomcat 8.5的服务端,导致Web应用不正常,报HTTP 400错误(Chrome无异常、IE报错)。 localhost_access_log [16/Jan/2019:17:05:57 +0800] "GET null null" 400 16-Jan-2019 17:04:49.851 信息 ...
  • 引起这问题的原因是跟 Tomcat 有关,请求过大导致 Tomcat 直接拦截返回,所以一般情况根本进不了业务里的断点,这样很容易误以为是网络层的问题,其实不是,而是 Tomcat 的问题。 max-http-header-size 指..
  • 不羡鸳鸯不羡仙,一行代码调半天。原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。起因:用户在请求接口的时候,请求url中携带中文参数,导致返回400。查询日志...
  • tomcat服务器返回400

    2017-07-03 19:19:00
    项目中遇到了一个问题,本地用jetty调试的时候能够正常访问,部署到tomcat服务器上却返回400,没有访问日志,后来发现是访问的URL是正则匹配的,其中包括了转义的“/”,查阅资料发现tomcat默认不支持路径中包括转义...
  • tomcat 访问400 的一种情况

    千次阅读 2018-01-10 23:26:00
    tomcat 高版本对访问url做了较高的校验,如果url中包含特殊字符,tomcat会自动拦截,返回400错误。如果要包含特殊字符,需要事先进行转译。  我原来用的apache-tomcat-6.0.51 对“{}”这种特殊字符进行拦截。后来...
  • 一个就是修改tomcat的catalina.properties配置文件的最后一行见图片。 还有一个就是修改server.xml 文件增加relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;"。 有的服务器加了也不生效...
  • Tomcat 8.x 400错误:Invalid character found in the request target 最近在测试中发现,在传递json字符串时,一直报400错了,具体的错误信息如下: 23-Sep-2020 11:35:33.477 信息 [http-nio2-8080-exec-2] org....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,682
精华内容 9,472
关键字:

400tomcat