개요

oyesmall 쇼핑몰은 ASP, MSSQL 기반으로 만들어진 취약한 웹 어플리케이션이다. 취약하게 구현되어 있으므로 다양한 웹 서비스 취약점, 시스템 취약점을 테스트하는 용도로 많이 사용한다.


윈도우 서버에 oyesmall 소스를 설치하고, OWASP TOP 10 중 주요 취약점을 위주로 정보수집, 취약점진단, 대응방안 단계로 진행한다.

 

환경 분석

oyesmall 쇼핑몰 페이지에 접속하면 메인 페이지가 나오며 확장자가 asp로 되어 있어 윈도우 서버 기반의 ASP 환경으로 구성되어 있다고 추측한다.


또한 메인 페이지 하단에 oyesmall map 을 클릭하면 제공하는 서비스 종류를 확인할 수 있으며, 총 41개 페이지 중 정상적으로 이동되는 페이지는 13개이다.



웹 크롤링 도구인 Screaming Frog SEO Spider를 이용하면 쇼핑몰의 모든 페이지 구조를 보기 쉽게 트리 형태로 보여준다. 이를 통해 메인 페이지, 게시판, 관리자 페이지, 이미지 파일 위치, 파라미터 등의 정보를 수집할 수 있다.



OyesMall 쇼핑몰을 제공하는 서버를 스캔한 결과로 TCP 포트가 열려있으며 취약점 진단을 수행할 OyesMall 쇼핑몰은 웹서버가 83번 포트로 Microsoft IIS httpd 6.0이다.



목록 상세 설명
운영체제 Microsoft Windows 2003
웹서버 Microsoft IIS 6.0 / ASP.NET
IP 10.10.0.15
서버 사이드 스크립트 ASP
데이터베이스 MS-SQL
점검 페이지 수 13 Page
허용된 HTTP Methods OPTIONS, TRACE, GET ,HEAD, POST
HttpOnly HttpOnly 비활성화
허용된 포트(TCP) 80 / http – Microsoft IIS httpd
81 / http – Microsoft IIS httpd
82 / http – Microsoft IIS httpd
83 / http – Microsoft IIS httpd
84 / http – Microsoft IIS httpd
135 / Microsoft Windows RPC
139 / netbios-ssn
445 / microsoft-db – Microsoft Windows 2003/2008
1025 / msrpc – Microsoft Windows RPC
1433 / ms-sql-s – Microsoft SQL Server 2008
2383 / ms-olap4?
3306 / mysql
Critical 취약점 MS08-067
MS09-001
 


취약한 패스워드 설정

디폴트 계정, 단순한 패스워드가 생성 가능하도록 구현되어 있을 경우 공격자가 무차별 대입 공격을 이용해 해당 값을 발견해 내는 취약점이다.


서비스 위치 [HOME] > [Login]
서비스 URL http://10.10.0.15:83/demoshop/login/login2.asp
파라미터 정보 User_id, passwd

회원정보관리 웹 페이지에서 비밀번호 설정 부분을 보면 암호 복잡도가 구현되지 않고 단순한 패스워드만 입력 가능하도록 구현되어 있다.



단순하게 설정되어 있는 패스워드 존재 여부를 확인하기 위해 Burp Suite의 Intruder를 이용하여 취약점 진단을 했다. 취약점 진단 결과 쉽게 유추 가능한 test계정, admin123 패스워드가 사용된다.



관리 페이지를 제외한 OyesMall 쇼핑몰 웹 페이지를 대상으로 패스워드 취약점 진단 수행결과 총 4개의 취약한 계정이 발견됐다. 발견된 계정은 쉽게 유추할 수 있는 취약점으로 서버측에서 패스워드 로직을 구현해야 된다.


user_id passwd
test admin123
ZAP ZAP
test37 dgl3
tedwmg3 tgl3


1. 공격자가 사용자들의 아이디와 패스워드 크랙
2. 크랙된 사용자로 로그인
3. 사용자의 개인정보 탈취
4. 사용자의 개인정보로 신용카드 생성 및 대출

Burp Suite’s Intruder 기능을 이용해 취약하게 설정되어 있는 아이디와 패스워드를 크랙한다. 크랙한 결과 총 4개의 계정에 취약하게 설정되어 있다.



OyesMall 쇼핑몰이 개인정보를 수집하는지 확인하기 위해 메인 페이지 하단의 “개인정보 보호 정책”을 클릭해서 확인해 보면 개인정보를 회원 가입시 요청하고 있다.



해당 사용자로 로그인을 하면 사용자의 개인정보를 확인할 수 있으며, 사용자의 정보로 신용 카드 발급 및 대출 등을 이용할 수 있다.



인증 우회 - 쿠키 재사용

