CTF奪旗賽培訓——Web應用安全
培訓公司:安全狗 - 廈門服雲資訊科技有限公司
常見Web漏洞簡介
- SQL注入
- 跨站指令碼漏洞
- 檔案包含/讀取
- 任意程式碼執行
- 任意命令執行
- 任意檔案上傳
PS:演示環境dvwa
SQL注入
SQL注入是什麼
SQL注入就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令。
具體來說,是利用現有的應用程式,將(惡意)的SQL命令注入到後臺資料庫引擎執行的能力,它可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的資料庫,而不是按照設計者的意圖去執行SQL語句。
一、注入檢測
手工注入就是通過輸入可以使系統報錯的語句,從而由報錯資訊中得到有用的資訊,但是盲注入是沒有報錯資訊的。
1=1檢測,1=2檢測
判斷資料庫型別
注入語句 and user>0
具體判斷資料庫型別
Access和SQLServer都有自己的系統表,比如存放資料庫中所有物件的表,Access是在系統表[msysobjects]中,但在Web環境下讀該表會提示“沒有許可權”,SQLServer是在表[sysobjects]中,在Web環境下可正常讀取。
注入語句
ID=3 and (select count(*) from msysobjects)>0
ID=3 and (select count(*) from syssobjects)>0
檢視資料庫名
**注入語句
ID=3 and db_name()>0**
執行異常但可以得到當前連線的資料庫名
二、基本資訊掃描
SQLMap是一個自動化SQL注入工具,其主要功能是掃描,發現並利用給定的URL的SQL注入漏洞,目前支援的資料庫是MS-SQL,MYSQL,ORACLE和POSTGRESQL。SQLMap採用四種獨特的SQL注入技術,分別是盲推SQL注入,UNION查詢SQL注入,堆查詢和基於時間的SQL盲注入。其廣泛的功能和選項包括資料庫指紋,列舉,資料庫提取,訪問目標檔案系統,並在獲取完全操作許可權時實行任意命令。
三、asp網頁的注入——猜欄位內容
跨站指令碼漏洞
跨站指令碼漏洞簡介
跨站指令碼漏洞(XSS)是Web應用程式在將資料輸出到網頁的時候存在問題,導致攻擊者可以將構造的惡意資料顯示在頁面的漏洞。因為跨站指令碼攻擊都是向網頁內容中寫入一段惡意的指令碼或者HTML程式碼,故跨站指令碼漏洞也叫做HTML注入漏洞。
與SQL注入攻擊資料伺服器的方式不同,跨站指令碼漏洞是在客戶端發動造成攻擊,也就是說,利用畫展指令碼漏洞注入的惡意程式碼實在使用者電腦上的瀏覽器中執行的。
跨站指令碼漏洞用途
- 突破瀏覽器域限制
- XSS蠕蟲攻擊(最重要)
- DDsS攻擊:針對瀏覽器缺陷實施攻擊
- 客戶端資訊
- 管理資訊:後臺地址,管理員賬號資訊甚至直接通過Ajax上傳Shell
- 使用者資訊:私密資訊,日誌,相片,郵件
XSS漏洞種類
- 反射型XSS
- 儲存型CSS
任意檔案上傳
PS:現在比較常見的方式。
任意檔案上傳是什麼
由於檔案上傳功能實現程式碼沒有嚴格限制使用者上傳檔案字尾以及檔案型別,由此產生任意檔案上傳漏洞,導致允許攻擊者向某個可通過Web訪問的目錄上傳任意PHP檔案,並能夠將這些檔案傳遞給php直譯器,就可以在遠端伺服器上執行任意指令碼。藉助檔案上傳漏洞,攻擊者可以直接上傳WebShell,導致伺服器淪陷。
危險函式
move_uploaded_file()
getimagesize()
copy()
連線指令碼的神器:中國菜刀
任意檔案上傳技巧
php%00截斷
一般來說正常的網站都是對這個進行一定程度的過濾,字尾、檔案型別、Mime type、檔案大小等。
漏洞:CVE-2006-7243
截斷條件
+ php版本小雨5.3.4
+ magic_quotes_gpc=off,否則%00這種空字元會被轉義為\0
move_uploaded_file($_FILES['name']['tmp_name'],"/file.php\x00.jpg");
這本應該建立一個名為file.php\x00.jpg 的檔案,實際上建立的檔案是file.php
檔案包含/讀取
檔案包含/讀取漏洞簡介
- 本地檔案包含漏洞常用的場景是使用者上傳頭像image.jpg
- image.jpg裡存在PHP一句話木馬
- 然後我們利用本地檔案包含將image.jpg載入儘量即可執行一句話命令從而getshell。
檔案包含:伺服器通過PHP特性(函式)去包含任意檔案時,由於要包含的這個檔案來源過濾不嚴,從而可以去包含一個惡意檔案,而我們可以狗仔這個惡意檔案來達到攻擊的目的。
檔案包含的分類
- 本地包含:收到gpc影響,截斷%00
- 遠端包含:allow_url_fopen和allow_url_include為ON
任意命令執行
任意命令執行簡介
由於開發人員編寫原始碼,沒有針對程式碼中可執行的特殊函式入口做過濾,導致客戶端可以提交惡意構造語句提交,並交由伺服器端執行。命令注入攻擊中Web伺服器沒有過濾似system().exec()等函式是該漏洞攻擊成功的最主要原因。