2013-05-01 2 views
0

나는 웹 응용 프로그램 코드를 통해 공격을 이해 한 http://test.webarticles.com/show.asp?view=../../../../../Windows/system.ini디렉토리 탐색 공격

여기서 ../는 하나의 디렉토리를 이동합니다.

웹 서버를 통한 디렉토리 트래버스 공격에서 웹 서버 이스케이프 코드는 명령을 실행하는 데 사용됩니다.

http://server.com/scripts/..%5c../Windows/System32/cmd.exe?/c+dir+c : \

여기서 % 5c는 '\'의 이스케이프 코드입니다.

웹 서버는이 URL을 어떻게 파싱합니까? 더 명확하게 말하면 웹 서버가이 URL을 받으면 스크립트 폴더로 이동하지만 이스케이프 코드가 발생합니다. 따라서 모든 다음 문자를 정상적으로 처리합니다. 그래서 ../ Windows/System32/cmd.exe?/c + dir + C : \는 정상적으로 처리됩니다. 그렇다면 % 5c 이전에 ..의 사용은 무엇입니까?

답변

0

../을 차단하도록 서버를 설정했지만 ..\을 사용하여 디렉토리 통과를 차단하지 않으면 위생을 우회 할 수 있습니다. 더 많은 슬래시 또는 다른 조합을 대체해야 할 수도 있습니다. 나는 ..%5C..%5C 전에 ..%5C../ 전에 확실히 시도 할 것이다.

+0

Windows에서 백 슬래시는 파일 경로를 지정하는 데 사용됩니다. 따라서 cmd.exe를 실행하려면 C : \ Windows \ cmd.exe와 같은 경로가 필요합니다. 그러나 URL의 슬래시는 예를 들어 http://server.com/scripts.html. 내가 이해하지 못하는 것은 URL 맵에서 슬래시가 Windows에서 역 슬래시로 표시되는 방법입니다. 나는 우리가 루트 디렉토리에 도달하기 위해 시행 착오를해야하지만, 나는 cmd 경로와 함께 이스케이프 코드의 사용법과 혼동스러워한다. – Karan

+0

슬래시는 Windows에서도 허용되고 허용됩니다. 'c :/windows/cmd.exe'를'exec() '에 상응하는 곳으로 전달하면, 그냥 작동해야합니다. 노출 된 백 슬래시는 URL에 허용되지 않으므로 이탈 이스케이프가 필요합니다. 위생이 백분율 해독 전에 발생한다는 것은 그리 중요하지 않습니다. 핵심 취약성 (있는 경우)은 위생이 기본 디렉토리 분리 기호를 사용하여 디렉토리 통과를 위생적으로 처리하지 못한다는 것입니다. – tripleee

+1

그래서 당신을 올바르게 이해한다면 ../Windows/cmd.exe는 .. \ Windows \ cmd.exe와 같은 CGI를 의미할까요? 나는 위생 처리 우회 메커니즘을 이해하지만 나는 이스케이프 문자의 사용법을 이해하지 못했습니다. 내 생각을 설명하기 위해 두 번째 URL은 http : //server.com/scripts/ ../../Windows/System32/cmd.exe?/c + dir + c : \ (지금은 sanitization을 무시하고, 서버가 ../ 또는 .. \)를 확인하지 않는다고 가정하면 ".. \ ../ Windows/System32/cmd.exe?/c + dir + c : \"가 어떻게 유효합니까? 즉 우리는 어떻게 이스케이프 문자를 사용하여 디렉토리 트리에서 위쪽으로 탐색 할 수 있습니까? – Karan