내 답변의 수정 사항에 대해 더 자세히 이해하려고 노력하고 있습니다.
https://unix.stackexchange.com/revisions/510388/5
cd "{}"
find 명령의 컨텍스트 내에서 실행하면 주입 공격 취약점이 어떻게 발생합니까?
참고로 취약점을 해결하기 위한 변경 사항은 다음과 같습니다.
diff --git a/command b/command
index 26488d0..fed4c07 100644
--- a/command
+++ b/command
@@ -1 +1 @@
-find . -type d -exec sh -c 'cd {} && echo "Spawning a shell in $PWD..." && sh' \;
+find . -type d -exec sh -c 'cd "$1" && echo "Spawning a shell in $PWD..." && sh' sh {} \;
답변1
디렉토리 이름은 중괄호가 있는 위치에 배치되고 쉘에 의해 제한 mkdir '$(reboot)'
됩니다 find
. 그런 다음 -- 또는 상상하고 싶은 다른 명령을 sh
실행 하게 됩니다 . 공격자가 매우 교활하고 유효한 디렉터리 이름을 에코하지 않는 한 명령이 실패할 수 있지만, 이에 관계없이 피해는 이미 발생한 것입니다 cd $(reboot)
. cd
루트로서 덜 엄격한 테스트를 수행하려면 다음을 시도하십시오.
$ mkdir '$(touch .evil_file; echo directory-name)'`
다음과 같은 결과가 출력됩니다.
something
sh: line 0: cd: ./directory-name: No such file or directory
...그리고:
$ ls -a
. .. .evil_file $(touch .evil_file; echo directory-name)