摘要:支持自動識別密碼哈希格式并通過字典破解密碼哈希。支持枚舉用戶密碼哈希權限角色數據庫數據表和列。支持在數據庫管理系統中搜索指定的數據庫名表名或列名。水平越權用戶未授權可以訪問用戶的數據。對于所有需要權限控制的位置,必須嚴格檢驗用戶權限級別。
常見漏洞
看到上圖的漏洞是不是特別熟悉,如果不進行及時防御,就會產生蝴蝶效應。
往下看,可能會找到你要的答案。
SQL注入攻擊 定義SQL注入攻擊是通過WEB表單提交,在URL參數提交或Cookie參數提交,將懷有惡意的“字符串”,提交給后臺數據庫,欺騙服務器執行惡意的SQL語句。
案例//以用戶登錄為例,當驗證用戶名和密碼是否正確時 $sql = "SELECT * FROM user WHERE username = "".$_GET["username"]."" AND password = "".$_GET["password"].""";
用戶惡意輸入:
$_GET["username"] = "" or 1=1 -- ""; $_GET["password"] = "123456";
注入后的Sql語句:
$sql = "SELECT * FROM user WHERE username = "" or 1=1 -- ""AND password = "123456"";
執行注入后的Sql語句,可以返回 user 表的全部數據。
平時我們可以進行自測,比如使用單引號、雙引號,如果是數字進行+1或-1。
SQL注入的危害很大,利用SQL注入可以進行,拖庫、刪庫、刪表、UDF提權、讀取文件、...
推薦一個開源的自動化的SQL注入工具。
SQLmap:http://sqlmap.org/
支持各種數據庫管理系統(MySql、Oracle、SQL Server、SQLite ... )。
支持自動識別密碼哈希格式并通過字典破解密碼哈希。
支持枚舉用戶、密碼、哈希、權限、角色、數據庫、數據表和列。
支持完全地下載某個數據庫中的某個表、某個列。
支持在數據庫管理系統中搜索指定的數據庫名、表名或列名。
支持下載或上傳文件。
支持執行任意命令并回現標準輸出。
支持布爾型盲注、時間型盲注、基于錯誤信息的注入、聯合查詢注入和堆查詢注入。
嘗試著利用工具,注入自己的項目,發現問題,然后解決問題。
SQL注入的危害,遠比我們想象的要大!
防御推薦解決方案是使用 PDO 或 MySQLi 的數據庫擴展。
PHP官方文檔中介紹,MySQL擴展自PHP 5.5.0起已廢棄,并在自PHP7.0.0開始被移除。
如果已經在用MySQL擴展了,可以對傳入的每個參數做驗證,并使用框架的ORM進行查詢。
另外:addslashes 和 mysql_real_escape_string 這種轉義是不安全的!
XSS攻擊 定義XSS攻擊是一種經常出現在WEB應用中的計算機安全漏洞,通過WEB表單提交或在URL參數提交將代碼植入在用戶的使用頁面上。
分類存儲型
注入的惡意代碼存儲在服務器上(常用于留言板、論壇帖子、CRM),受害者請求服務器獲取信息的時候,這些惡意代碼就被瀏覽器成功執行。
反射型
注入的惡意代碼沒有存儲在服務器上,通過引誘用戶點擊一個鏈接到目標網站進行實施攻擊。
DOM型
注入的惡意代碼并未顯式的包含在web服務器的響應頁面中,但會被頁面中的js腳本以變量的形式來訪問到的方式來進行實施攻擊。
案例存儲型:論壇帖子界面input輸入框中,輸入 /> 進行提交。
反射型:在瀏覽器輸入框中,輸入 /xxx.php?name=
//DOM型,代碼舉例
XSS的危害有很多,包括盜號,掛馬,控制受害者機器想其他網站發起攻擊 ...
自測的方法,看見輸入框就輸入:/> 進行提交。
推薦一個專門針對瀏覽器攻擊的框架。
BeEF :https://beefproject.com/
防御簡單的防御可以對style、script、image、src、a等等不安全的因素進行過濾或轉義。
可以自己封裝一個方法,也可以使用框架的自帶方法,比如 xss_clean 。
可以利用一些模板引擎避免XSS攻擊,比如Laravel框架使用的Blade,還有twig,Smarty等。
可以利用HTTP-only,將cookie設置成HTTP-only防止XSS攻擊。
//設置Cookie setcookie($name, $value, $expire, $path, $domain, $secure, $httponly); //然后服務端通過使用 $_COOKIE 進行驗證。
可以使用Content Security Policy,它的實質就是白名單制度。
入門教程請參考:http://www.ruanyifeng.com/blo...
SSRF攻擊 定義SSRF(Server-Side Request Forgery:服務器端請求偽造) 是攻擊者偽造服務器端發起的請求,雖然攻擊者無法從外網訪問內網的系統,但是它通過注入惡意代碼從服務端發起,通過服務端就再訪問內網的系統,然后獲取不該獲取的數據。
案例漏洞主要產生在包含這些方法的代碼中,比如 curl、file_get_contents、fsockopen。
//代碼片段請求地址:http://www.xxx.com/demo.php?u...
將url參數修改成,file:///etc/passwd,可以獲取敏感文件的信息。
將url參數修改成,dict://127.0.0.1:3306/info,可以獲取目標主機3306端口運行的應用。
除了 file協議,dict協議,還可以利用gopher協議 和 http/https 協議進行攻擊。
可以攻擊redis,memcache,內網應用,還可以查看一下敏感文件的信息 等等。
防御對 curl、file_get_contents、fsockopen 這些方法中的參數進行嚴格驗證!
限制協議只能為HTTP或HTTPS,禁止進行跳轉。
如果有白名單,解析參數中的URL,判斷是否在白名單內。
如果沒有白名單,解析參數中的URL,判斷是否為內網IP。
CSRF攻擊 定義CSRF(Cross-site request forgery:跨站請求偽造)是攻擊者通過偽裝成受信任的用戶,盜用受信任用戶的身份,用受信任用戶的身份發送惡意請求。
從上圖看出,完成一次CSRF攻擊,需要完成兩個步驟:
1.登錄受信任網站A,本地生成網站A的Cookie。
2.未退出網站A的情況下,訪問危險網站B。
危害具體危害要看受信任網站是做什么的,如果是社交網站可以操控發廣告,如果是電商網站可以操控購物,如果是銀行網站甚至還可以操控轉賬,......
這樣危害會造成個人信息的泄露和財產的損失。
防御Cookie Hashing,表單提交或Ajax提交,必須使用csrf token。
對于不確定是否有csrf風險的請求,可以使用驗證碼(盡管體驗會變差)。
對于一些重要的操作(修改密碼、修改郵箱),必須使用二次驗證。
文件上傳漏洞 定義文件上傳漏洞是攻擊者上傳了一個可執行的文件到服務器上執行。
可執行文件包括有病毒、木馬、惡意腳本等。
危害文件上傳漏洞與SQL注入或XSS相比,其風險更大,如果存在上傳漏洞攻擊者甚至可以直接上傳一個webshell腳本到服務器上。
防御文件擴展名檢測
文件 MIME 驗證
文件重命名
文件目錄設置不可執行權限
設置多帶帶域名的文件服務器
信息泄露 定義信息泄露主要指用戶的手機號、郵箱、密碼、身份證、地址等敏感數據泄露,還有服務器上的文件和環境變量等敏感數據泄露,還包括將直接將企業源碼上傳到開發平臺。
案例比如開發接口時,接口返回明文的手機號。
比如調試代碼時,代碼中提交了一些調試信息,未進行刪除。
......
防御敏感數據脫敏(比如手機號、身份證、郵箱、地址)。
服務器上不允許提交包含打印 phpinfo 、$_SERVER 和 調試信息等代碼。
定期從開發平臺掃描關于企業相關的源碼項目。
越權 定義“超出了你自己所擁有的權限,干了你本來不可能干的事情。”
水平越權:用戶A未授權可以訪問用戶B的數據。
垂直越權:未登錄用戶可以訪問需要授權的應用。
舉例,本來用戶A只能查看自己的訂單數據,但是他通過修改URL參數就能查看到用戶B的訂單數據。
未登錄的用戶,可以訪問到后臺模塊并進行操作。
防御對于所有涉及到用戶數據的操作,必須嚴格判斷當前用戶的身份。
對于所有需要權限控制的位置,必須嚴格檢驗用戶權限級別。
設計缺陷 返回信息過多舉例,登錄時進行驗證,當用戶不存在時,返回“用戶不存在”,當用戶被禁用時,返回“用戶已被禁用”。
避免攻擊者進行惡意嘗試,不應該返回過多的信息,可以統一返回“用戶名或密碼錯誤”。
短信接口被惡意攻擊舉例,注冊或登錄時用戶輸入手機號碼就可直接觸發短信接口,這塊最容易被攻擊者進行短信轟炸。
應該進行增加接口調用限制:
設置同一手機號短信發送間隔
設置每個IP地址每日最大發送量
設置每個手機號每日最大發送量
升級驗證碼,采用滑動拼圖、文字點選、圖表點選...
升級短信接口的驗證方法
小結文章主要講解了 SQL注入攻擊、XSS攻擊、SSRF攻擊、CSRF攻擊、文件上傳漏洞、信息泄露、越權、設計缺陷等八大方面,通過這次的梳理,也使我自己對PHP WEB安全防御有了一個全面了解。
同時還要時刻保持警惕,所有用戶輸入的數據都是不值得信任的,接收到的數據必須經過校驗和過濾。
也不要輕易相信從網絡上發現的代碼,在使用第三方類庫或代碼時抱有懷疑的態度,要多進行調試和驗證,看起來沒問題的代碼可能隱藏了很多的安全隱患。
最后,推薦一款開源的漏洞演示平臺,包含了100多個漏洞。
這個是安裝在本地的,大家嘗試注入惡意代碼,同時也警醒自己不要犯這樣的錯誤。
bWAPP:http://www.itsecgames.com/
推薦閱讀系統的講解 - SSO 單點登錄
系統的講解 - PHP 緩存技術
系統的講解 - PHP 接口簽名驗證
系統的講解 - PHP 浮點數高精度運算
本文歡迎轉發,轉發請注明作者和出處,謝謝!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/31430.html
摘要:危險網站發出的請求得以執行。但同樣可以被攻擊取得會話固定誘騙用戶使用指定的進行登錄,這樣系統不會分配新的防御方法每次登陸重置設置,防止客戶端腳本訪問信息,阻止攻擊關閉透明化頭信息驗證校驗好的話點個贊吧更詳細講解安全大全 1. CSRF (cross-site request forgery)跨站請求偽造 一句話概括: 當用戶瀏覽器同時打開危險網站和正常網站,危險網站利用圖片隱藏鏈接,或...
摘要:危險網站發出的請求得以執行。但同樣可以被攻擊取得會話固定誘騙用戶使用指定的進行登錄,這樣系統不會分配新的防御方法每次登陸重置設置,防止客戶端腳本訪問信息,阻止攻擊關閉透明化頭信息驗證校驗好的話點個贊吧更詳細講解安全大全 1. CSRF (cross-site request forgery)跨站請求偽造 一句話概括: 當用戶瀏覽器同時打開危險網站和正常網站,危險網站利用圖片隱藏鏈接,或...
摘要:官方地址支持協議用于實時通信和跨平臺的框架。如實時分析系統二進制流數據處理應用在線聊天室在線客服系統評論系統等。官方地址動畫效果是一款優雅的網頁彈幕插件支持顯示圖片文字以及超鏈接。 廢話不多說,首先上效果圖。 效果圖 showImg(https://segmentfault.com/img/bVGo0P?w=521&h=635); 用途 搞活動、年會的時候,在大屏幕上實時顯示留言、吐...
閱讀 3749·2021-11-24 09:39
閱讀 3494·2019-08-30 15:56
閱讀 1383·2019-08-30 15:55
閱讀 1045·2019-08-30 15:53
閱讀 1936·2019-08-29 18:37
閱讀 3615·2019-08-29 18:32
閱讀 3144·2019-08-29 16:30
閱讀 2953·2019-08-29 15:14