on
[정보보안기사] 82강. 웹 어플리케이션 취약점 03 | CSRF, Command...
[정보보안기사] 82강. 웹 어플리케이션 취약점 03 | CSRF, Command...
3. 크로스 사이트 요청 변조(CSRF)
1. 개요
웹 어플리케이션에서 정상적인 경로를 통한 요청과 비정상적인 경로를 통한 요청을 서버가 구분하지 못할 경우 공격자가 스크립트 구문을 이용하여 정상적인 사용자로 하여금 조작된 요청을 전송하도록 하여 게시판 설정 변경, 회원 정보 변경 등의 문제가 발생할 수 있는 취약점 이다.
이다. 공격자가 GET 또는 POST 방식의 HTTP 요청을 통해 희생자 모르게 공격자의 의도된 행위를 수행하게 하여 특정 피해를 주는 형태이다.
공격을 당한 사용자의 권한을 공격자가 그대로 사용하게 되므로 사용자의 권한 수준에 따라 그 피해범위가 달라질 수 있다.
2. 실습
1) 취약한 사이트 실습
① 공격자는 게시판을 이용하여 조작된 요청정보를 포함하는 게시물 등록
img 태그의 src 속성을 통해 조작된 요청을 발생시키고 있다. 요청 내용을 살펴보면, 사용자 정보 변경 페이지(modify.php)를 요청하면서, pass 파라미터와 pass_confirm 파라미터를 이용하여 공격자가 원하는 비밀번호 변경을 수행한다.
3. 취약점 판단기준
CSRF 취약점이 발생할 수 있는 입력 가능한 폼에 img 태그의 src 속성을 이용하여 조작된 요청을 입력, 요청이 실행되면 취약한 것으로 판단
4. 대응책
웹 어플리케이션에 존재하는 모든 http 요청 내에 예측할 수 없는 임의의 토큰을 추가하여 정상적인 요청과 비정상적인 요청을 판별하는 것을 권장 사용자가 요청한 내용이 위조된 요청인지 여부를 확인하기 위해서는 사용자 접근권한 정보가 포함된 토큰을 이용하여 세션정보에 포함된 포큰 값과 요청에 포함된 토큰 값을 비교한다. 중요한 기능에 대해서는 사용자 세션검증과 더불어 재인증 유도
크로스 사이트 스크립트(XSS)와 공격 방식이 유사하므로 XSS에 대한 취약점 제거 필요
4. 운영체제 명령 실행(Command Execution) 취약점
1. 개요
웹 어플리케이션에서 system(), exec()와 같은 시스템 명령어를 실행할 수 있는 함수를 제공하며 사용자 입력값에 대한 필터링이 제대로 이루어지지 않을 경우 공격자가 시스템 명령어를 호출할 수 있는 취약점 을 말한다.
을 말한다. 공격자는 취약점을 이용하여 시스템 계정 정보 유출, 백도어 설치, 관리자 권한 탈취 등의 공격을 수행한다.
2. 실습
1) 취약한 사이트 실습
① 공격자는 입력 폼에 시스템 명령어 삽입
IP를 입력하면 ping 테스트한 결과를 반환해주는 페이지로 공격자는 IP 외에 ; 를 이용하여 시스템 명령어를 추가로 삽입, /etc/passwd 유출을 시도하고 있다.
UNIX/Linux 시스템에서 2개 이상의 명령어를 실행하는 방법 빠른 논리 연산(Short Circuit Logical Operation)
② GET 요청 URL 파라미터에 포함되어 서버 전달
취약한 웹서버로 ip 파라미터에 시스템 명령어를 포함한 GET 요청 메시지가 전달되고 있다. (디코딩 시 127.0.0.1;cat /etc/passwd)
Form 데이터 URL 인코딩 시 공백은 + 로 변환된다.
2) 안전한 사이트 실습
① 사용자 입력값에 대한 검증
사용자 입력값 체크를 통해 허용하지 않는 문자(시스템 명령어를 실행할 수 있는 ; && || | 등의 문자를 포함한 경우 경고 메시지 반환
3) PHP 운영체제 명령어 실행 함수(APM 환경)
PHP에서 사용할 수 있는 운영체제 명령어 실행 함수 shell_exec(), passthru(), exec(), system()
3. 취약점 판단 기준
운영체제 명령 실행 취약점이 발생할 수 있는 입력 가능한 폼에 명령어를 삽입하여 해당 명령어가 실행되면 취약한 것으로 판단
4. 대응책
사용자 입력값에 운영체제 명령어를 사용해야 한다면 허용 가능한 명령어 리스트(명령어 화이트 리스트)를 선정하여 해당 명령어만 실행할 수 있도록 설정한다.
웹 어플리케이션 운영 상 운영체제 명령어를 사용해야 한다면 허용 가능한 명령어 리스트(명령어 화이트 리스트)를 선정하여 해당 명령어만 실행할 수 있도록 설정한다.
from http://cho2cee.tistory.com/136 by ccl(A) rewrite - 2021-11-23 03:27:03