모의해킹 취약한 접근제어 사례
1. 점검 개요
대상 : abcdef 대표 서비스 모의해킹 수행
www.abcdef.com, api.abcdef.com, aaaa.abcdef.com,
help.abcdef.com aa.abcdef.com, bbbb.abcdef.com, caaa.abcdef.com
(이외 abcdef 서비스 관련 url 다수)
2. 취약점 분석 결과 요약
1. abcdef 서비스 개인정보 password 변경 페이지 취약
2. abcdef 서비스 개인정보 사진(file) 파일 업로드 페이지 취약
3. 고객센터 (help) 페이지 취약 (20여개 취약점)
4. 특정 페이지 중요 정보 노출
5. 외부 노출 불필요 페이지 다수 존재
OWASP TOP 10 취약 항목에 해당됨
A01: Broken Access Control (취약한 접근 제어: 권한/인가)
엑세스 제어는 사용자가 권한을 벗어나 행동할 수 없도록 정책을 시행합니다. 만약 엑세스 제어가 취약하면 사용자는 주어진 권한을 벗어나 모든 데이터를 무단으로 열람, 수정 혹은 삭제 등의 행위로 이어질 수 있습니다.
A06: Vulnerable and Outdated Components (취약하고 지원이 종료된 구성 요소)
3. 점검 상세 내용
점검 개요
- 특정 이메일 솔루션 취약점 분석
- 공격자가 URL Parameter 조작을 통하여 다른 사용자의 리소스 접근 가능 (e메일)
1) abcdef 서비스 개인정보 password 변경 페이지 취약
로그인 과정 없이(API Token 정보 없이) URL 호출로 사용자 정보 노출 상태
예) https://api.abcdef.com/…/member/…?site_user=abcd@abcdef.com
– 계정(email ID)을 알고 있다면 모든 사용자 패스워드 변경 가능
– 패스워드 변경전 (site_password = 1d907c5671…..)
– 패스워드 임으로 변경 완료
– 200 ok code (PUT Method request 정상) 성공
– 패스워드 변경 확인 (site_password = f2476b273d1…..)
* 취약점 분석 요약
- Email ID만 알고 있으면 모든 사용자 정보
- Email ID만 알고 있으면 모든 사용자 정보
- site_id, site_pasword, site_member_num 웹 노출
Password 는 SHA256 으로 암호화 되어 있으나, salt 키나 security key 조합이 없다면 유추가능 - 현재 패스워드 암호화 과정은 단순 SHA256 hash는 아닌것으로 추정됨
- 패스워드 업데이트 가능 -> 악의 적인 목적으로 모든 사용자 사이트 로그인
- 불가 상태로 만들수 있는 리스크 존재
2) abcdef 서비스 개인정보 페이지 파일 업로드 취약점
web proxy 프로그램 사용으로 이미지파일 외 (jpg,png,gif)
악성 코드 파일 (html,sh,js,jsp등) 업로드 가능
– 확장자 변경 후 -> 업로드 가능
– 파일 업로드 위치 경로 확인
– 업로드 된 html 파일 url 호출 화면 (악성 파일 업로드 가능)
* 취약점 분석 요약
- 업로드시 파일 확장자 변경으로 악성 코드 .html 파일 업로드 가능
이외 .sh .py .jsp 코드등은 업로드는 되는 상태이나 단순 nginx 웹서버 실행중이므로
url 호출시 실행은 불가 - CGI, Tomcat, nodejs 등 서버에서 실행중이라면 다른 확장자 스크립트도 실행가능
예) reverse_connection 가능, 서버 shell 권한 획득 가능 - 현재 악의 적인 목적으로 .html 파일에 업로드 후 악성 코드 유포지로 활용 가능
예) html 로 피싱 사이트 만들어서 업로드 -> 악성코드 삽입 ->
기타 다른 사이트 게시판에 link -> iframe 형태의 clickjacking 사이트로 위장 가능
3) 고객센터 (help) 페이지 취약 / wordpress 사용중
– 사용중인 wordpress 버전 취약점 20여개 존재
– “관리자” 계정 및 관리자 권한 탈취 가능
http://help.abcdef.com/wp-login.php
– 로그인 가능 (xxxadmin / xxxadmin )
– 계정 정보 확인 가능 및 관리자 페이지 접속 성공
– DB Password 정보 페이지
– “web shell” hacking code upload 가능 / metasploit webshell upload success
* 취약점 분석 요약
- WordPress 오픈 소스 특성상 현재 사용중인 버전의 취약성 다수 존재
- 관리자 권한(계정) 탈취 가능 -> 모든 사이트 페이지 변조 가능 (악성코드 삽입등)
- 관리자로 로그인후 새로운 계정(관리자 권한) 생성 가능
- 게시판 내용에 악성 스크립트 난독화 형태로 삽입 가능
- web shell 업로드 가능 상태
- Reverse_tcp 는 다행히 outbound 통신 되지 않는 상태
- 외부에 불필요하게 노출되어 있는 페이지 존재 (php source download 가능)
- 예) wget –no-check-certificate https://help.abcdef.com/xxxxxOnline.php
wget –r –no-check-certificate https://help.abcdef.com/wp-includes
4) 특정 페이지 중요 정보 노출
로그인 id , password, DB 이름, DB 스키마, DB 서버 IP, Port 등
dbuser007 / xxxxxx
xxxxxxx_bank (DB명)
xxxxxxx (스키마)
10.1x.x.x (DB IP)
xxxx (DB port)
* 취약점 분석 요약
- 악의적 목적 사용자가 알아 보기 어렵도록 data 에 대한 encryption (암호화) 필요
- REST API 형태의 서비스이므로 중요 민감 정보는 제외
- 실제 json data body size 만 커짐 (동접이 늘어나면 성능 이슈 발생 여지)
- 페이지별 HTTP Method allow(허용) 에 대한 GET,PUT,DELETE,POST 등 수시 점검
3. 점검 결과
불특정 다수 가입자 기반 Portal 서비스 기준으로 모의해킹후 결과 도출 (예: naver.com / 누구나 가입할수 있는 Portal 서비스)
1) 로그인 과정 없이(token 미인증) 개인 정보 페이지 노출 상태
회원 가입 후 기타 다른 사용자 password 변경 가능
악의적 목적으로 로그인 불가 상태로 만들수있음
Brute force 형태의 계정에 대한 공격 가능
2) 개인정보 페이지 “사진 파일 업로드” 취약점
업로드 파일 확장자 필터 우회 가능) 악성 코드 업로드 가능, 악성 코드 유포지로 활용가능
3) 고객센터 페이지 “관리자” 권한 획득 가능 (wordpress 사용)
web shell 업로드 가능
관리자 권한 탈취 가능 상태 -> 악의적인 목적으로 다양하게 사용될수 있는 상태
이외 20여개 취약점 존재 (예: 특정 plugin source 취약점 등)
4) 특정 중요 페이지 DB 정보, 계정 정보등 민감한 data 노출
- URL Parameter 조작을 통하여 인증 우회 -> e메일 내용 해킹 가능
- 비정상 접속으로 타 사용자 “e메일” 내용 확인 가능 (받은편지함, 보낸편지함 등)
- 중요 민감 정보 탈취 가능 (예: 패스워드, 개인정보등)
- 탈취된 e메일 내 “첨부 파일” 직접 다운로드 가능 (예: 계약서, 견적서 등)
4. 권고 사항 및 조치
1) 외부에서 인증 과정 없이 접속 불가능하게 취약 URL (개인정보 페이지 등)에 대한 전수 조사
2) 개인정보 수정 페이지 -> 패스워드 변경시 2차 검증 등의 추가 개발 로직 필요
3) 파일 업로드 소스 시큐어 코딩 필요
현재 업로드시 파일명 자동 변경 -> 파일명 자체를 .sh .html .jsp 등 확장자 변경 가능
파일명 “html” -> 예: samplefile.html
4) 고객센터 페이지(wordpress) 버전 업그레이드 및 취약성 제거
관리자 로그인 페이지 -> 특정 IP 대역만 허용
관리자 계정 -> 추측하기 어려운 패스워드로 변경
5) 외부 노출 불필요 페이지 전수 조사후 제거
Nginx 등 directory listing 환경 설정 수정 검토
Django 프레임워크 debug true 값 변경 (개발서버)
부득이하게 노출 필요시 인증 프로세스 구현
- e메일 서비스 페이지 인증 절차 프로세스 강화
- 세션 ID등 전달된 파라미터 및 입력값 검증 절차 강화
- 소스 수정 불가피
기타 참고사항
1) 현재 서비스 개발중인 미완성 페이지에 대해서도 점검 필요
XSS, CSRF, SQL Injection 등의 취약성 점검필요
2) REST API 기반 서비스 특성상 HTTP Method (GET,PUT,DELETE,POST 등) Allow
페이지에 대한 brute force 형태 공격 차단 필요 단, 일반적인 정상 패턴으로 들어오는 공격은 차단 불가
예, burp suite, ZAP Proxy 프로그램 사용 -> 파라미터 값 변조, 무작위 대입법
3) abcdef 상단 보안 장비 IPS 기능 및 웹 방화벽 활용 및 수시 점검 필요
4) 보안 장비 외 서비스 개발 로직 에서의 보안 리스크 대한 수시 점검 필요
1차적으로 패턴(시그니처) 기반으로 보안 장비(IPS,WAF등)에서 방어가 가능하지만,
대부분의 공격 형태는 서비스(개발 로직) 취약점을 통한 방법이 대부분임
5) 보안적 측면 외 특정 페이지 (예: xxx 신용카드 조회등 ) 성능 이슈 부분도
점검 필요 악의적 목적의 DOS성 공격 형태로 서비스에 악영향 미칠 가능성 존재