Блог - Linux, программирование, Я!

PythonSVN хак — пишу граббер

Сегодня на хабре был опубликован отчет об обнаруженной уязвимости (точнее о распространенной ошибке при работе через) SVN.

Суть его заключается в том, что если сайт разрабатывается через систему SVN, то многие разработчики вместо команды svn export просто копируют директорию проекта из рабочих файлов SVN на продакшн - сервер и забывают, что при этом копируются скрытые папки ./svn в том числе ./svn/entries - список содержимого каталога и ./svn/text-base/ в которой и находятся исходники с дополнительным расширением .svn-base В результате можно стянуть исходный код сайта, т.к. веб-сервер не всегда передает интерпретатору файлы с расширением .svn-base и они будут передаваться plaintext-ом

Так что, не теряя времени, написал на Python граббер для сайтов, которые еще не успели дыры закрыть...

Последняя версия - СКАЧАТЬ

Версия 0.5 - СКАЧАТЬ
Версия 0.4 - СКАЧАТЬ
Версия 0.3 - СКАЧАТЬ
Версия 0.2 - СКАЧАТЬ
Версия 0.1 - СКАЧАТЬ

  1. 2009-09-26 20:21:17 | #

    И меня пытались ломать сегодня почитав этот блог судя по статистике. какое счастье что я не пользую svn

  2. 2009-09-27 01:53:02 | #

    Andy: ну, на самом деле проблема не в использовании SVN как таковом, а в его неправильном использовании

  3. :^)
    2009-10-01 04:59:56 | #

    Тож пришёл по логу 404 ))

  4. 2009-10-02 18:14:06 | #

    Похоже, скоро тут соберется тусовка, пришедшая по ссылке из лога)
    Кстати, прикольная идея)

  5. 2009-10-05 10:26:16 | #

    Кто еще пришел по 404? 🙂

  6. Detot
    2009-10-08 11:20:23 | #

    Я тоже пришел по логу.
    смотрю, юзер агент странный, ссылкой, ну и я завалился.

  7. 2009-10-09 04:44:14 | #

    аналогично

  8. 2009-10-13 17:34:51 | #

    А народ сорри…
    Я просто в какой-то момент кажется в 3-ей или 4-й версии граббера решил провести эксперимент и вставил в user-agent сслыку на пост)))

  9. Вася
    2009-10-14 21:29:38 | #

    Молодец «P.S.», сразу спалился сканированием моего сайта.

  10. 2009-10-18 18:19:11 | #

    Ну почему-ж спалился…
    Я просто скрипт выложил, а сканировать мог кто угодно, кто этот скрипт скачал и запустил…

    Хотя с другой стороны, я тож этим делом не побрезговал — около 30 гигов «интернета» накачал, потом надоело…

  11. 2010-03-05 23:58:57 | #

    А у меня чето не хочет запускаться под виндой…Пишет синтакс ошибка.

    • 2010-03-07 01:24:39 | #

      Если не сложно, скопипасти целиком как запускал и что он напечатал. Под Windows я запускать не пробовал даже

  12. 2010-08-12 20:29:54 | #

    Ага, я с этим тоже сталкивался 🙂

  13. 2010-10-18 02:10:29 | #

    Под виндой ошибка, ругается на синтаксис, 41 строка.
    Может ошибка и нюбовская, простите, в Питоне я — ноль.

    • 2010-10-18 15:55:28 | #

      А версия 0.4 ?
      Очень странно на самом деле. Можете полный текст скопипастить что там в ошибке пишет?

  14. 2010-10-18 19:05:15 | #
    • 2010-10-18 20:25:39 | #

      Эх, а говорили что в 41 строке ошибка.

      Вообще скачайте версию 0.5 http://seriyps.ru/blog/wp-content/uploads/2009/09/svn_grabber_0.5.tar.bz2 и запускайте не как
      ...>V:\\Svn_grabber_0.5\grabber.py
      а установите python (версия 2.6 желательно) и запускайте так:
      ...>C:\\path_to_python\python.exe V:\\Svn_grabber_0.5\grabber.py
      здесь path_to_python это путь к файлу python.exe который установит инсталлятор питона

  15. 2010-10-18 20:55:42 | #

    Понял, спасибо 🙂
    В версии 0.3 было в 41ой строчке, в 0.4 — 43 строчка.
    Еще раз спасибо, сейчас опробую 🙂

  16. ZiR0
    2012-11-01 23:41:08 | #

    Если у кого проблемы со скачкой, допустим изображений.
    То ищем 172 строку и меняем «w» на «wb» (под виндой точно работает)

    P.S. Автор этого фикса http://seriyps.ru
    🙂

  17. 2019-02-11 15:48:35 | #

    /svn_grabber_latest$ sudo python grabber.py
    Exception in thread Thread-1:
    Traceback (most recent call last):
    File «/usr/lib/python2.7/threading.py», line 801, in __bootstrap_inner
    self.run()
    File «grabber.py», line 111, in run
    while self.__setNextDomain():
    File «grabber.py», line 232, in __setNextDomain
    os.mkdir(self.domainSaveDir)
    OSError: [Errno 2] No such file or directory: ‘test/https://www.***.kg/.svn/entries’
    Дает такую ошибку хотя с веба все граится в ручном режиме (((