일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 빌드도구
- Catalyst Optimizer
- 프로그래머스 큰 수 만들기
- 실행엔진
- 하둡에코시스템
- 스파크
- Spark 최적화
- 데이터 수집
- AWS Crawler
- 지연연산
- 프로그래머스힙
- kafka 설치
- 카프카
- 데이터파이프라인
- 하둡
- 하둡2.0
- Spark
- lazy evaluation
- 프로그래머스
- freenom
- Databricks
- ORACLE문법
- 데이터엔지니어링
- 하둡1.0
- EMR 구조
- 문맥교환
- 데이터베이스복사
- 런타임데이터영역
- 서버간 복사
- ORACLE MSSQL차이
- Today
- Total
띵유로그
[SQL Server] xp_cmdshell오류 해결 방법과 보안 취약점 본문
xp_cmdshell을 통해 BCP 명령어를 실행해서 대량의 데이터를 가져올 일이 있었습니다만 여러 오류를 만났습니다.
오류 해결 과정을 기록해둡니다.
1. xp_cmdshell 이 activate 되어있는지 확인합니다.
EXEC sp_configure 'show advanced options', 1
go
RECONFIGURE
go
EXEC sp_configure 'xp_cmdshell', 1
go
RECONFIGURE
go
2. SQL Server 구성관리자에서 TCP/IP를 사용중인지 확인합니다.
=> SQL Server 네트워크 구성 -> MSSQLSERVER에 대한 프로토콜 -> TCP/IP 사용으로 변경
3. . 을 찍기....
소유한 데이터베이스 앞에 .를 찍습니다.
xp_cmdshell는 시스템데이터베이스인 master 데이터베이스의 시스템확장 저장프로시져입니다.
따라서 EXEC .master..xp_cmdshell 'dir C:\' 와 같이 실행하면 정상 실행됩니다.
그냥 EXEC .xp_cmdshell 'dir C:\' 로 실행해도 됩니다.
(추측컨데, 현재 접속한 server 의 SP라고 명시적으로 지정해주는 것같습니다... 누가 제발 알려주세요..)
https://stackoverflow.com/questions/27744071/xp-cmdshell-transport-level-error에서 참고했습니다.
아래 오류 메세지를 반환했다면 3번 방법으로 해결될 확률이 높습니다.
서버로부터 결과를 수신하는 동안 전송 수준 오류가 발생했습니다. (provider: TCP Provider, error: 0 - 세마포 제한 시간이 만료되었습니다.)
xp_cmdshell 취약점
mssql 의 가장 큰 보안 취약점은 xp_cmdshell 을 이용한 injection 해킹입니다.
xp_cmdshell을 사용한다면 cmd창에서 날릴수 있는 모든 명령어를 날릴 수 있다보니, 암호를 변경하고 사용자 활성화를 할 수 있습니다. 따라서 xp_cmdshell은 되도록이면 비활성화 해두는 것이 좋습니다.
참고 : https://iseogs.tistory.com/74 / http://ankyu.entersoft.kr/lecture/security/05_security_01.asp
'데이터베이스' 카테고리의 다른 글
[DB] ORACLE 문법 VS SQLSERVER 문법 (0) | 2022.10.11 |
---|---|
[SQL Server] 연결된서버에 쿼리 실행(openquery, execute) (0) | 2022.02.07 |
[MSSQL] SQL Server 상하위 버전간 대용량 데이터베이스 복사 (0) | 2020.08.21 |
SQL 언어 (헷갈림사전) (0) | 2019.12.06 |