
한 친구가 제가 작업하는 애플리케이션의 SQL 주입 취약점을 지적했습니다.
이 검색 매개변수는 다음과 같습니다.
'; exec xp_cmdshell 'dir'; --
메시지를 반환했습니다:
The EXECUTE permission was denied on the object
'xp_cmdshell', database 'mssqlsystemresource', schema 'sys'.
일부 테이블과 저장 프로시저에 대한 선택 권한만 가진 계정에서 검색이 실행되기 때문입니다.
악의적인 사용자가 SQL Server에 대한 관리자 계정의 로그인 정보를 알게 된 경우 자격 증명을 사용하여 cmd 셸을 통해 시스템에 대한 루트 액세스를 얻을 수 있는지 또는 다른 장난스러운 작업이 가능한지 궁금합니다.
답변1
.exec as {credentials}
그러나 쿼리를 실행하는 원래 사용자는 IMPERSONATE
전환하려는 사용자에 대한 권한을 가지고 있어야 합니다 . 이것은 기본 구성이 아니므로 추가해야 합니다(이것을 추가하는 것도 다소 이상할 것입니다).
답변2
그것이 가능한지 아닌지는 정말 중요하지 않습니다. 여기서 해결해야 할 합법적인 문제가 있습니다. 이 명령은 서버에 다시 게시되어서는 안 됩니다.