이 글에서는 ASP의 chr(0) 파일 업로드 취약점에 대한 원리와 해결책을 주로 소개합니다. chr(0) 취약점은 파일 업로드 시 확장자 검증을 우회할 수 있는 매우 위험한 취약점입니다.
ASP를 사용하여 파일 업로드 기능을 개발할 때 사용자가 트로이 목마 프로그램을 업로드하는 것을 방지하기 위해 일부 파일의 업로드를 제한하는 경우가 많습니다. 업로드된 파일의 확장자가 규정을 충족하는지 확인하는 것이 일반적인 방법입니다. 업로드된 파일을 검색하는 올바른 문자열 함수입니다. 파일 이름의 마지막 4자리는 쉽게 확인할 수 있지만 여기에는 매우 위험한 취약점이 있으며, 이는 chr(0) 취약점입니다. 세부.
1. 먼저 chr(0)이 무엇인지 설명해주세요.
ASP에서는 chr() 함수를 사용하여 ASCII 코드를 호출할 수 있습니다. 여기서 chr(0)은 호출이 끝 문자임을 의미합니다. 간단히 말해서 문자열에 chr(0) 문자가 포함되어 있으면 chr 앞부분만 나타납니다. (0)은 문자를 출력할 수 있으며, chr(0) 이후의 문자는 출력되지 않습니다. 설명할 수 있는 예를 들어보세요.
다음과 같이 코드 코드를 복사합니다.
<%response.write "HTMer.com"&chr(0)&"Welcome"%>
IIS에서 위 코드를 실행하면 "HTMer.com"만 출력됩니까? chr(0)을 읽으면 명령문이 종료된 것으로 간주되므로 다음 "Welcome"이 사라졌습니다.
2. Chr(0) 취약점 업로드 원칙:
jpg 파일만 업로드하도록 ASP 프로그램을 설정했다고 가정합니다. 다음은 chr(0) 취약점을 사용하여 ASP 트로이 목마를 업로드하는 방법입니다.
여기서는 htmer.asp라는 ASP 트로이 목마 파일이 있다고 가정합니다. 중간에 공백이 보이나요? 파일 이름을 얻을 때 이 공간은 chr(0)으로 간주됩니다. right("htmer.asp .jpg",4)를 사용하여 볼 때는 실제로 .jpg이지만 실제로 htmer.asp를 읽을 때는입니다. jpg이고, 파일 생성 시 chr(0)을 읽으면 시스템이 끝난 것으로 간주하여 이후의 .jpg를 출력할 수 없습니다. 업로드된 파일 이름은 htmer.asp로 자동 생성됩니다. 나는 당신이 그것을 알아야한다고 생각합니다.
3. chr(0) 취약점 해결 방법
해결 방법은 업로드한 파일명에 chr(0)이 있는지 확인하고, ASP에서 대체 기능으로 chr(0) 문자를 직접 바꾸는 것입니다.