코딩하는 개굴이

2장. 웹 해킹 본문

~2019/해킹맛보기 스터디

2장. 웹 해킹

개굴이모자 2016. 10. 11. 01:11
반응형

웹 해킹 정리:

 

 

2.1 개요

웹 어플리케이션이 활성화되면서 중요서비스들의 다수가 웹을 통해서 이루어지고 있다. 그래서 웹 어플리케이션의 보안에 대한 공격은 그 수법이 다른 것에 비해 잘 알려져 있다.

 

2.2 사례

7.7DDos, 3.4DDos, EBS 해킹, 현대캐피탈 해킹, 구글 해킹, 크로스 사이트 스크립트 웜 배포 등등

 

2.3 환경구축

웹 어플리케이션 해킹에서 보이지 않는 서버 사이드 언어와 데이터베이스 쿼리를 추측하는 것은 매우 중요한 일이다. APM은 무료이고 우수한 성능을 가졌기에 가장 높은 점유율을 가지고 있다.

책에서는 그 이후로, Apache, PHP, MySQL, Web Proxy 순으로 웹 해킹 과정에 유용할 툴 설치를 안내 해 주었다.

 

2.4 구글 해킹

다른 말로는 ‘Google Dork’ 라고 불리는 구글 해킹은 구글 자체를 해킹하는 것이 아니라, 구글 검색을 활용한 해킹 방법이다.

해킹 단계에서 가장 중요한 것은 정보 수집으로 가능한 한 많은 정보를 수집하는 것은 곧 공격자의 입장에서 공격할 포인트를 많이 수집할 수 있다는 것과 같은 의미이다. 정보수집의 절차에서 구글 해킹이 많이 사용되는데, 더 효율적인 검색 결과를 얻기 위하여 사용할 수 있는 부울 연산자와 검색 연산자는 아래와 같다.

 

이를 이용해서 구글 해킹 쿼리를 만들기 위해서는 웹 어플리케이션 관리자들의 실수를 파악하고 있는 것이 유용하다.

 

2.4.n1 관리자들의 실수

-백업 파일의 노출

대부분의 편집용 프로그램에서 기본적으로 제공하는 백업 기능은 특정파일이 편집 중이거나 삭제 되었을 때 다음과 같은 내용의 백업파일을 저장한다.

           Vi editor: .(파일명).(확장자).swp

           EdiPlus. UltraEdit: (파일명).(확장자).bak

           기타: (파일명).(확장자).back, (파일명).(확장자).backup

또한 홈 폴더에 관리자의 실수로 다음과 같은 백업 파일을 남기기도 한다.

html.tar.gz

public_html.tar.gz

www.tar.gz

sqlsql

bd.sql.backup.sql 등등….

 

-관리자 페이지 권한의 실수, 노출

웹 어플리케이션의 관리자 페이지의 경로가 노출되는 것은 심각한 보안 문제를 초래할 수 있지만, 아직도 많은 홈페이지들이 /admin/혹은 /manager/와 같은 관리자 페이지를 사용하고 있다. 이외의 관리자 페이지로 추측할 수 있는 주소는

http://www.xxx.com/admin/

http://www.xxx.com/manager/

http://www.xxx.com/master/

http://www.xxx.com/administrator/

http://admin.xxx.com/

http://manager.xxx.com/

등이 있다. 관리자 페이지가 위와 같은 경로를 포함 할 경우, ‘site:xxx.com, inurl:admin’과 같은 검색 쿼리를 이용해서 관리자 페이지를 찾아낼 수 있고, xxx.com사이트의 admin폴더 내부 파일 등을 검색 할 수 도 있다. 모든 파일이 관리자 권한을 체크하는 기능이 포함되어야 하지만 그렇지 않는 경우가 빈번히 발생해서 문제가 되고 있으니 이를 이용할 수도 있다.

-기밀 업로드 파일의 관리 실수

파일 업로드 기능이 있는 게시판의 경우는 /pds/, /upload/, /up/, /data/, /file/, /files/ 등과 같은 폴더에 업로드한 파일을 저장한다. 만약 비밀 글에 파일이 첨부되어 있는 경우, “inurl:/board/data/, site:xxx.com’과 같은 쿼리를 이용해서 비밀 글의 첨부 파일을 받아볼 수도 있다.

이외에도  아파치의 옵션을 이용한 디렉터리 리스팅과 찾아낼 수 있다면 구글 해킹만으로도 점령이 가능해지는 웹 쉘 노출 등이 있다.

 

