🌼

005. 정보보안 (2)

 
이번 시간에는 XSS, SQL Injection 등 웹 해킹에 대해서 자세히 다루겠습니다. 시스템 보안, 네트워크 보안 등 다양한 정보보안 분야 중 웹 해킹을 다루는 이유는 여러분들이 실습해보기가 편하고, 눈에 바로 보이기 때문에 공부를 하시기가 용이하기 때문입니다.

1. OWASP

OWASP는 오픈소스 웹 애플리케이션 보안 프로젝트입니다. 주로 웹에 관한 보안 취약점 등을 연구합니다. OWASP TOP 10을 보시면 전세계 해킹 공격이 어떠한 공격이 많은지를 볼 수 있습니다. 이 문서는 4년마다 업데이트가 되고 있습니다. Google에서 검색하시면 업데이트 내역을 확인할 수 있습니다.
2021 OWASP TOP 10
  • 인젝션
  • 취약한 인증
  • 민감한 데이터 노출
  • XML 외부 개체 (XXE)
  • 취약한 액세스 통제
  • 잘못된 보안 구성
  • XSS
  • 안전하지 않은 역직렬화
  • 알려진 취약점이 있는 컴포넌트 사용
  • 불충분한 로깅과 모니터링
 

2. XSS

XSS서버를 공격하는 것이 아니라 사용자를 공격하는 것을 말합니다. 주로 게시판 댓글에 허용되는 HTML이나 JS 코드를 사용해서 공격을 하는 겁니다.
예를 들어 게시글 작성 시에 아래의 스크립트 문을 작성해 두면, 게시글에 접근했을 때 alert창을 확인할 수 있습니다. 그러면 그 사이트는 XSS에 취약하다는 정보를 얻을 수 있습니다. 다만, 기초적인 공격인 만큼 대부분의 사이트에서는 이를 방지하고 있습니다.
<script>alert('XSS');</script>
여러분의 정보를 탈취할 수도 있고 여러분의 정보를 이용해서 다른 게시물을 업로드하는 것도 가능합니다. 간단한 공격이지만 OWASP TOP 10에 항상 포함된 취약점입니다.
 

3. SQL Injection

