웹사이트 취약점 점검 및 조치후기

사이트 취약점 진단과 대응: 웹 보안 강화 방법
1.설명
2.취약점 검사
3.취약점 대응
4.마무리
사이트 취약점 점검후 조치하는 아르바이트가 들어와서 웹사이트의 취약점을 진단하고 대응하는 방법을 기록하려고합니다.
무료로 사용할 수 있는 웹 애플리케이션 보안 테스트 도구 중에서 OWASP ZAP
와 Burp Suite Community Edition
을 추천해 드립니다.
이 두 도구는 무료로 사용 가능하며 다음과 같은 특징을 가지고 있습니다.
- 무료 오픈 소스 도구로, 커뮤니티에서 지원합니다.
- 웹 애플리케이션 보안 테스트를 위한 다양한 기능을 제공하며, OWASP Top 10과 같은 취약점을 검사할 수 있습니다.
- 사용하기 쉽고 학습 곡선이 낮아 초보자도 쉽게 시작할 수 있습니다.
- 프록시, 스캐너, 스파이더, 자동화 기능 등 다양한 기능을 포함하고 있습니다.
- 웹 애플리케이션 보안 테스팅 분야에서 널리 사용되는 무료 버전의 도구입니다.
- Proxy, Scanner, Intruder, Repeater, 그리고 다른 고급 기능을 제공합니다.
- 자동 스캐닝 및 수동 요청 수정을 지원하며, 높은 유연성을 제공합니다.
- 기능이 풍부하고 강력하지만 사용법을 익히는 데 시간이 걸릴 수 있습니다.
이 두 도구 중 하나를 선택하고,
해당 웹 사이트의 보안 취약성을 검사하고 개선하는 데 활용할 수 있습니다.
이번 사이트 취약점 점검은 OWASP ZAP
를 사용하였습니다.
도구의 사용법은 생략하겠으며, 구글에 OWASP ZAP
사용법을 검색하면, 자세하게 설명된 글들이 많아 참고 부탁드립니다.
공격을 할때는 해당 사이트의 주인에게 무조건 허락을 맡아야합니다.
사이트가 이미 활성화 되어있고 사용자가 많아 테스트가 안된다면, 본인의 개발서버에 똑같은 개발환경으로 맞춰서 진행해야됩니다.
이번 사이트 취약점 점검은 제 개인 개발서버에서 진행하였습니다.
보시면 경고가 19개가 나오며, 색깔별로 위험도를 나타내고있습니다.
1,2,3,4 순으로 가장 위험하며, 우선적으로 처리해야될 사항입니다.
그림에는 빨간색이 하나도 없지만 제가 SQL Injection 취약점을 해결하고 나서 캡쳐한 이미지이기 때문에 안보이는 것입니다.
이번 사이트 취약점 점검은 다른 경고는 다무시하고 오직 high
, medium
레벨의 경고만 점검해보겠습니다.
그림에서 보면 노란색으로 표시한 부분중 URL이 해당 취약점이 나오는 파일 경로이고
설명을 자세히 보면 The identified library bootstrap, version 3.3.7 is vulnerable.
라고 나오고있습니다.
해결책으로 부트스트랩을 최신버전으로 올려주라고 나오네요.
이런식으로 모든 취약점을 찾아서 소스코드내에서 수정해주면됩니다.
그림에서 보이는 medium
취약점만 나열해보겠습니다.
- Content Securith Policy(CSP) Header Not Set (32)
- Hidden File Found
- Missing Anti-clickjaction Header(16)
- Vulnerable JS Library(2)
해당 취약점이름 옆에 (???) 괄호안에 적혀있는 숫자는 취약점이 뜨고있는 스크립트 파일수이므로 모두 찾아서 해결해주셔야됩니다.
더블클릭해서 펼쳐보면,
이런식으로 처리해야될 파일이 나옵니다. 정말 간단하죠?
지금까지 제가한것은 그냥 OWASP ZAP
도구에 사이트 경로를 쳐서 자동 공격한것밖에 없는데 여기까지가 취약점 진단이고 이제 대응을 해줘야합니다.
아는 언어가 많고 수많은 개발환경에서 프로젝트를한 경험이 있으면, 어떤 사이트도 대응이 가능하겠지만
저는 php
, javascript
마스터라 아직까지는 일거리를 받는데 한계가 있는것같습니다.
3.취약점 대응
1. SQL Injection
2. Parameter Tampering
3. Absence of Anti-CSRF Tokens
4. Content Securith Policy Header Not Set
5. Hidden File Found
6. Missing Anti-clickjaction Header
7. Vulnerable JS Library
아래에서부터는 취약점의 명칭, 설명, 해결방법에 대한설명과 실제로 코드를 어떻게 수정해야하는지 간략하게 예시로 보여드리겠습니다.