CODEDRAGON ㆍSecurity/SecureCoding
Microsoft SQL Server에 대한 SQL 삽입 공격
Microsoft SQL Server는 운영을 좀 더 편리하고 효율적으로 하기 위해 내부에 여러 가지 확장 저장 프로시저(Extended Stored Procedure)를 가지고 있습니다.
Microsoft SQL Server의 주요 테이블
테이블 | 설명 |
sysobjects | 데이터베이스에 있는 모든 객체들을 제공 |
sysdatabases | 데이터베이스의 생성 날짜, 파일명, 경로 정보를 제공 |
syscolumns | 테이블과 뷰에 있는 각 컬럼 정보를 제공 |
sysfiles | 선택한 특정 데이터베이스에 존재하는 모든 파일 정보를 제공 |
syspermissions | 사용자, 그룹, 역할에 대해 부여되거나 거부된 허가 항목 정보를 제공 |
systypes | 데이터베이스에 있는 모든 시스템 데이터 유형과 사용자 정의 데이터 유형을 제공 |
Sysusers | 데이터베이스의 모든 윈도우 사용자와 SQL 서버 사용자 정보를 제공 |
Microsoft SQL Server에서 데이터베이스 구조 발견하기
사용자 정의 테이블 가져오기
SELECT name FROM sysobjects WHERE xtype='U' |
컬럼 이름 가져오기
SELECT name FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = 'column이름을 얻기 원하는 table이름') |
Microsoft SQL Server의 저장 프로시저
구분 | 저장 프로시저 | 설명 |
명령어 실행 | xp_cmdshell | 관리자 권한으로 윈도우 명령어를 실행 |
레지스트리 관련 | xp_regaddmultistring | 레지스트리 키에 문자열을 추가 |
레지스트리 관련 | xp_regdeletekey | 레지스트리 키를 삭제 |
레지스트리 관련 | xp_regdeletevalue | 레지스트리 키에 있는 값을 삭제 |
레지스트리 관련 | xp_regenumkeys | 레지스트리 키를 나열 |
레지스트리 관련 | xp_regenumvalues | 레지스트리 키에 있는 값을 나열 |
레지스트리 관련 | xp_regread | 레지스트리 키를 읽음 |
레지스트리 관련 | xp_regremovemultistring | 레지스트리 키에 있는 여러 문자열을 삭제 |
레지스트리 관련 | xp_regwrite | 레지스트리 키를 작성 |
유용한 저장 프로시저
윈도우 명령어 실행하기
EXEC master.dbo.xp_cmdshell 'cmd.exe dir c:\\' |
비활성화로 설정된 xp_cmdshell을 활성화시키는 명령어
'Microsoft SQL Server 2005'부터는 기본적으로 xp_cmdshell을 비활성화로 설정해 놓았습니다.
EXEC sp_configure 'show advanced otions', 1 RECONFIGURE
EXEC sp_configure 'xp_cmdshell', 1 RECONFIGURE |
레지스트리 키 열람
EXEC xp_regread HKEY_LOCAL_MACHINE, 'SYSTEM\\CUrrentControlSet\\Services\\lanmanserver\\parameters','nullsessionshares' |
레지스트리 키에 있는 내용 열람
EXEC xp_regenumvalues HKEY_LOCAL_MACHINE,'SYSTEM\\CurrentControlSet\\Services\\snmp\\parameters\\validcommunities |
'Security > SecureCoding' 카테고리의 다른 글
DBMS의 특성에 따른 SQL 삽입 공격 (0) | 2015.05.18 |
---|---|
Oracle에 대한 SQL 삽입 공격 (0) | 2015.05.12 |
SQL의 분류 (0) | 2015.04.12 |
SQL Injection, SQL 삽입 공격 (0) | 2015.04.04 |
안행부 개발보안 가이드 vs. OWASP Top 10 (0) | 2015.03.28 |