SQL InjectionSQL 쿼리를 이용해서 시스템 접근 또는 로그인 우회를 하는 것을 말합니다. 예를 들어, 게시판 검색창에 검색할 단어 대신 SQL 구문을 넣으면 결과창에 민감한 정보가 나올 수 있도록 공격이 가능합니다. 물론, 대부분의 웹 사이트에서는 이를 방어하고 있습니다.
아이디와 비밀번호를 확인하고 일치하면 로그인이 되는 기능이 있다면 아이디에 admin, 비밀번호에 아래와 같은 SQL 구문을 입력해서 비밀번호 없이 로그인을 할 수 있습니다.
SELECT * FROM users WHERE username='admin' and password='password' OR 1=1 --'
생활코딩 사이트(https://bit.ly/3cvhAJd)나 인프런의 제코베 강의(https://bit.ly/3asXInp)를 참고하면 SQL 구문에 대해서 학습할 수 있습니다. SQL 구문을 URL에 구문으로 입력하는 것이 SQL Injection입니다. SQL Injection이라고 검색하시면 이 공격 키워드와 공격 방법에 대해서 자세하게 알 수 있고 리디북스에 가시면 SQL Injection에 관한 무료 책이 있습니다. 사이트도 함께 제공을 하고 있으니 직접 실습을 하면서 공부하시면 됩니다.
 

4. 파일 업로드

파일 업로드 공격은 PHP, JSP, ASP, 이미지, 영상 등에 코드를 넣은 후 업로드하여 시스템 권한을 획득하는 공격입니다. 대표적으로는 웹 셸 공격이 있습니다. 예를 들어, 한글 파일에 악성 스크립트를 합친 후 업로드한 후에 다운로드한 사용자의 컴퓨터를 공격할 수 있습니다.
💡
웹 셸 (web shell) 업로드 취약점을 통하여 시스템에 명령을 내릴 수 있는 코드
 

5. 디렉터리 노출

디렉터리 노출의 가장 대표적인 예는 directory traversal attack이 있습니다. 이는 URL에 ../ 같은 구문을 붙여 상위 디렉토리나 하위 디렉토리에 무엇이 있는지 탐색하는 공격입니다. 그러다가 가끔 아파치 서버를 사용하는 분들의 전체 디렉토리가 다 노출되기도 합니다. 그리고 그곳엔 민감한 정보가 섞여있기도 합니다.
💡
디렉터리 이동 명령어 ../ 는 상위 디렉토리로 이동하는 명령어입니다. 예를 들어 현재 폴더의 위치가 "MBIT\정보보안" 이라면 상위 디렉토리인 MBIT 폴더로 이동할 수 있습니다.
 

6. 쿠키 또는 프록시 변조

쿠키는 페이지 이동마다 아이디, 패스워드 정보를 입력하지 않아도 로그인이 계속 유지되게 하는 값입니다. 이런 것들을 탈취해서 해커가 여러분인 척 행동할 수 있습니다. 프록시는 프록시 서버라고도 하는데 클라이언트와 서버 중간 사이에 위치하고 있으며 대리인 역할을 하고 있습니다. 프록시 설정은 본인의 로컬 호스트에도 설정이 가능합니다. 그래서 날아가는 패킷들을 잡거나 들어오는 response 값을 잡을 수 있습니다. 즉, 이를 변조하는 거죠. 대표적인 예로는 5000만원 쇼핑하고 1만원을 결제하는 사건이 있습니다. 굉장히 유명한 사건인데 굉장히 빈번하게 일어나는 사건입니다. 이는 프록시 툴을 사용해 파라미터 값을 변조해서 결제금액을 조작해서 이뤄지는 공격입니다. 이런 공격은 많이 쓰이고 사용하기가 쉽기 때문에 워게임 등 모의 해킹 사이트에서 1번 문제 등으로 다루고 있습니다.
 

7. DBD

DBD는 Drive By Download Attack이라고 합니다. DBD 공격은 사용자도 모르게 악성코드 등을 다운 받도록 하는 공격을 말합니다. 바울랩 시크릿 페이지에 있는 DBD 공격 예시 홈페이지(http://paullab.co.kr/001.html) 로 접속합니다.
 
  1. 사이트에 접속하자마자 alert 창을 확인할 수 있습니다. '확인'을 클릭해 봅시다
    1. notion imagenotion image
       
  1. 그러면 홈페이지가 해킹되었다는 페이지가 뜨게 됩니다.
    1. notion imagenotion image
       
  1. 페이지 코드를 확인하기 위해 'F12' 키를 눌러 개발자 도구의 Source 창을 클릭합니다. 그러면 아래와 같은 코드를 확인할 수 있습니다. 해당 코드에서는 <iframe>으로 사용자도 모르게 002.html로 이동하게 됩니다.
    1. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>해킹대상 페이지</title> </head> <body id="helloOne"> <h1 id="helloTwo">hello world</h1> <p>뎃글 : 하하하하<iframe seamless src="002.html" style="display:none;"></iframe></p> <!-- 여기도 script 있다고 가정합니다. --> <script> </script> </body> </html>
       

8. 에러 노출과 구글 해킹

구글 해킹은 구글을 해킹하는 것이 아니라 구글 검색 엔진을 통한 해킹 방법을 말합니다. Google에 검색하시면 굉장히 많은 자료를 얻을 수 있습니다. 구글 검색에도 연산자가 있는데요, 이 연산자를 이용해서 원하는 값을 가져올 수 있습니다. 여러분들 홈페이지에 게시되어 있지는 않지만 접근할 수 있는 DB 백업 파일이거나 Admin URL이 공개되어있는지 구글 해킹 기법으로 알 수 있습니다.
 
이렇게 해서 넓고 얕게 정보보안 분야를 살펴 보았습니다. 원하는 정보를 찾으신 분들도 계실 수 있고, 얕게 배웠기 때문에 아무런 감을 잡지 못하신 분도 있으실 거라고 생각합니다. 천천히 하나씩 여러분들만의 커리큘럼만으로 실력을 쌓으셔서 이 분야의 전문가가 되시길 바라겠습니다.