您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“代碼審計之fortify工具怎么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“代碼審計之fortify工具怎么用”這篇文章吧。
1.去下載裝安裝cms
官網地址自行猜測,自行下載。主講思路過程,任意一套系統都可。
2.安裝過程簡單分析是否有漏洞
不做安裝分析,很多都程序都會刪掉安裝包,有興趣的可以搞一下,這里略過。
3.安裝完成后,訪問首頁,分析路由
i.index.php
定義了NoDb常量,,,mark下,現在還不知道有啥用
加載了全局配置文件config.php
定義了路由的方法
ii.config.php
定義了些許的常量
包含了func.php文件(系統基本所有函數、加數據的操作類)
根據NoDb常量的值,取決了要不要初始化數據庫。(mark 上述疑問解答)
最后一個函數_stripslashes,是否要去除轉義,如下圖:
判斷是否支持,開啟了自動轉義。如果開啟了就全局去除分斜杠,還原數據。
iii.index.php文件最后一行代碼match_route();
讀取數據庫,并進行了緩存操作。
緩存記錄
初始化模板
加載模板
模板解析
完成首頁顯示,完成這個流程分析,對這個cms有了大概的了解
4.下面借助工具fortify快速人工審計
xss
這里有說存在,簡單一看,沒有過濾機制,那么具體分析數據來源是否準確無誤,
這個位置是輸入框,數據來源人工填寫,它的目的地為數據庫存儲,那現在關鍵位置是數據庫存儲的過程是否有做安全性過濾。
這里有個函數dbstr,數據庫字符串函數的處理,那么看函數的定義
分析得知,數據做了單引號的過濾,和反斜線的轉義,沒有過濾尖括號,那我們隨意構建payload:<script>alert(1)</script>,效果圖下圖:
源代碼:
File Inclusion
這里提示有文件包含,查看代碼邏輯需要兩個參數,do、nohtml、do的參數值做分隔處理,第一個參數值為路徑,第二個參數值為文件名。后面還有個驗證函數,代碼如下:
使用了正則做了驗證,允許輸入的值數字和字母并且長度也做了限定,包括后綴也做了限定,那么存不存在包含,顯然可以是可以包含的,但是包含的范圍比較小,為什么?自己想一下。如果能突破這個限定,那肯定更牛叉。
后臺自帶文件管理系統
按照cnvd的評判標準,這個系統只要拿些后臺,就是一個高危的評級。因為shell如此簡單。
5. 難點分析
前臺沒有什么交互的模塊,所有著手于后臺,那么從上面的分析來看,這個框架,只要突破了后臺賬號密碼,那么shell唾手可得。現在分析登錄的過程。
沒有做驗證碼的做驗證,是否可以爆破下弱口令。
到此,這些過程說明,登錄做了限制,15分鐘內,只能發送20次的登錄請求,那我們分析緩存文件的生成規則:
也就是說,IP如果可以換。那么是不是就可以做到15分鐘20次的登錄限制,當然你要有相當多的ip代理池。支撐你的所有請求。接著往下看:
到這里程序里面的驗證數據庫的SQL語句沒有SQL注入。這里還有第三方的登錄,看過程:
數據庫默認是空,即code的get傳值為空,就可以在MySQL獲取數據并登錄成功,什么字符串在單引號里面,相當于是空值。
以上是“代碼審計之fortify工具怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。