쿠키는 웹사이트에 접속할 때 사용자들에 대한 여러가지 정보를 담는 임시 파일로 메모리 또는 파일에 저장이 된다.

 

만약, 서버측에서 쿠키에 대한 보안 정책을 설정하지 않는다면 공격자는 사용자의 쿠키값을 가지고 쿠키 재사용 공격, 중요페이지 접근 및 인증 등을 할 수 있으므로 쿠키에 대한 보안 정책을 설정해야 한다.


서비스 위치 [HOME] > [login]
서비스 URL http://10.10.0.15:83/demoshop/login/login2.asp
파라미터 정보 from, gourl, user_id, passwd

로그인 페이지에서 “test”, “tg3” 계정으로 로그인해서 쿠키값을 비교한 결과 동일한 키값이 사용되며 해당 키값은 암호화 되지 않는다.



웹 브라우저 창을 닫고 다시 실행한 후 OyesMall 쇼핑몰 웹 사이트로 접속을 하면 로그인을 하지 않았는데, 자동으로 로그인이 된다.



인증 우회 - 중요페이지 세션/인증/접근

서비스 위치 [HOME] > [myaccount]
[HOME] > [Red Zone]
서비스 URL http://10.10.0.15:83/demoshop/account/profile.asp
http://10.10.0.15:83/demoshop/admin/admin_login.asp
파라미터 정보 user_id,passwd,passwd_q,passwd_a,Name,birth_yy,birth_mm,birth_dd,birth_gbn, ismarry,address,tel1_1,tel1_2,tel1_3,whereTel1,hp2,job,email
adminid,adminpwd

로그인이 되어 있는 상태에서도 회원정보수정(중요페이지)을 할 때 사용자에게 재인증을 받아야 한다. 하지만. OyesMall 쇼핑몰은 재인증을 받도록 기능이 구현되어 있지 않았다.



관리자 페이지에서 일반 사용자 계정으로 접근이 되면 안된다. 하지만,  웹 페이지 상단에 “Red Zone”을 클릭만 하면 관리자 페이지로 접근이 가능하다.




1. 공격자가 게시판 쿠키 정보를 탈취하는 스크립트를 작성
2. 공격자가 작성한 게시물을 사용자가 클릭
3. 사용자의 쿠키 정보를 공격자 서버로 전송
4. 쿠키 인젝션 도구를 이용하여 해당 사용자로 로그인
5. 사용자의 개인정보 탈취 및 회원 탈퇴
6. 사용자는 OyesMall 쇼핑몰에 로그인


공격자가 작성한 게시물을 사용자들이 클릭하면 사용자PC의 웹 브라우저에 악성스크립트가 실행이 된다. 실행된 악성 스크립트에 의해 사용자 PC의 헤더 정보가 공격자 서버로 전송 된다.



쿠키 편집 도구를 이용해서 탈취한 쿠키값을 주입하면 해당 사용자로 로그인이 되고 회원 정보 수정 게시판으로 이동하여 회원 정보를 수집한다.



회원 정보 수집이 끝난 후 해당 사용자와 OyesMall 쇼핑몰에게 피해가 갈 수 있도록 해당 계정을 탈퇴 시킨다.



Stored XSS

XSS(Cross Site Scripting)는 동적인 웹페이지에서 사용자가 입력한 데이터를 웹 애플리케이션이 검증하지 않고 그대로 받아서 웹 브라우저로 보낼 때 발생되는 취약점이다.


XSS를 이용해서 사용자에게 영향을 줄 수 있는 행위는 Replay Attack, CSRF Attack, 웜/바이러스 배포, Phishing Attack 등이 있으며, 종류는 Stored XSS, Reflected XSS, DOM XSS가 존재한다.


Stored XSS란 공격자가 스크립트로 작성한 게시물을 사용자가 클릭시 사용자의 브라우저에서 스크립트가 실행될 수 있는 취약점이다.



서비스 위치 [HOME] > [Q&A]
서비스 URL http://10.10.0.15:83/demoshop/shop_board/shop_board_write.asp
파라미터 정보 name, home, content

Q&A 게시판에 단순히 경고창만 출력되는 스크립트를 작성하고, 해당 게시물을 클릭하면 XSS 취약점이 발생한 파라미터들은 사용자의 브라우저에 경고창을 출력한다.


점검 결과 작성자, Homepage, 내용 파라미터들은 XSS취약점이 존재한다.



페이지 파라미터 페이지 파라미터
Q&A Board 작성자 - name Q&A Board 제목 - title
Q&A Board E-mail - email Q&A Board 내용 - content
Q&A Board Homepage - home Q&A Board 비밀번호 - pwd


