Haftungsausschluss: Der Inhalt dieses Artikels dient nur zum Lernen und zur Kommunikation. Alle nachteiligen Folgen, die durch die Verbreitung und Verwendung verwandter Technologien in dem Artikel verursacht werden, liegen in der Verantwortung des Benutzers und haben nichts mit diesem offiziellen Konto und dem Autor des zu tun Artikel. Wenn Sie einen Nachdruck benötigen, geben Sie bitte die Quelle an, und der Inhalt dieses Artikels darf nicht ohne die Erlaubnis des Autors gelöscht werden.
Informationen zu Schwachstellen
-
Schwachstellentyp: Directory Traversal
-
Verwundbare Version: gitea vor 0.2.0
-
Einführung in die Schwachstelle: Ungefilterte Netzwerkanfragen
Einführung in Repos
doctron ist ein Server, der HTML-zu-PDF-Funktionen bereitstellt und derzeit 266 Sterne hat
Schwachstellenanalyse
Der Doctron-Aufruf initiiert eine URL-Anfrage, ohne das Protokoll zu filtern, was zum Lesen einer beliebigen lokalen Datei führtchromedp.Navigate
file://
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
}
Reparaturmethode
Methode zur Validierung der URL hinzugefügtCheckParams
Der Inhalt der Methode ist wie folgt, um den Protokolltyp der URL zu beurteilen und zu filtern
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()
}
Referenzlink
-
https://huntr.dev/bounties/c1952c59-c196-440d-b41f-ce137fb183a1/