2.4.n2 언급한 관리자들의 실수를 통해 다음과 같은 쿼리를 이용해 볼 수 있다.

짧게 요약해 보여주자면,

관리자 페이지가 타이틀에 들어가고 /admin/을 포함하게 검색한 결과 관리자 페이지들을 찾을 수 있었고,

타이틀(제목)에 바이러스가 들어간 내용의 정보만을 보여주는 것처럼 더 자세하게 원하는 정보를 얻을 수도 있었다.

검색엔진 사이트들은 서버를 수집하기 위해 크롤링봇’ (많은 컴퓨터에 분산 저장되어 있는 문서를 수집해 검색 대상의 색인으로 포함시키는 기술) 이러한 봇들의 무분별한 정보 수집을 막기 위해 로봇 배제 표준(웹 사이트에 로봇이 접근하는 것을 막기 위한 규약으로 권고안이며 로봇이 robots.txt 파일을 읽고 접근을 중지하는 것을 목적으로 한다. 따라서 접근방지 설정을 하여도 다른 사람들이 그 파일에 접근 할 수 있다.)이라는 규약을 만들었다. 그래서 대부분의 검색 로봇이 크롤링을 위해 접근 시, 최상위 폴더에서 robots.txt 파일을 호출해 권한을 확인한 후 수집하는 절차를 밟고 있다.

그래서 민감한 정보가 담긴 폴더라면 robots.txt 를 사용해서 봇의 크롤링을 제외해 줄 수 있다.

 

2.5 파일 업로드

파일 업로드의 취약점을 통해서 공격하게 되면 해커는 시스템 명령어 실행권한을 획득할 수 있으며, 공격 방법도 타 공격 방법에 비해 상당히 쉽기에 해커들이 선호하는 취약점이다.

공격방법은 업로드 취약점을 통해서 웹 쉘을 해당 타겟 서버에 업로드한 뒤, 해당 업로드 경로를 찾아 웹 쉘을 실행시킨다. 해당 웹 쉘을 통해 해커는 웹 어플리케이션 권한으로 시스템 명령어를 실행할 수 있다.

웹 쉘 업로드 공격이 성공한 후에 해커들은 데이터베이스를 접속하는 PHP파일을 열람해 DB계정을 획득하고, 개인정보를 탈취한다.

대표적 PHP 웹 쉘인 r57shellc99shell이 있는데, c99shell이 좀 더 발전시킨 것이다.

이런 두가지 웹 쉘이 존재함에도 웹 쉘 제작법을 배우는 이유는 웹 쉘 보안이 이슈가 되면서 이런 쉘들은 현재 매우 간단히 탐지가 가능하여 탐지되지 않는 웹 쉘을 제작 이용해야 하는 것이다.

(직접 제작해 보는게 있긴 한데 설명이 불친절합니다….)

 

2.5.2 파일 업로드 취약점 공격

파일 업로드 취약점 공격은 대부분의 게시판들이 사용자가 원하는 자료나 이미지를 올릴 수 있도록 구현된 특성을 이용한 공격 방식이다.

 

대개 게시판들의 경우 이미지 등을 업로드 하게 되면 위와 같이 게시글의 본문에 해당 이미지를 출력해 주는데, 해커는 그것을 이용해 해당 이미지의 속성값을 이용해서 업로드 경로를 찾을 수 있는 것이다. 혹은 업로드 패턴을 파악한 후 악성 PHP파일의 경로를 요청하면 PHP 파일이 실행되는 방법 또한 이용할 수 있다. 이 취약점에는 여러 우회기법이 존재하지만, php.kr우회가법, .htaccess 업로드 취약점, 환경 취약점을 간단하게 추릴 수 있다.

2.5.4 파일 업로드 방어기법

1.”php_value engine off”내용의 .htaccess파일을 업로드 폴더에 생성한다.

2. .htaccess 파일을 사용자가 업로드하지 못하도록 필터링한다.

 

2.6 크로스 사이트 스크립팅

크로스 사이트 스크립팅 취약점은 빈번하게 존재하지만, 파급여파가 크지 않다는 잘못된 상식으로 알려져 있지만, 취약점이 많고, 수많은 공격기법들이 존재한다.

XSS 공격은 웹 페이지에 스크립트를 삽입할 수 있는 취약점이다. 주로 게시판의 악성 스크립트가 삽입된 형태로 공격이 이루어지며, 다른 사용자가 그 글을 읽게 되면 악성코드가 실행되는 방식으로 이루어 진다.

