помещение


Отказ от ответственности: Содержание этой статьи предназначено только для обучения и общения.Все неблагоприятные последствия, вызванные распространением и использованием связанных технологий в статье, являются ответственностью пользователя и не имеют никакого отношения к этому официальному аккаунту и автору. статья. При необходимости перепечатки просьба указывать источник, а содержание данной статьи не может быть удалено без разрешения автора.




Информация об уязвимости

  • Тип уязвимости: обход каталога

  • Уязвимая версия: gitea до 0.2.0

  • Знакомство с уязвимостью: нефильтрованные сетевые запросы



Введение в репо

doctron - это сервер, который предоставляет функцию преобразования html в pdf и в настоящее время имеет 266 звезд.



Анализ уязвимостей

Вызов doctron инициирует запрос URL-адреса без фильтрации протокола, что приводит к чтению любого локального файла.chromedp.Navigatefile://

func (ins *html2pdf) Convert() ([]byte, error) {  start := time.Now()  defer func() {   ins.convertElapsed = time.Since(start)  }()  var params PDFParams  params, ok := ins.cc.Params.(PDFParams)  if !ok {   return nil, errors.New("wrong pdf params given")  }  ctx, cancel := chromedp.NewContext(ins.ctx)  defer cancel()   if err := chromedp.Run(ctx,   chromedp.Navigate(ins.cc.Url),   chromedp.Sleep(time.Duration(params.WaitingTime)*time.Millisecond),   chromedp.ActionFunc(func(ctx context.Context) error {    var err error    ins.buf, _, err = params.Do(ctx)    return err   }),  ); err != nil {   return nil, err  }   return ins.buf, nil }

Метод ремонта

Добавлен метод проверки URLCheckParams

картина

Содержание метода заключается в следующем, чтобы оценить и отфильтровать тип протокола URL-адреса.

func CheckParams(ctx iris.Context) {  webUrl := ctx.URLParam("url")          ...       u, err := url.Parse(webUrl)      ...   if u.Scheme != "http" && u.Scheme != "https" {   outputDTO := common.NewDefaultOutputDTO(nil)   outputDTO.Code = common.InvalidUrlScheme   _, _ = common.NewJsonOutput(ctx, outputDTO)   return  }   ctx.Next() }

картина

картина

Справочная ссылка

  • https://huntr.dev/bounties/c1952c59-c196-440d-b41f-ce137fb183a1/

КОНЕЦ

картина
Отсканируйте код, чтобы подписаться на нас
Родился из сна, как олень, возвращающийся в лес