Нужна помощь, чтобы скрыть ошибку сервера, указанную c при запуске инструмента командной строки Curl - PullRequest
0 голосов
/ 23 апреля 2020

Наш сайт был протестирован одной из компаний, занимающихся сканерами безопасности, и обнаружил известную уязвимость. Это звучит так: «Утечка информации - это слабость приложения, когда приложение выявляет конфиденциальные данные».

Сервер запускает ColdFusion 2016 с Tomcat 8.5.42

Когда сотрудники службы безопасности запускают инструмент команды Curl с измененным узлом имя, имитирующее взлом, сервер генерирует ошибку стека java со слишком большой информацией о сервере.

Ниже приведена команда:

C:\curl\bin\curl.exe -i -s -k -X "GET" -H "Accept: application/json,text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" -H "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" -H "Accept-Language: en-us,en;q=0.5" -H "Host: whs'check" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0 Software Security Group" "https://www.[mysite.com]/"

В результате получается стек java ошибка ниже:

<!doctype html><html lang="en"><head><title>HTTP Status 400 – Bad Request</title><style type="text/css">h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 400 – Bad Request</h1><hr class="line" /><p><b>Type</b> Exception Report</p><p><b>Message</b> The character [&#39;] is never valid in a domain name.</p><p><b>Description</b> 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).</p><p><b>Exception</b></p><pre>java.lang.IllegalArgumentException: The character [&#39;] is never valid in a domain name.
    org.apache.tomcat.util.http.parser.HttpParser$DomainParseState.next(HttpParser.java:966)
    org.apache.tomcat.util.http.parser.HttpParser.readHostDomainName(HttpParser.java:842)
    org.apache.tomcat.util.http.parser.Host.parse(Host.java:66)
    org.apache.tomcat.util.http.parser.Host.parse(Host.java:40)
    org.apache.coyote.AbstractProcessor.parseHost(AbstractProcessor.java:293)
    org.apache.coyote.ajp.AjpProcessor.prepareRequest(AjpProcessor.java:1062)
    org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:523)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
    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)

Преступник в команде: «Host: whs'check». Где недопустимый символ одинарной кавычки "'".

Я пробовал несколько вещей, таких как добавление записи на сервер. xml file

<Connector port=".... relaxedQueryChars="'">

Также я пытался добавить в catalina. свойства

tomcat.util.http.parser.HttpParser.requestTargetAllow='

или

tomcat.util.http.parser.HttpParser.requestTargetAllow="'"

Кажется, ничего не работает. Нам нужно либо найти способ не отображать ошибки, связанные с сервером, при запуске таких инструментов клиента, как Curl. У нас есть общая страница ошибок c, которая отображается каждый раз, когда возникает ошибка, когда пользователи получают доступ к сайту из браузера.

Кто-то предложил ограничить видимость ошибок определенным IP. Для этого нет настройки, которую я вижу в Coldfusion Admin. Есть ли что-то в Apache Tomcat config для этого? Может быть, что-то добавить в файл catalina.properties?

Спасибо

...