이것을 이용해 쿠키라는 정보를 탈취할 수 있고, 자바스크립트의 기능 내에서 다양한 공격이 가능하다. 예를 들어 사이트 간 요청 위조 공격을 이용하여 관리자 등급 등을 변경해 정보를 수정 획득 하는 공격 또한 가능해 진다.

XSS는 많은 공격 포인트가 존재하기 때문에 해당 취약점에 대한 완벽한 방어 기법은 아직 존재하지 않는다. 때문에 구글과 페이스북 등에서는 XSS 취약점 탐색에 대한 보상 프로그램을 진행하고 있기도 하다.

 

2.7 데이터 베이스 해킹

데이터베이스는 데이터의 집합체로써 웹 사이트의 게시판, 회원 로그인 등이 이를 사용한 것이다. 웹언어에 따라서 대부분 데이터 베이스 궁합이 맞는 DBMS를 선택해서 사용한다. 예를 들어 웹 언어인 PHPMySQL DBMS를 주로 사용한다.

이 이후의 SQL 삽입에 대한 내용은 이해가 되지 않아서 따로 찾아서 정리 해 보았다.

================================================================

1. SQL 삽입 공격

 

   1-1) 웹 애플리케이션은 사용자로부터 SQL 구문을 입력 받는 부분, 즉 데이터베이스와 연동되어야 하는 부분은 크게 로그인, 검색, 게시판으로 나눌 수 있습니다.

   1-2) 로그인 하는 과정에서 아이디와 패스워드 부분에 특정한 SQL 문이 삽입되어 그것이 그대로 데이터베이스에 전송되어 공격자는 원하는 결과를 볼 수 있는 것입니다.

 

   1-3) 발전된 SQL 공격

 

          단순한 로그인 우회 공격이 아닌 다른 테이블에 있는 내용을 열람하는 공격

          일반적으로 우편번호 검색 부분에 SQL 쿼리를 입력 받아 조회를 하고 조회하는 과정에서 사용자 입력을 체크하지 않을 경우 SQL Injection 취약점으로 인해 다른 테이블의 내용을 열람 할 수도 있습니다. 또한 Union 구문을 이용하는 경우도 있습니다.

 

   1-4) 발전된 SQL Injection 공격을 위해 다음과 같은 조건이 만족되어야 합니다.

          앞의 select 문에서 가져온 열 수와 union뒤에 select 문에서 가져오는 열 수가 동일해야 하고테이블의 이름과 컬럼의 이름을 알고 있어야 하며 각 컬럼의 타입이 일치해야 합니다.

 

   1-5) SQL Injection 취약점이 존재하는지 확인 하는 방법

 

          1. 사용자의 입력이 DB와 연결되는 부분에 ' 과 같은 문자를 입력하였을 때 SQL 에러가

             발생하면 SQL Injection 취약점이 존재한다고 봄

          2. SQL 이중 명령어의 사용 : MS-SQL의 경우 ; 문자가 존재하면 SQL 쿼리를 끝내고 ; 다음에 나오는 SQL 쿼리를 실행합니다.

          3.  MS-SQL의 경우 xp_cmdshell을 이용하여 윈도우 내부 명령어를 실행할 수 있습니다.

 

    1-6) 대응법

 

          1. SQL Injection 공격 취약점은 프로그래머가 사용자의 입력을 받는 부분에서 비정상적인 입력이나 예상치 못한 입력을 받는 것을 처리하지 못 할 때 발생합니다.

          2. SQL Injection 공격을 막기 위해서는 사용자의 입력 값에 대한 필터링을 수행합니다.

          3. CSS 언어에서의 검증이 아닌 SSS 의 검증으로 처리합니다.

 

================================================================

 

 

 

 

 

 

2.8 웹 해킹 음미하기

5대 웹 어플리케이션 보안위협

1. 삽입

2. 인증 및 세션 관리 취약점

3. 크로스 사이트 스크립팅

4. 취약한 직접객체 참조

5. 보안설정오류

 

위 위험요소들을 잘 숙지하고, 다양한 플랫폼을 익힌다면 좀더 넓은 분야의 웹 해킹 기술들을 습득할 수 있을 것이다.

반응형

'~2019 > 해킹맛보기 스터디' 카테고리의 다른 글

시스템 해킹  (0) 2016.12.26
1장. 맛보기(1단원)  (0) 2016.09.27
0장. 계획  (0) 2016.09.26
Comments