tomcat 400错误

本片文章是对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报错,无法启动服务的,这也是跟实施人员沟通过后才了解到的。

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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
常见的Tomcat错误包括404错误、运行启动错误和乱码问题。404错误是指当用户请求的资源不存在时,Tomcat无法找到对应的文件或路径,导致页面无法访问。运行启动错误可能是由于Tomcat配置文件的错误或者端口被占用等原因导致Tomcat无法正常启动。乱码问题则可能是由于编码设置不正确或者字符集不匹配导致的显示问题。 对于解决这些常见错误,可以尝试以下几个方法: 1. 检查请求的文件或路径是否存在,确保文件名、路径名大小写一致,并确保文件被正确部署到Tomcat的webapps目录下。 2. 检查Tomcat的配置文件,例如server.xml,确保配置文件中的端口号、数据库连接等信息正确无误。 3. 如果遇到乱码问题,可以检查页面的编码设置,确保页面的编码与浏览器的编码一致。另外,也可以通过在Tomcat的配置文件中指定字符集来解决乱码问题。 4. 如果以上方法都无效,可以尝试重新安装Tomcat,并确保安装过程中没有出现错误。 总的来说,Tomcat作为一个功能丰富的Web容器,常常会遇到各种错误。通过仔细检查文件路径、配置文件和编码设置等方面,可以解决大部分常见的Tomcat错误。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [tomcat常见的错误与解决方案小结](https://blog.csdn.net/qq_36838191/article/details/91490530)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [tomcat常见错误](https://blog.csdn.net/ancheng9625/article/details/101919708)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值