1. 공격자가 XSS 취약점이 존재하는 웹페이지에 스크립트를 작성
2. 사용자는 공격자가 작성한 게시물을 클릭
3. 사용자PC의 제어권을 공격자 서버로 전송
4. 사용자PC를 C&C로 이동
5. 공격자가 C&C에게 명령 하달
6. 사용자의 개인 정보 탈취

공격자가 OyesMall 쇼핑몰 Q&A 게시판에 공격자 서버(xssf url)로 전송되는 스크립트와 사용자의 흥미를 유발할 수 있는 제목을 작성한다.



공격자가 작성한 게시물을 사용자가 클릭하면 사용자의 브라우저에 악성 스크립트가 실행되고, 실행된 악성스크립트에 의해 공격자와 사용자는 세션이 맺어진다.



공격자와 세션을 맺은 사용자PC의 간단한 정보와 사용자가 OyesMall쇼핑몰에 로그인한 쿠키값이다.



사용자의 쿠키값으로 로그인 한 결과 정상적으로 로그인이 되었고 사용자의 정보를 확인하기 위해 회원정보수정 페이지로 이동하여 확인했다.



사용자를 C&C로 이동시키고 자동화 공격 모듈인 autowpn을 이용해서 사용자의 미터프리터 쉘을 획득한다.



사용자와 세션이 끊어지지 않도록 리버스 커넥션 백도어(bak.exe), 원격 관리 도구 백도어(rat_bak.exe)를 업로드하여 실행하면 리버스 커넥션 수행으로 사용자의 미터프리터 쉘을 획득한다.



재부팅이 되도 백도어를 자동으로 실행될 수 있도록 시작 레지스트리 값을 수정한다. 사용자가 재부팅을 하면 미터프리터 쉘이 열리고 시스템 권한의 쉘을 획득한다.



사용자가 입력한 값을 공격자 서버로 전송하기 위해 키로깅을 설치하고 사용자가 웹 사이트 접속시 아이디와 패스워드를 입력하면 공격자 서버로 전송된다.



공격자는 획득한 키값을 가지고 사용자가 접속한 웹사이트에 로그인을 한다.



cmd shell에서 diskpart 명령어로 사용자PC의 파티션을 확인해보면 “C:\” “D:\”가 존재한다.


미터프리터 쉘에서 D:\에 존재하는 모든 파일을 공격자 서버로 다운로드한다. 다운로드한 파일들을 살펴보면 가장 중요한 정보인 웹 사이트의 아이디와 패스워드 정보를 적어놓은 파일이 확인된다.



Reflected XSS

Reflected XSS란 공격자가 작성한 스크립트가 포함된 URL를 사용자에게 클릭하도록 유도하여 사용자의 브라우저에서 스크립트가 실행될 수 있는 취약점이다.



서비스 위치 [HOME] > [Quick Search]
서비스 URL http://10.10.0.15:83/demoshop/shop/shop_searchresult.asp
파라미터 정보 searchmode, frmSearchWord, x, y

Quick Search 매뉴에서 임의의 문자열을 입력하고 Burp Suite로 서버로 전송하려는 데이터를 중간에 잡아서 확인해보면 총 4개의 매개변수가 POST 방식으로 전달된다.


XSS취약점이 존재하는지 확인하기 위해 매개변수에 스크립트를 주입하여 GET 방식으로 전달해보면 frmSearchWord 매개변수가 취약하다.


그러나 이 매개변수는 모든 브라우저에서 실행될 떄 취약점이 발생되는 것이 아니며 Firefox, Safari, IE 6 브라우저에서만 취약점이 발생한다.




1. 공격자는 파워 블로그를 운영 -> 파워 블로그에 OyesMall URL 노출
2. 사용자는 URL를 클릭 -> OyesMall 쇼핑몰 이동
3. 사용자PC의 제어권을 공격자 서버로 전송
4. 사용자PC를 C&C로 이동
5. 공격자가 C&C에게 명령 하달
6. 사용자의 개인 정보 탈취

공격자는 자신의 파워 블로그에 OyesMall 쇼핑몰 봄신상 원피스 득템 후기라는 글을 작성한다.


이 떄 사용자들이 OyesMall 쇼핑몰 사이트에 연결될 수 있도록 악성스크립트가 삽입된 OyesMall URL을 노출시킨다.



사용자가 악성스크립트가 삽입된 OyesMall URL을 클릭하게 되면 OyesMall 쇼핑몰 사이트에 접속하게 되고, 동시에 사용자의 제어권이 공격자 서버로 전송된다. 



CSRF

CSRF(Cross Site Request Forgery)란 사용자의 요청을 변조해서 해당 사용자의 권한으로 악의적인 공격(게시판 조작, 회원정보수정, 상품구매 등)을 수행할 수 있는 취약점이다.


