代碼審計常見漏洞總結
一顆小胡椒2021-12-25 07:03:25
代碼審計常見漏洞總結
代碼審計,說白了就是白盒測試,審查代碼檢查是否有安全問題,核心就兩點:跟蹤用戶輸入數據+敏感函數參數回溯。
關鍵詞查詢
- 密碼硬編碼(密碼明文存儲)——即將密碼直接以明文的形式寫在代碼中,既不安全,也難以維護:password,pass,pwd,jdbc等
- 反射型XSS——從用戶那兒獲取參數中的值,未經檢查參數合法性的情況下,直接輸出在js代碼中,產生腳本攻擊:getParameter,<%=,param等
- 存儲型XSS——指非法數據存入到數據庫中,每次加載都會執行惡意代碼產生攻擊。為了檢查代碼是否有該漏洞,需從數據庫的插入語句中回溯參數的來源,如果整個流程都沒有對參數進行過濾,且沒有全局過濾器,則判斷存在存儲型XSS:insert,save,update等
- SQL注入——sql語句中出現+,append,$(),#等拼接字眼且沒有配置SQL過濾文件,則存在sql漏洞。根本解決辦法是預編譯,也就是sql語句事先編譯好了,隨后傳入參數填坑,不會重新再編譯,也就不會有sql注入:select,update,delete,insert等
- 任意文件下載——整個流程中沒有對用戶請求的文件名進行合法性檢查,導致用戶能夠下載一些配置文件:fileName,filePath,getFile,getWriter等
- 任意文件刪除——同樣也是沒有對用戶請求的參數進行過濾,導致輸入參數拼接以能夠刪除重要文件:delete,deleteFile,fileName,filePath等
- 任意文件上傳——未過濾用戶輸入文件名,導致能夠上傳惡意可執行文件。需注意有沒有配置文件上傳白名單,是否有檢查后綴名,配置文件是否設置了白名單或者黑名單:upload,write,fileName,filePath等
- 命令注入——判斷是否直接拼接外部傳來的值:getRuntime,exec,cmd,shell等
- 緩沖區溢出——直接拷貝或*,未考慮大小:strcpy,strcat,scanf,memcpy,memmove,memeccpy,Getc(),fgetc(),getchar,read,printf等
- XML注入——在導入配置、數據傳輸接口等場景,留意XML解析器是否禁用外部實體:DocumentBuilder、XMLStreamReader、SAXBuilder、SAXParser、SAXReader 、XMLReader、SAXSource 、TransformerFactory 、SAXTransformerFactory 、SchemaFactory等
- 日志記錄敏感信息——由于日志文件保存位置有一定要求,一般不在考慮范圍之內(不結合其他漏洞一起考慮的情況下):log.info,logger.info等
- URL跳轉——注意是否配置了url跳轉白名單:sendRedirect,setHeader,forward等
- 敏感信息泄露及錯誤處理——查看配置文件是否配置了統一錯誤頁面,如果有則不存在此漏洞,如果沒有則搜索定位看是否泄露敏感信息:Getmessage,exception等
- 反序列化漏洞——當輸入的反序列化的數據可被用戶控制,那么攻擊者即可通過構造惡意輸入,讓反序列化產生非預期的對象,在此過程中執行構造的任意代碼:ObjectInputStream.readObject,ObjectInputStream.readUnshared,XMLDecoder.readObject,Yaml.load,XStream.fromXML,ObjectMapper.readValue,JSON.parseObject
- 不安全組件暴露——通過查看配置文件 AndroidManifest.xml,查看屬性有沒有配置 false。
邏輯漏洞
- CSRF(Cross Site Request Forgery, 跨站域請求偽造)——查看配置文件有沒有配置csrf全局過濾器,如果沒有則看每個操作前有沒有添加token的防護機制。
- SSRF(Server-Side Request Forgery:服務器端請求偽造)——查看用戶可控輸入鏈接有沒有過濾機制。
- 越權漏洞——重點關注用戶操作請求時是否有對當前登陸用戶權限做校驗或者權限框架的配置文件以及實現方法。
- 敏感數據弱加密——看數據傳輸中的加密方法,一般寫在工具類util中。
- 短信驗證碼——時間限制防止可爆破,次數限制防止對手機產生攻擊,可否自定義防止發送不良信息。
一顆小胡椒
暫無描述