1. 에러 노출
12차 웹 모의해킹
최일선
E-mail : isc0304@naver.com Writing by Ilsun Choi 1
2. Index
1. 에러 노출 개요
2. 에러 노출의 종류
• 1) 데이터베이스 스키마 노출
• 2) 운영체제와 어플리케이션 정보
• 3) 디렉터리 정보 노출
3. 에러 노출과 SQL Injection과의 관계
4. 모의실습
• 1) 에러 출력
• 2) 에러 노출 자동 점검
5. 조치방안
• 1) IIS
• 2) PHP
• 3) Apache
• 4) Tomcat
E-mail : isc0304@naver.com Writing by Ilsun Choi 2
3. 1. 에러 노출 개요
사용자의 실수 또는 고의적인 입력 데이터에 대해 어플리케이션은 시스템 에러를 노출시키는 취약
점을 가질 수 있다.
에러 노출에는 웹 어플리케이션 스택 정보 및 데이터베이스 덤프 등의 내용이 포함될 수 있어 공격
자에게는 잠재적인 취약점을 알려주는 요인으로, 정상적인 사용자에게는 사이트의 신뢰성을 저해
시키는 요인으로 작용할 수 있다.
E-mail : isc0304@naver.com Writing by Ilsun Choi 3
http://www.daimto.com/google-api-error-list/
4. 2. 에러 노출의 종류 > 1) 데이터베이스 스키마 노출
SQL Injection은 고의적으로 에러를 발생시켜 DB 테이블 혹은 필드 정보를 취득하는 기법
시스템 측면에 적절한 에러 처리가 없기 때문에 발생
E-mail : isc0304@naver.com Writing by Ilsun Choi 4
5. 관련 변수나 설정 값 등을 확인
phpinfo() 함수를 이용하여 작성한 페이지
관련 설정 정보를 노출시켜 에러노출여부를 확인 가능
E-mail : isc0304@naver.com Writing by Ilsun Choi 5
2. 에러 노출의 종류 > 2) 운영체제와 어플리케이션 정보
6. 웹 어플리케이션의 에러를 통해 시스템 디렉터리 정보가 노출될 수 있음
E-mail : isc0304@naver.com Writing by Ilsun Choi 6
2. 에러 노출의 종류 > 3) 디렉터리 정보 노출
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 : isc0304@naver.com Writing by Ilsun Choi 7
8. SQL Injection 응답 코드
500: 일반적으로 시스템 에러가 발생되는 경우
200: 에러가 정상적인 페이지에 중간에 삽입되는 경우
Union SQL Injection : 2개 이상의 쿼리를 요청
공격자는 원래 요청에 추가 쿼리를 삽입하여 정보를 얻어냄
E-mail : isc0304@naver.com Writing by Ilsun Choi 8
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; 에러 없음
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 : isc0304@naver.com Writing by Ilsun Choi 9
10. 4. 모의실습 > 1) 에러 출력
E-mail : isc0304@naver.com Writing by Ilsun Choi 10
적절한 예외 처리 실패 시 에러 구문
11. 4. 모의실습 > 2) 에러 노출 자동 점검
파로스를 사용하여 룰을 추가한 뒤 점검
쿼리에 추가된 패턴 : ‘or
감지 패턴 : Warning mysql_fetch
E-mail : isc0304@naver.com Writing by Ilsun Choi 11
12. 5. 조치방안 > 1) IIS
500 대 에러 발생 시 404 에러페이지 출력
인터넷 정보 서비스 – 오류페이지 – 500-502 편집 – 404 페이지
서버 재시작 후 정상 동작하는 지 반드시 확인
E-mail : isc0304@naver.com Writing by Ilsun Choi 12
14. C:APM_SetupServerApacheconfhpptd.conf
Error Document [에러코드] [이동 페이지] 형식을 사용 : 에러 발생 시 해당 페이지로 이동
주석 처리(#) 제거
아파치 버전 정보 노출 차단 (동일한 파일, httpd.conf)
ServerTokens ProductOnly
ServerSignature Off
E-mail : isc0304@naver.com Writing by Ilsun Choi 14
5. 조치방안 > 3) Apache
15. rootWEB-INFweb.xml 파일에 에러 처리
소스에 직접 에러 처리
E-mail : isc0304@naver.com Writing by Ilsun Choi 15
5. 조치방안 > 4) Tomcat
16. 참고문헌
웹 모의해킹 및 시큐어코딩 진단 가이드, 최경철 외 1명 지음
E-mail : isc0304@naver.com Writing by Ilsun Choi 16