모의해킹이란 합법적인 권한과 범위 내에서 실제 해킹 기법을 활용해 시스템의 보안 취약점을 점검하는 활동을 의미한다
실제 해킹이 불법적인 침입과 피해를 목적으로 한다면, 모의해킹은 보안 강화를 위한 사전 점검이라는 점에서 차이가 있다. 주요 목적은 공격자가 악용할 수 있는 취약점을 미리 발견하고, 이를 개선하여 보안 사고를 예방하는 것이다.
XSS는 사용자로부터 입력받은 값이 적절한 검증이나 인코딩 없이 웹 페이지에 그대로 출력될 때, 공격자가 삽입한 스크립트가 다른 사용자의 브라우저에서 실행되는 취약점이다. 이로 인해 세션 탈취, 피싱, 악성 사이트로의 강제 이동 등의 공격이 가능해진다.
가장 흔한 사례는 게시판이나 댓글 기능이다.
사용자가 입력한 댓글을 서버가 그대로 저장하고, 이후 다른 사용자가 해당 페이지를 열 때 입력 내용을 그대로 출력한다면 문제가 발생한다. 공격자가 댓글에 스크립트 코드를 입력할 경우, 해당 페이지를 보는 모든 사용자의 브라우저에서 그 스크립트가 실행될 수 있다. 이는 저장형 XSS의 대표적인 예다.
파일 업로드 취약점은 서버가 업로드되는 파일의 확장자, MIME 타입, 내용을 제대로 검증하지 않을 때 발생한다.
간단하게는 shell.php.jpg처럼 확장자를 속여서 서버가 마지막 파일이라고 믿게 만든 후 해당 파일을 실행하게 만들 수 있다.
또한 파일 이름에 ../같은 문자를 넣어 임의의 디렉터리에 파일을 삽입할 수도 있다. 이런 것을 방지하려면 서버에서 사용자의 파일 이름을 신뢰하지 않고 랜덤 문자열 같은 것으로 파일 이름을 바꿀 수 있다.
또한 HTTP 헤더의 Content-Type을 바꿀 수도 있다. Content-Type은 해당 요청의 body가 어떤 타입인지 가리키는 헤더인데 만약 서버에서 실제 확장자를 검사하지 않고 이 헤더만 신뢰한다면 공격자는 아래 설명할 Burp Suite같은 툴을 이용해 요청을 가로채 Content-Type을 정상적으로 속여서 보내면 악성 파일이 그대로 저장될 수 있다.
Burp Suite는 웹 애플리케이션 모의해킹에서 가장 널리 사용되는 도구 중 하나로, HTTP/HTTPS 요청과 응답을 가로채 분석할 수 있다. 프록시 기능을 통해 클라이언트와 서버 간 통신을 직접 수정할 수 있으며, XSS나 파일 업로드 취약점 테스트에 효과적이다. 또한 반복 요청을 자동화해서 브루트 포스 공격에도 유용하게 쓰인다.
모의해킹은 반드시 사전 승인과 명확한 범위 정의 하에 수행되어야 하며, 허가 없이 시스템을 공격하는 행위는 불법이다. 또한 테스트 중 알게 된 정보는 외부에 유출하지 않아야 하며, 시스템에 불필요한 피해를 주지 않도록 주의해야 한다.