16
에에 에에 12 에 에 에에에에 에에에 E-mail : [email protected] Writing by Ilsun Choi 1

Error Expose

Embed Size (px)

Citation preview

Page 1: Error Expose

Writing by Ilsun Choi 1

에러 노출12 차 웹 모의해킹

최일선

E-mail : [email protected]

Page 2: Error Expose

Writing by Ilsun Choi 2

Index

1. 에러 노출 개요

2. 에러 노출의 종류• 1) 데이터베이스 스키마 노출• 2) 운영체제와 어플리케이션 정보• 3) 디렉터리 정보 노출

3. 에러 노출과 SQL Injection 과의 관계

4. 모의실습• 1) 에러 출력• 2) 에러 노출 자동 점검

5. 조치방안• 1) IIS• 2) PHP• 3) Apache• 4) Tomcat

E-mail : [email protected]

Page 3: Error Expose

Writing by Ilsun Choi 3

1. 에러 노출 개요 사용자의 실수 또는 고의적인 입력 데이터에 대해 어플리케이션은 시스템 에러를 노출시키는 취약점을 가질

수 있다 .

에러 노출에는 웹 어플리케이션 스택 정보 및 데이터베이스 덤프 등의 내용이 포함될 수 있어 공격자에게는 잠재적인 취약점을 알려주는 요인으로 , 정상적인 사용자에게는 사이트의 신뢰성을 저해시키는 요인으로 작용할 수 있다 .

E-mail : [email protected]

http://www.daimto.com/google-api-error-list/

Page 4: Error Expose

Writing by Ilsun Choi 4

2. 에러 노출의 종류 > 1) 데이터베이스 스키마 노출 SQL Injection 은 고의적으로 에러를 발생시켜 DB 테이블 혹은 필드 정보를 취득하는 기법 시스템 측면에 적절한 에러 처리가 없기 때문에 발생

E-mail : [email protected]

Page 5: Error Expose

Writing by Ilsun Choi 5

관련 변수나 설정 값 등을 확인 phpinfo() 함수를 이용하여 작성한 페이지 관련 설정 정보를 노출시켜 에러노출여부를 확인 가능

E-mail : [email protected]

2. 에러 노출의 종류 > 2) 운영체제와 어플리케이션 정보

Page 6: Error Expose

Writing by Ilsun Choi 6

웹 어플리케이션의 에러를 통해 시스템 디렉터리 정보가 노출될 수 있음

E-mail : [email protected]

2. 에러 노출의 종류 > 3) 디렉터리 정보 노출

Page 7: Error Expose

Writing by Ilsun Choi 7

3. 에러 노출과 SQL Injection 과의 관계 [1/3] SQL Injection : GET, POST 요청 필드 , HTTP 헤더 값 , 쿠키 값 변조 특수문자 ( 싱글쿼터 (‘) 혹은 세미콜론 (;) 삽입에 따라 에러 노출

1. MSSQL Server 에러 정보 예Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14’

[Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the character string ‘’.

/target/target.asp, line 113

2. MySQL 에러 정보 예You have an error in your SQL syntax; check the manual that corrensponds to your MySQL server version for the right syntax to use near ‘\’’ at line 1

3. Oracle 에러 정보 예ORA-00933: SQL command not properly ended

4. PostgreSQL 에러 정보 예Query failed: ERROR: syntax error at or near

“’” at character 56 in /www/site/test.php on line 121.

E-mail : [email protected]

Page 8: Error Expose

Writing by Ilsun Choi 8

SQL Injection 응답 코드 500: 일반적으로 시스템 에러가 발생되는 경우 200: 에러가 정상적인 페이지에 중간에 삽입되는 경우

Union SQL Injection : 2 개 이상의 쿼리를 요청 공격자는 원래 요청에 추가 쿼리를 삽입하여 정보를 얻어냄

E-mail : [email protected]

3. 에러 노출과 SQL Injection 과의 관계 [2/3]

널 삽입 수에 따른 필드 개수 확인 결과select * from test where id=1 union all select null; 에러 발생select * from test where id=1 union all select null, null;

에러 발생

select * from test where id=1 union all select null, null, null;

에러 없음

Page 9: Error Expose

Writing by Ilsun Choi 9

3. 에러 노출과 SQL Injection 과의 관계 [3/3] SQL Injection 사례

CVE: 2014-9178 WordPress Client Document Manager Plugin 2.4.1 – SQL Injection id 파라미터에 SQL 인젝션 발생

having 이나 group by 를 통하여 에러구문 출력 시 필드 이름을 얻을 수 있다 .

E-mail : [email protected]

Page 10: Error Expose

10

4. 모의실습 > 1) 에러 출력

E-mail : [email protected] Writing by Ilsun Choi

적절한 예외 처리 실패 시 에러 구문

Page 11: Error Expose

Writing by Ilsun Choi 11

4. 모의실습 > 2) 에러 노출 자동 점검 파로스를 사용하여 룰을 추가한 뒤 점검 쿼리에 추가된 패턴 : ‘or

감지 패턴 : Warning mysql_fetch

E-mail : [email protected]

Page 12: Error Expose

Writing by Ilsun Choi 12

5. 조치방안 > 1) IIS

500 대 에러 발생 시 404 에러페이지 출력 인터넷 정보 서비스 – 오류페이지 – 500-502 편집 – 404 페이지 서버 재시작 후 정상 동작하는 지 반드시 확인

E-mail : [email protected]

Page 13: Error Expose

Writing by Ilsun Choi 13

C:\APM_Setup\php.ini

display_errors = Off

E-mail : [email protected]

5. 조치방안 > 2) PHP

Page 14: Error Expose

Writing by Ilsun Choi 14

C:\APM_Setup\Server\Apache\conf\hpptd.conf

Error Document [ 에러코드 ] [ 이동 페이지 ] 형식을 사용 : 에러 발생 시 해당 페이지로 이동

주석 처리 (#) 제거

아파치 버전 정보 노출 차단 ( 동일한 파일 , httpd.conf) ServerTokens ProductOnly ServerSignature Off

E-mail : [email protected]

5. 조치방안 > 3) Apache

Page 15: Error Expose

Writing by Ilsun Choi 15

root\WEB-INF\web.xml 파일에 에러 처리

소스에 직접 에러 처리

E-mail : [email protected]

5. 조치방안 > 4) Tomcat

Page 16: Error Expose

참고문헌 웹 모의해킹 및 시큐어코딩 진단 가이드 , 최경철 외 1 명 지음

E-mail : [email protected] Writing by Ilsun Choi 16