저번 과제와 마찬가지로 대표적인 웹 취약점 4가지를 정리하였다.
1. 취약한 파일 존재 취약점
웹루트 하위에 존재하는 취약한 파일(문서파일, 백업파일, 로그파일, 압축파일등)이 외부에 노출되어 발생할 수 있는 취약점
악의적인 사용자는 파일명을 유추하여 민감한 정보가 포함된 내부문서, 백업파일, 압축파일등에 접근하고 이를 통해 시스템에 접근하거나 민감한 정보를 탈취할 위협이 있다.
해당 취약점은 진단하는 범위가 모호하다. 예를 들어 취약점 진단을 하는 입장에서는 백업파일, 로그파일, 압축파일까지 진단했을 때 문제가 없으면 취약점이 없다고 판단할 수 있지만, 고객사 입장에서는 문서파일까지 진단을 원할수도 있다. 따라서 취약점 진단업무를 수행하기 전에 고객사와 범위를 명확하게 정해야 문제가 발생하지 않는다.
점검방법
1. 웹서버의 가상 디렉터리로 이동하여 다음에 제시되는 확장자의 파일에 민감한 정보가 포함되었는지 확인한다.
2. PHP로 개발한 웹서버는 아래와 같은 정보를 출력하는 웹페이지(phpinfo.php)가 존재하는지 점검한다.
대응방안
1. 매주 또는 매월 정기적으로 불필요한 파일을 제거한다.
2. 개발환경과 운영환경을 분리하여 소스코드 수정 또는 테스트 목적의 임시파일이 생성하지 않도록 한다.(해당 대응방안은 정보통신망 전자금융감독규정등의 법에서도 명시되어 있다.)
3. 웹서버의 디렉터리에 존재하는 기본설치파일, 임시 및 백업파일이 외부에 노출되지 않도록 설정한다.
2. 계정관리 취약점
안전한 패스워드 규칙이 적용되지 않아서 발생할 수 있는 취약점(해당 취약점은 보안섬 심의에서 필수적으로 들어가는 항목)
악의적인 사용자는 무차별 대입공격(Brute Force) 또는 딕셔너리 공격을 통해 사용자 또는 관리자의 계정을 획득할 수 있다.
점검방법
로그인 페이지에 접근하여 추측가능한 ID, PW로 로그인을 시도하거나, 툴을 활용해 딕셔너리 공격과 무차별대입공격을 로그인을 시도할 수 있다.
ex) master, admin, administrator, root, manager, test,
대응방안
사용자가 취약한 패스워드를 사용할 수 없도록 패스워드 생성규칙을 적용한다.
예를 들어 3가지 종류 이상의 문자구성과 8자리 이상의 길이의 패스워드를 생성하도록 하거나, 90일 주기로 패스워드를 변경하도록 권장하는 방법들이 존재한다.
3. 실명인증 취약점
본인 확인 과정상에서 취약한 프로그램을 악용하여 사용자정보를 변조하는 공격으로 관리자 위장을 통해 개인정보를 수집하거나 기타 공격에 악용할 수 있는 취약점
아래사진은 2FA의 보안인증 로직이 잘못 구성되어 2FA 인증 문자입력 없이, URL을 입력하여 2FA 인증 이후의 페이지로 이동하는 사례이다.
점검방법
웹서버 내에 실명인증 페이지에 접근한다.
웹 프록시(proxy) 프로그램을 이용하여 이름을 ECSC로 수정하여 변조된 이름으로 회원가입을 시도한다.
회원이름이 ECSC로 가입된 것을 확인할 수 있다.
대응방안
모의해킹을 통해서 프록시 변조, URL 등을 통해서 실명인증이 우회가 되는 부분을 확인한다.
이러한 허술한 보안 로직을 해결하기 위해서 보안기능이 적용되어 있는 라이브러리나 프레임워크를 사용하거나 만약 적절한 라이브러리나 프레임워크가 없다면 보안로직을 개선할 필요가 있어 보인다.
4. 전송 시 주요 정보 노출 취약점
웹서버가 민감한 데이터를 HTTP와 같이 암호화되지 않은 프로토콜을 사용할 때 발생하는 취약점
중요한 정보가 네트워크 상에서 평문으로 전송되어 악의적인 사용자는 스니핑을 통해서 민감한 정보(로그인 정보, 개인정보, 금융정보 등)를 탈취할 위협이 있다.
점검방법
1. 네트워크 패킷을 스니핑 할 수 있는 Wireshark나, BurpSuite와 같은 도구를 활용하면, 암호화되지 않은 평문 데이터가 노출되는지 여부를 확인할 수 있다.
대응방안
HTTPS와 같은 암호화가 적용된 프로토콜을 사용하여 민감한 데이터가 노출되지 않도록 한다.
참고자료
- https://www.kisa.or.kr/2060301/form?postSeq=20&page=1#fndoDocumentPreview
- https://repository.kisti.re.kr/bitstream/10580/6350/1/2016-056%20%EC%9B%B9%20%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%20%EC%B7%A8%EC%95%BD%EC%A0%90%20%EC%A1%B0%EC%B9%98%EB%B0%A9%EB%B2%95.pdf
- https://www.gne.go.kr/upload_data/board_data/notice010/149921923252956.pdf