D-23: xp_cmdshell 사용 제한
분류: DBMS
중요도: 상
개요
점검 내용
xp_cmdshell의 사용 여부 점검
점검 목적
불필요하게 활성화되어 있는 xp_cmdshell를 제한하여 공격자의 무단 접근 및 악성코드의 실행 위험을 감소시키기 위함
보안 위협
해킹 툴에서 자주 이용되고 있으며, 권한 상승이나 데이터 유출 등의 위험이 존재함
참고
-
점검 대상 및 판단 기준
대상
MSSQL
판단 기준
✅ 양호: xp_cmdshell이 비활성화 되어 있거나, 활성화 되어 있으면 다음의 조건을 모두 만족하는 경우
- public의 실행(Execute) 권한이 부여되어 있지 않은 경우
- 서비스 계정(애플리케이션 연동)에 sysadmin 권한이 부여되어 있지 않은 경우
❌ 취약: xp_cmdshell이 활성화 되어 있고, 양호의 조건을 만족하지 않는 경우
조치 방법
xp_cmdshell 설정 값을 0 또는 False로 설정
조치 시 영향
xp_cmdshell을 사용하여 운영체제 명령을 실행하던 서비스 및 스크립트가 동작하지 않을 수 있음
점검 및 조치 사례
MSSQL
[ xp_cmdshell 사용이 불필요한 경우 ]
Step 1) SQL Server Management Studio > 개체 탐색기 > 컴퓨터 이름 우클릭 > 패싯 > 일반
Step 2) XPCmdShellEnabled 값 확인
2.1) Microsoft SQL Server Management Studio에서 확인

2.2) 퀴리문으로 확인
참고
value가 1이면 활성화, 0이면 비활성화 되어 있는 상태
Step 3) XPCmdShellEnabled 값을 false로 설정
3.1) Microsoft SQL Server Management Studio에서 설정 SQL Server Management Studio > 개체 탐색기 > 컴퓨터 이름 우클릭 > 패싯 > 일반
3.2) 퀴리문으로 설정
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'xp_cmdshell', 0;
GO
RECONFIGURE;
GO
[ xp_cmdshell 사용이 필요한 경우 ]
Step 1) xp_cmdshell의 public 실행 권한 제거
1.1) Microsoft SQL Server Management Studio에서 제거
SQL Server Management Studio > 개체 탐색기 > [컴퓨터 이름] > 데이터베이스 > 시스템 데이터베이스 > master > 프로그래밍 기능 > 확장 저장 프로시저 > 시스템 확장 저장 프로시저 > sys.xp_cmdshell > 마우스 우클릭 > 속성 > 사용권한에서 public에 대한 사용권한에 ‘실행’ 권한 제거
1.2) 퀴리문으로 public에 대한 실행 권한 제거
Step 2) 서비스 계정(애플리케이션 연동 등)의 sysadmin 권한 제거
2.1) Microsoft SQL Server Management Studio에서 제거 SQL Server Management Studio > 개체 탐색기 > [컴퓨터 이름] > 보안 > 로그인 > [각 계정 선택] > 마우스 우클릭 > 속성 > 서버 역할에서 sysadmin 권한 제거
2.2) 퀴리문으로 서비스 계정의 sysadmin 권한 제거 * sysadmin 권한이 부여된 계정 확인
* sysadmin 권한이 부여된 계정에 대해 권한 제거