본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


웹 취약점5

25. 경로 추적(PT) 경로추척 취약점은 웹 어플리케이션 서버의 파일 또는 디렉토리에대한 접근이 제한적이지 않고 허용이 되어 있어 해커로부터 경로가 탈취되어 중요 정보획득 및 변조가 가능한 취약점을 의미 합니다. 웹주소에 아래처럼 특정 상대경로를 계속해서 입력 해 가면서 정보가 탈취할 수 있을때가지 해커가 입력이 가능하면 해당 취약점이 존재한다 볼 수 있습니다. #다운로드 기능이 있는 주소를 상대로 아래처럼 시도를 합니다. #1차 시도 http:127.0.0.1/../../../../../../../../../../../etc/passwd #2차 시도 http:127.0.0.1/../../../../../../../../../../etc/passwd #3차 시도 http:127.0.0.1/../../../../../../../.. 2021. 12. 10.
9. 정보 누출(Information Leakage) 정보노출이란 서버의 정보가 외부로부터 노출되는 것을 의미 합니다. 서버의 정보는 오류인 경우 오류 메시지와 함께 노출되는 경우와, 서버의 응답헤더에 서버이름이 있는 경우 2가지가 존재 합니다. 해당 취약점을 대비하는 이유는, 동작하는 어플리케이션 서버 정보를 해커에게 제공함으로서 침투할 방법을 좀 더 용이하게 할 수 있기 때문 입니다. #방법1 정보누출을 원천적으로 차단하기 위해서는 각각의 어플리케이션 서버의 설정을 통해서 가능 합니다. 헤더에서 Server 정보를 제거하여 해당 서버가 어떠한 프로그램의 기반으로 만들어 졌는지, 어떠한 이름을 가지고 있는지 제거 해 주도록 합니다. #방법2 오류 페이지가 서버 자체의 화면으로 가게 하는 것이 아니라 사용자가 만든 화면으로 가도록 하는 것이 필수 입니다. .. 2021. 11. 29.
8. 디렉토리 인덱싱(directory indexing) 디렉토리 인덱싱 취약점은 서버내의 모든 디렉터리 및 파일에 대해 인덱싱이 가능하여 모든 파일에 대한 목록을 볼 수 있는 취약점을 의미 합니다. 예를 들어 http://주소/css/ 또는 http://주소/js/ 등 스크립트나 css 파일등을 요청하는 주소에서 경로를 제거 한 뒤에 접속을 시도하면 아래 사진처럼 목록이 전부 나타나는 것을 의미 합니다. 물론 사용자에 의해 업로드된 저장된 파일 경로가 될 수도 있겠습니다. 해당 취약점을 대비하는 이유는, 서버내의 모든 디렉터리 및 파일에 대해 조건 없이 다운로드 및 접근이 가능하며, 웹 어플리케이션 및 서버의 주요 정보가 노출될수 있기 때문 입니다. #방법1 이를 해결 하기 위해서는 각각의 어플리케이션 서버에서의 설정 방법을 통해서 방지 할 수 있습니다. 많.. 2021. 11. 29.
2. 포멧 스트링(Format String) 포멧 스트링(Format String) 취약점은 외부로부터 입력된 값을 검증하지 않고, 입출력 함수의 형식(포맷 스트링)을 그대로 사용하는 경우에 발생되는 문제를 의미 합니다. 해당 취약점은 예전에 비해서 만나기 어려운 것이 웹서버(Web Application Server)의 버전이 높아짐에 따라 이러한 문제는 자연스럽게 해결 할 수 있습니다. 웹서버에 대한 아래 공격유형을 살펴보겠습니다. //#패턴1 (name이라는 변수에 %n값을 넣은 경우) https://주소?name=%n%n%n%n%n%n%n%n%n //#패턴2 (name이라는 변수에 %s값을 넣은 경우) https://주소?name=%s%s%s%s%s%s 해당 패턴을 통해서 웹서버가 오류나 또는 문제를 일으킨 다면 해당 값에 대한 유효성 검증을.. 2021. 11. 29.
1. 버퍼 오버플로우(Buffer Overflow) 버퍼 오버플로우(Buffer Overflow)는 정수형 변수 값이 허용되는 범위보다 크거나 작게 대입되어 문제를 일으키는 웹 취약점 중 한가지 입니다. 아래 Java에서 허용하는 숫자(Integer) 값의 범위 입니다. { System.out.println(Integer.MIN_VALUE); // -2147483648 System.out.println(Integer.MAX_VALUE); // 2147483647 } Integer로 파싱을 해야되는 데이터가 허용되는 값 보다 많거나 이하의 값이 나오면 오버플로우(OverFlow) 가 발생하기 때문에 숫자를 대입받는 코드에서는 이러한 부분에 대해서 검증을 해 주어야 합니다. 또한 사용자로부터 배열의 크기를 양수만 받아야 하는 경우인데 음수를 받게되면 음수 크.. 2021. 11. 29.