# 代碼審計
顧名思義就是檢查源代碼中的安全缺陷,檢查程序源代碼是否存在安全隱患,或者有編碼不規范的地方,通過自動化工具或者人工審查的方式,對程序源代碼逐條進行檢查和分析,發現這些源代碼缺陷引發的安全漏洞,并提供代碼修訂措施和建議。
## 代碼安全測試方法:
碼審核采用人工審核和靜態分析工具輔助的方式進行。
1. 人工審核:
既能解決內部問題也能解決外部問題。這也是目前最有效率的解決方案,并且在理論上手工代碼審核是非常有效的,但人工審核的效率不高,所以我們會采用自動化分析工具輔助人工的方式來提高審核效率。
2. 靜態分析工具:
通過一組全面規則、測試機制和方針在軟件開發過程、測試中發現軟件的安全缺陷。
fortify、seay源代碼審計
## 手工代碼審計
### 審計思路:
1. 通讀全文代碼
從功能函數代碼開始閱讀,例如include文件夾下的common_fun.php,或者有類似關鍵字的文件。?
2. 看配置文件
帶有config關鍵字的文件,找到mysql.class.php文件的connect()函數,查看在數據庫連接時是否出現漏洞。?
3. 繼續跟讀首頁文件index.php
了解程序運作時調用了哪些函數和文件 以index.php文件作為標線,一層一層去擴展閱讀所包含的文件,了解其功能,之后進入其功能文件夾的首頁文件,進行擴展閱讀。
### 高風險漏洞
由于使用以下原因,可能存在一些常見的高風險漏洞:
1. 非邊界檢查函數可能導致緩沖區溢出漏洞
例如,strcpy,sprintf,vsprintf和sscanf
2. 可能干擾后續邊界檢查的緩沖區的指針操作
例如:if((bytesread = net_read(buf,len))> 0)buf + = bytesread;
3. 調用像execve(),執行管道,system()和類似的東西
尤其是在使用非靜態參數調用時
4. 輸入驗證
如`statement:=“SELECT * FROM users WHERE name ='”+ userName +“';”`是一個SQL注入漏洞的示例
5. 文件包含功能
例如(在PHP中):`include($ page。'。php');`是遠程文件包含漏洞的示例
6. 對于可能與惡意代碼鏈接的庫,返回對內部可變數據結構(記錄,數組)的引用
惡意代碼可能會嘗試修改結構或保留引用以觀察將來的更改。
### 低風險漏洞
以下是審計代碼時應該找到的低風險漏洞列表,但不會產生高風險情況。
1. 客戶端代碼漏洞不影響服務器端(例如,跨站點腳本)
2. 用戶名枚舉
3. 目錄遍歷(在Web應用程序中)
### web漏洞產生的原因:
1. 變量控制不嚴(一切輸入都是有害)。
2. 變量到達有利用價值的函數
(一切進入函數的變量是有害的)漏洞的利用效果取決于最終函數的功能。
3. 權限配置不當,給予了過高的權限
4. 邏輯問題,屬于程序之外,人的思維問題
## 代碼審計工具
在源代碼的靜態安全審計中,使用自動化工具代替人工漏洞挖掘,可以顯著提高審計工作的效率。學會利用自動化代碼審計工具,是每一個代碼審計人員必備的能力。本文將簡要介紹其中兩款比較實用的工具:Seay、FortifySCA。
### 1??Seay:
Seay是一套開源代碼審計系統,使用C# 編寫,需要.NET2.0以上版本環境才能運行。
### 2??Fortify SCA:
Fortify SCA(Static Code Analyzer)是由Fortify軟件公司(已被惠普收購)開發的一款商業版源代碼審計工具,價格較為昂貴。它使用獨特的數據流分析技術,跨層跨語言地分析代碼的漏洞產生,目前支持所有的主流開發語言。
* Fortify SCA原理
首先通過調用語言的編譯器或者解釋器把前端的語言代碼(如JAVA,C/C++源代碼)轉換成一種中間媒體文件NST(Normal Syntax Tree),將其源代碼之間的調用關系,執行環境,上下文等分析清楚。
通過分析不同類型問題的靜態分析引擎分析NST文件,同時匹配所有規則庫中的漏洞特征,將漏洞抓取出來,然后形成包含詳細漏洞信息的FPR結果文件,用AWB打開查看。
- src導航站
- kali和msf
- 信息收集
- 收集域名信息
- Whois 查詢
- 備案信息查詢
- 信用信息查詢
- IP反查站點的站
- 瀏覽器插件
- 收集子域名信息
- 在線平臺
- 工具枚舉
- ssl與證書透明度
- DNS歷史解析
- DNS域傳送漏洞
- C段探測
- JS文件域名&ip探測
- 搜索引擎&情報社區
- google黑客
- 威脅情報
- 鐘馗之眼
- 收集相關應用信息
- 微信公眾號&微博
- APP收集&反編譯
- 收集常用端口信息
- 常見端口&解析&總結
- 掃描工具
- 網絡空間引擎搜索
- 瀏覽器插件
- nmap掃描
- 收集敏感信息
- 源碼泄露
- 郵箱信息收集
- 備份文件泄露
- 目錄&后臺掃描
- 公網網盤
- 歷史資產
- 指紋&WAF&CDN識別
- 指紋識別
- CDN識別
- 繞過CDN查找真實IP
- WAF識別
- 漏洞資源和社工
- 漏洞公共資源庫
- 社會工程
- 資產梳理
- 各種對滲透有幫助的平臺
- 掃描器
- 掃描器對比
- AppScan(IBM)_web和系統
- AWVS_web掃描
- X-Scan_系統掃描
- WebInspect_HP_WEB
- Netsparker_web
- WVSS_綠盟_web
- 安恒明鑒
- Nessus_系統
- nexpose_系統
- 啟明天鏡_web_系統
- SQL注入
- 常用函數
- sql注入步驟
- union注入和information_schema庫
- 函數和報錯注入
- SQL盲注
- 其他注入方式
- 防止SQL注入解決方案
- Access數據庫注入
- MSSQL數據庫注入
- MYSQL數據庫注入
- 神器SQLmap
- xss跨站腳本攻擊
- xss原理和分類
- xss案例和修復
- xss繞過技巧
- xss案例
- 文件上傳下載包含
- 常有用文件路徑
- 文件上傳漏洞
- 文件下載漏洞
- 文件包含漏洞
- upload-labs上傳漏洞練習
- XXE、SSRF、CSRF
- SSRF原理基礎
- SSRF案例實戰
- CSRF原理基礎
- CSRF案例及防范
- XXE之XML_DTD基礎
- XXE之payload與修復
- XXE結合SSRF
- 遠程命令執行與反序列化
- 遠程命令和代碼執行漏洞
- 反序列化漏洞
- 驗證碼與暴力破解
- 爆破與驗證碼原理
- CS架構暴力破解
- BS架構暴力破解
- WEB編輯器漏洞
- 編輯器漏洞基礎
- Ewebeditor編輯器
- FCKeditor編輯器
- 其他編輯器
- web中間件漏洞
- 中間件解析漏洞
- Tomcat常見的漏洞總結
- Jboss漏洞利用總結
- Weblogic漏洞利用總結
- WEB具體步驟
- 旁注和越權
- CDN繞過
- 越權與邏輯漏洞
- WEB應用常見其他漏洞
- WEB登陸頁面滲透思路
- 獲取WEBshell思路
- 社工、釣魚、apt
- 社工和信息收集
- 域名欺騙
- 釣魚郵件
- 一些釣魚用的掛馬工具
- 代碼審計
- 代碼審計工具
- WAF繞過
- WAF基礎及云WAF
- 各種WAF繞過方法
- 繞過WAF上傳文件
- 系統提權
- windows系統提權
- linux系統提權
- 數據庫提權操作系統
- 內網橫向滲透
- 內網穿透方式
- 一些內網第三方應用提權
- ARP與DOS
- ARP欺騙
- DOS與DDOS
- 一些DOS工具