일시: 2024년 5월 3일 22시 ~ 23시
대상: 성심당몰 홈페이지
피해자 수: 약 191명
피해 내용: 네이버 계정 유출
해킹 방법 : 성심당몰 페이지 하단부의 인스타그램 영역에 자바스크립트(JS) 악성 스크립트가 삽입되었습니다. 이 스크립트는 사용자가 성심당몰에 접속할 때 네이버 로그인 페이지를 사칭한 피싱 사이트로 자동 리다이렉트되도록 설정되었습니다. 해커는 네이버의 CSS와 JS 파일을 사용하여 실제 네이버 페이지와 유사하게 만들어 사용자를 속였습니다. 추가적으로, 난독화된 eval 함수가 포함된 코드를 통해 악성 기능을 숨겼습니다.
※ 리다이렉션 공격이란?
사용자가 웹사이트에 접속할 때, 악의적으로 설정된 코드에 의해 다른 악성 웹사이트로 자동으로 이동되도록 하는 공격 기법입니다. 이 공격은 주로 피싱 사이트로 리다이렉트하여 사용자 정보를 탈취하거나, 악성 코드가 포함된 사이트로 이동시켜 사용자 시스템에 피해를 줄 수 있습니다.
※ Eval 함수란?
자바스크립트에서 문자열 형태로 제공된 코드를 실행하는 함수입니다. 이 함수는 보안상 위험할 수 있으며, 악성 스크립트가 난독화된 eval 함수를 통해 실행될 경우, 악의적인 코드를 숨기고 실행할 수 있습니다.
성심당몰 해킹 관련 보안 방안
성심당몰 해킹 사건을 통해 우리는 웹사이트 보안의 중요성을 다시 한 번 깨닫게 됩니다. 이러한 사건을 방지하고, 피해를 최소화하기 위해 웹 애플리케이션 방화벽(WAF) 도입과 입력 검증 및 데이터 인코딩이 보안 방안으로 적절하다고 생각합니다.
웹 애플리케이션 방화벽(WAF)이하는 역할은 웹 애플리케이션에 대한 공격을 탐지하고 차단합니다. SQL 인젝션, XSS 등 다양한 공격을 실시간으로 방어할 수 있습니다.
입력 검증 및 데이터 인코딩
- 정규 표현식
function defenseXSS() {
const text = document.querySelector("input[name=todo]");
const regex = /^[ㄱ-ㅎ|가-힣|a-z|A-Z|0-9| |]+$/;
if (!regex.test(text.value)) {
alert('특수 문자는 입력할 수 없습니다.');
return false;
}
return true;
}
위의 코드와 같이 정규 표현식 ^[ㄱ-ㅎ|가-힣|a-z|A-Z|0-9| |]+$를 사용하여 입력값이 한글, 영문 대소문자, 숫자, 공백만 포함하는지 확인합니다. 특수 문자가 포함된 경우 경고 메시지를 출력하고, 입력을 막습니다.
- 입력값 치환
value = value.replaceAll("<", "<");
value = value.replaceAll(">", ">");
value = value.replaceAll("\\(", "(");
value = value.replaceAll("\\)", ")");
value = value.replaceAll("'", "'");
이 코드는 입력값에서 <를 <, >를 >, (를 (, )를 ), '를 '로 치환합니다. 이렇게 치환된 특수 문자는 HTML로 해석되지 않아 스크립트 실행을 방지할 수 있습니다.
https://kisa-irteam.notion.site/bb4b19a9bfe44da599ace4ab4897eff1
https://www.boannews.com/media/view.asp?idx=129583&page=1&kind=1
https://www.boannews.com/media/view.asp?idx=129644&page=1&kind=1
'보안 뉴스' 카테고리의 다른 글
전 세계 수백만 서버를 위험에 노출시키는 새 오픈SSH 취약점 발견돼 (0) | 2024.07.02 |
---|---|
잡플랫 홈페이지, 최근 랜섬웨어 공격으로 먹통... 공무원 시험 대비 수험생 혼란 (0) | 2024.07.02 |
카카오톡에서 ‘원클릭’ 취약점 발견... 다른 사용자 채팅 메시지 읽기 가능 (1) | 2024.07.01 |
친러시아 성향 해킹그룹, 정부24와 KISA 타깃으로 공격 시도? 별다른 피해 없어... (1) | 2024.07.01 |
인도네시아 비하 보도 접한 해커, 한국 정부 사이트 등 5곳 디도스 공격 (1) | 2024.06.13 |