구분 XSS CSRF
공격 대상 클라이언트 서버
스크립트 사용 여부 스크립트 사용 스크립트 사용하지 않아도 공격 가능
공격 조건 취약점 발견 시 사용 가능 Request/Response 분석
공격 감지 감지 가능 감지 불가능


서비스 위치 [HOME] > …
서비스 URL http://10.10.0.15:83/ …
파라미터 정보

CSRF 취약점이 존재하는지 확인하기 위해 메인 페이지에서 [MTOM]반팔티 상품을 자동으로 장바구니에 담도록 하는 조작된 URL를 입력한다.



조작된 URL를 입력한 결과화면으로 서버측에서 REFERER를 검증하지 않아 장바구니에 상품이 담겨있다. 장바구니 웹 페이지 뿐만 아니라 서버로 요청하는 모든 웹페이지에 대해 CSRF 취약점이 존재한다.




1. 공격자가 게시판에 상품을 자동으로 결제가 되도록하는 스크립트를 작성
2. 사용자는 공격자가 작성한 게시물을 클릭
3. 웹서버는 사용자가 결제한 줄 알고 주문 처리
4. 조작된 배송지로 상품을 전달

특정 상품이 자동으로 결제 처리가 되는 스크립트로 공격자는 상품 결제 웹페이지를 분석 후 서버로 전달되는 파라미터들을 정리해서 게시판에 스크립트로 작성을 하고 사용자들이 클릭하기를 기다린다.



공격자가 작성한 게시물을 사용자가 클릭하면 외부적으로 “반팔티 후기 부탁드립니다” 라는 글씨만 보인다.


하지만, 내부적으로 해당 사용자의 권한으로 상품 구매가 완료되어 관리자는 구매자(사용자) 목록을 보고, 구매자(공격자)에게 상품을 배송한다.



취약점별 대응방안

패스워드 취약점

1. 서버측에서는 암호 복잡도 로직을 구현

2. 영문 대/소문자, 숫자, 특수문자 중 2가지 이상 조합하여 최소 10자리 설정

3. 영문 대/소문자, 숫자, 특수문자 중 3가지 이상 조합하여 최소 8자리 설정

4. 연속적인 숫자, 생일, 전화번호 등 추측하기 쉬운 개인정보 및 아이디와 비슷한 비밀번호는 사용하지 않는 것을 권고

5. 비밀번호에 유효기간을 설정하여 반기별 1회 이상 변경


인증 우회 취약점

1. 세션 유지 시간을 짧게 설정

2. 세션 토큰 암호화 및 암호화 된 값의 체크섬 확인

3. 암호화 프로토콜 사용

4. 중요 페이지에 대해 로그인 인증 단계를 마련


XSS 취약점

1. 사용자가 입력 가능한 게시판 등과 같은 페이지에서 HTML이나 자바스크립트 기능이 필요하지 않는 경우 HTML,자바스크립트를 허용하지 않는다.

2. HTML, 자바스크립트를 허용해야 할 경우 꼭 필요한 태그만 허용한다.

3. 사용자가 입력한 값에 대해서는 항상 서버측에서 검증한다.(HTMLEncode,replace)

4. HTML 인코딩을 사용하여 출력값을 제공한다.

5. HttpOnly를 활성화 시킨다.

6. 로그인을 처리할 때 IP와 Session을 하나로 묶어서 A라는 세션은 xxx.xxx.xxx.xxx인 IP에서만 사용이 가능하게 한다.

7. 중요한 정보는 쿠키에 저장하지 않도록 한다.

8. XST를 차단하기 위해 TRACE Method를 금지시킨다.

9. 사용자는 웹브라우저에서 쿠키 사용을 금지시킨다(인터넷옵션-개인정보-사이트)

10. 사용자는 Internet Explorer의 최신 패치를 적용시킨다.

11. 사용자는 여러 웹사이트에 서로 다른 패스워드를 사용하고 주기적인 패스워드를 변경해야 한다.


CSRF 취약점

1. XSS 취약점에 대한 대응방안

2. 서버로 페이지 요청시 POST 메소드를 사용

3. Referer 체크

4. 각각의 웹페이지 요청시 보안 토큰을 생성 후 전송, 비교

5. 중요한 정보는 항상 Email, 전화, 문자 등을 이용해 재인증 하도록 한다.


▶ DVWA 취약점 분석

▶ XSSF(Cross Site Scripting Framework) 사용법

▶ 악성메일 공격패턴

▶ 칼리리눅스 레지스트리

▶ CVE-2014-6332 취약점 분석 (Internet Explorer)

▶ sqlmap - SQL Injection

▶ SQL Injection INTO OUTFILE - WebShell, Backdoor Upload

  • 카카오톡-공유
  • 네이버-블로그-공유
  • 네이버-밴드-공유
  • 페이스북-공유
  • 트위터-공유
  • 카카오스토리-공유