이전에 작성한 업로드 취약점과 형제격으로 함께 이야기하는 취약점이 다운로드 취약점입니다. 만약 다운로드 취약점이 발생한다면 소스코드를 다운로드하여 서비스의 취약점을 쉽게 분석을 할 수 있고, 중요파일을 다운로드하여 익스플로잇 등에 이용도 가능하죠. 그동안 만나본 다운로드 취약점은 사실 케이스가 다양하지는 않았습니다. 업로드와는 다르게 다운로드 로직은 매우 명확하기 때문이죠. 01. 파일명 및 파일경로 검증02. 다운로드 파일에 대한 권한검증03. 웹서버 설정미흡에 따른 중요파일 다운로드 제가 만나보지 못한 다양한 케이스가 있을 수 있으니 이점 참고 부탁드립니다. 01. 파일명 및 파일경로 검증다운로드 취약점의 대부분이 이 내용에 해당될 것입니다. 서버 외부로부터 전달받은 다운로드 하려는 파일의 파일명 또..
웹해킹 중 간단하지만 발생했을 때 매우 위험한 취약점 중 하나로 업로드 취약점이 있습니다. 사실상 웹쉘이 업로드만 된다면 서버가 탈취된 것과 동일하기 때문이죠. 다행스럽게도 웹쉘 업로드를 방지하는 방법은 매우 간단합니다. 웹쉘 업로드를 방지하기 위해서는 서버에 업로드를 허용할 확장자를 선정한 뒤 업로드 하려는 파일의 확장자를 대/소문자 구분없이 검증해야 합니다. 여기에 Null Injection 등을 통해 확장자 검증을 우회할 수 있기 때문에 전달받은 파일명에 공백과 널 바이트를 삭제해줘야 합니다. 이밖에도 업로드 취약점과 관련하여 추가로 확인해야 하는 내용들이 아래와 같습니다. 01. 상대경로/절대경로 포함 여부 02. 업로드 허용 경로검증03. 응답값 내 파일명 및 파일경로 노출 여부04. 데이터 저..
웹 해킹 중 정말 간단한 공격이면서도 치명적인 공격이 몇가지 있는데요, 그 중에서 SQL Injection에 대해 이야기 해보겠습니다. SQL Injection은 입력값이 쿼리에 동적적용 시 개발자가 의도하지 않는 쿼리로 변조가 되는 취약점이죠. SQL Injection을 방지하기 위해 가장 좋은 방법은 필터링보다는 입력값을 파라미터화 시켜 바인드 처리하여 입력값이 쿼리로 인식되지 않도록 하는 것입니다. 하지만 이 과정에서도 개발자 분들이 실수를 하는 경우가 있습니다.대표적인 사례가 아래와 같습니다. 01. 동적쿼리 사용 시 입력값 검증 02. 잘못된 PreparedStatement 사용 이 밖에도 여러 케이스가 존재하겠지만, 위 내용에 대해 간단히 이야기 해보겠습니다. 01. 동적쿼리 사용 시 입력값 ..
웹해킹을 진행하면 가장 먼저 소개하는 취약점이 XSS인 것 같습니다.XSS는 기본적으로 입력값과 출력값을 검증하지 않아서 악성코드가 삽입되거나, 인증정보가 탈취되는 취약점이죠. 그 과정이 어떻게 되느냐에 따라 Stored인지 Reflected인지 등으로 구분이 되는 것일 뿐 개인적으로 크게 중요하지는 않아 보입니다. 오히려 중요한 점은 개발자가 검증하는 값이 사용자로부터 직접 입력받는 값에 대해서만 검증한다는 점일 것 같습니다. 입력값이 사용자 기준이 아니라 웹서버 기준으로 입력되는 모든 데이터를 검증하는 것이 가장 중요하기 때문이죠. 이와 관련된 일부 케이스는 아래와 같습니다. 01. 일반적인 파라미터를 통해 전달받은 입력값의 검증02. 일부 입력값의 검증 예외처리03. 일부 입력값을 가져오는 함수에 ..
- Total
- Today
- Yesterday