수업중에 xp_cmdshell에 대해서 짤막하게 나온 내용이 있었습니다.
평소에 MSSQL을 거의 다뤄보지 못해서 이번 기회에 xp_cmdshell이 뭔지 한번 알아보고 정리해 보기로..
======================================================
xp_cmdshell
정의 : Windows 명령 shell을 생성하고 실행하기 위해서 사용되는 시스템 SP
구조 : xp_cmdshell { 'command_string' } [, no_output]
예제 : EXEC xp_cmdshell 'ping smishing.kr';
적용 대상 : SQL Server (현재도 사용되고 있다고 합니다)
======================================================
처음 이 SP를 봤을 때에는 XP에서만 되는건가..? 라고 했는데 그건 아니라고 하네요.. (역시 ㅋㅋ)
MSSQL 2000에서는 이 SP 가지고 새로운 계정도 만들수도 있다고 했었다네요
(지금 현재는 관리자인 systemadmin만 이것을 사용할 수 있도록 MS에서 개선했다고 합니다.)
근데? 이것이 왜 위험한건가요?
--> 일반적으로 웹 서비스 DB 같은 경우에는 DB를 연결할때 root(systemadmin, 관리자) 권한으로 연결을 합니다. (뭐 저도 물론 그렇.. 이제 안그럽니다)
--> 그렇게 되면 웹 서비스 사용자는 관리자가 아니지만 사용자가 DB에 쿼리를 요청하게 되면 DB 상에서는 관리자 권한으로 쿼리를 날리게 됩니다. (사실 사용자 하나하나 관리하고 연결하는게 귀찮고, 하나하나 권한 줘야 하는것이 그렇게 간단..한 일은 아니니깐요)
--> MS가 이 SP를 관리자만 사용할 수 있도록 수정했지만 DB 상에서 웹 서비스 사용자와 관리자를 구분하지 못하기 때문에 그냥 OK 해버리고 쿼리의 결과값을 요청자에게 보여줍니다.
--> GAME SET!
이 취약점을 통해서 뭘 할수 있을까요?
수업에서는 ping을 날리고, netcat listening을 했지만 실체적으로 더 많은걸 할 수 있습니다.
Visual Basic Script를 작성하고 저장하고 execute 한다거나 하면..
거기다가 ABS라면.. 왔더풔X
그리고 관리자에게 악감정을 가지고 파일들을 삭제하는 del 명령을 내린다거나 shutdown 명령을 사용하면..
게임은 끝나게 됩니다.
해결법 - 물론 모든 해결법은 아니지만 막을수는 있음요
웹 서비스 시에 systemadmin으로 연결하시면 안됩니다. 따로 권한을 가진 유저를 생성해 주세요!
참고
http://msdn.microsoft.com/ko-kr/library/ms175046.aspx
자소서 쓰러 가야지
'ETC' 카테고리의 다른 글
악성코드 분석 중에 발견한 개인정보를 삭제할 경우 증거인멸죄가 성립되나? (0) | 2014.03.16 |
---|---|
분석할때 들으면 도움이 되는 노래 모음 (0) | 2013.09.29 |
해킹 공부 기초에 도움이 되는 사이트 (0) | 2013.02.25 |