본문 바로가기

파이썬 해킹 입문/해킹기술

3. 웹 해킹 기술

개요

컴퓨터 시스템은 본질적으로 해킹에 취약하다. 컴퓨터가 처음 만들어졌을 때는 보안보다는 기능성에 초점을 두었다. 단일 시스템으로 몇십 년 동안 운영되다가 인터넷이 발달하면서 시스템은 다수의 사용자에게 노출되게 되었다. 이때부터 해커가 시스템을 인지하고 공격하기 시작한 것이다. 컴퓨터가 제공하는 다양한 기능은 사용자에게 편의성을 제공하는 반면에 해커에게는 공격을 위한 수단을 제공한다.

웹은 기본적으로 인터넷 브라우저, 웹 서버, 데이터베이스 이렇게 3개의 요소로 구성된다. 각 구성요소별로 역할이 명확히 분리되어 있다. 인터넷 브라우저는 사용자의 입력을 처리하고, 웹 서버로부터 받은 데이터를 가공해 화면을 구성한다. 웹 서버는 HTTP Request를 분석해 정해진 기능을 수행한다. 데이터 처리가 필요한 경우 데이터베이스를 연결해 관련 작업을 수행한다. 데이터베이스는 데이터를 안전하게 관리하면서 자료 입력과 조회 기능을 지원한다.

해커는 웹이 지원하는 기능을 악용한다. 파일 업로드 기능을 이용해서 웹 쉘 파일과 악성 코드를 업로드한다. 업로드한 파일의 위치를 알아내 웹 쉘 파일을 실행하면 해커는 웹 서버를 장악할 수 있다. 사용자 입력 기능을 이용하면 SQL Injection 공격을 할 수 있다. 비정상적인 SQL 쿼리문을 입력해 얻을 수 있는 웹 서버의 오류 메시지를 분석하면서 공격한다. 파일 다운로드 기능을 이용해 악성코드를 인터넷상의 불특정 다수 PC에 배포할 수 있다. 브라우저에서 실행되는 HTML과 스크립트 코드는 XSS 공격과 CSS 공격 수단으로 악용된다.

거의 모든 기업에서 방화벽, IPS, IDS와 같은 다양한 보안장비를 도입해 해킹을 차단하고 있다. 하지만 웹서비스를 지원하기 위해 몇 개의 포트는 어쩔 수 없이 인터넷에 노출해야만 한다. 이를 보완하기 위해 웹방화벽과 같은 장비가 등장하고 있지만, 웹은 해커들에게 가장 매력적인 공격 대상이 되고 있다.

 

XSS

XSS(Cross-Site Scripting)는 게시판 게시물에 악성 코드를 포함하는 스크립트를 심어놓고, 게시물을 읽은 사용자 PC에서 개인정보를 추출하는 해킹 기법이다. 악성 코드는 대부분 스크립트 코드며, 쿠키를 읽어서 특정 URL로 전송하는 기능을 수행한다. 게시물을 읽은 사용자는 자기도 모르는 사이 개인정보가 유출된다. 현재는 브라우저 보안강화와 웹 방화벽과 같은 장비 발달로 인해 공격 빈도가 많이 줄어들고 있다.

 

 

CSRF

CSRF(Cross Site Request Forgery)는 게시판에 악성 코드를 삽입하고, 사용자가 해당 게시물을 읽었을 때 공격이 수행된다는 점에서 XSS와 유사하다. 차이점은 XSS는 사용자 PC에서 개인정보를 유출하지만, CSRF는 사용자 PC를 통해 웹 서버를 공격한다는 점이다. 해킹 유형은 웹 서버에 대한 무력화 시도일 수도 있고, 정보 유출을 위한 공격일 수도 있다.

 

 

Phishing

Phishing은 은행이나 증권사이트와 유사한 웹사이트를 만들어 놓고, 사용자의 금융정보나 개인정보를 탈취하는 기법이다. 먼저 해커는 사용자에게 Phishing을 위한 이메일을 전송한다. 사용자가 이메일을 열어 링크를 클릭하면 Phishing을 위한 위장 사이트가 오픈 된다. 자신이 잘 알고 있는 사이트로 오인한 사용자는 아이디와 비밀번호를 입력하게 된다. 위장 사이트는 사용자 입력 값을 저장하고, 해커는 이 정보를 통해 2차 공격을 시도하게 된다.

 

 

Pharming

Pharming DNS를 해킹해서 정상적인 Domain Name를 호출해도 위장 사이트가 전송되게 하는 해킹 기술이다. 위장 사이트의 IP가 사용자 브라우저에 전송되면, 사용자는 해커가 만든 웹사이트에 개인정보를 입력하게 된다.

 

 

SQL Injection

SQL Injection HTML input 태그를 활용한다. 이해를 돕기 위해 일반적인 로그인 처리 프로세스를 살펴보자. 브라우저에서 사용자 아이디와 비밀번호를 입력받아 서버로 전달하면, 서버는 데이터베이스에서 아이디. 비밀번호와 일치하는 사용자 정보가 있는지 SQL 쿼리를 통해 확인하다. 이때 아이디와 비밀번호에 일반적인 값을 넣는 것이 아니라 데이터베이스에 오동작을 유발할 있는 값을 입력한다. [OR 1=1; /*] 같은 값을 아이디에 해당하는 변수에 입력하면 데이터베이스는 조건과 관계없이 모든 값을 리턴할 수도 있다(항상 그런 것은 아니다). 다양한 비정상 SQL문을 반복적으로 입력하면서 데이터를 관찰하면 시스템 해킹이 가능한 적당한 SQL문을 얻을 있다.

 

 

Web Shell

Web Shell은 웹에서 제공하는 파일 업로드 기능을 악용한다. 먼저 서버를 원격에서 조정할 수 있는 파일(Web Shell 파일)을 웹 서버를 통해 업로드 한다. 해커는 업로드 한 파일 위치를 파악하고 접근 가능한 URL을 찾아낸다. 해커는 이 URL을 통해 Web Shell파일을 실행해서 운영체제를 통제할 수 있는 강력한 권한을 획득할 수 있다. Web Shell은 최근 웹 해킹에서 SQL Injection과 더불어 가장 강력한 기법으로 활용되고 있다.

 

파이썬 해킹 입문 저자의 동의 하에 컨텐츠를 게시합니다

반응형

'파이썬 해킹 입문 > 해킹기술' 카테고리의 다른 글

6. 기타 해킹 기술  (0) 2019.12.14
5. 시스템 해킹 기술  (0) 2019.12.14
4. 네트워크 해킹 기술  (0) 2019.12.14
2. 어플리케이션 해킹 기술  (0) 2019.12.14
1. 해킹이란  (0) 2019.12.14