標籤:
什麼是fortify它又能幹些什嗎?
答:fottify全名叫:Fortify SCA ,是HP的產品 ,是一個靜態、白盒的軟體原始碼安全性測試工具。它通過內建的五大主要分析引擎:資料流、語義、結構、控制流程、配置流等對應用軟體的原始碼進行靜態分析,分析的過程中與它特有的軟體安全性漏洞規則集進行全面地匹配、尋找,從而將原始碼中存在的安全性漏洞掃描出來,並給予整理報告。
它支援掃描多少種語言?
答:FortifySCA支援的21語言,分別是:
1. asp.net 2. VB.Net 3. c#.Net 4. ASP 5. VBscript 6. VS6 7.java 8.JSP 9.javascript 10. HTML 11. XML 12. C/C++ 13.PHP 14.T-SQL 15.PL/SQL 16. Action script 17. Object-C (iphone-2012/5) 18. ColdFusion5.0 - 選購 19. python -選購 20. COBOL - 選購 21.SAP-ABAP -選購
他是免費的嗎?
答:不是,是收費的。當然網上也沒有破解的。貌似他一個月收費10萬。
如何使用?
安裝fortify之後,開啟
介面:
選擇進階掃描
他問要不要更新? 我就選擇No,因為這是我私人的,我是在2015年7月份購買的試用期為1個月。怕更新了就用不了了。如果你購買了可以選擇YES。
選擇之後出現如下介面
瀏覽意思是:掃描之後儲存的結果儲存在哪個路徑。
然後點擊下一步。
參數說明:
enable clean :把上一次的掃描結果清楚,除非換一個build ID,不然中間檔案可能對下一次掃描產生影響。enable translation: 轉換,把源碼代碼轉換成nst檔案-64: 是掃描64位的模式,sca預設掃描是32位元模式。-Xmx4000m:4000M大概是4G,制定記憶體數-Xmx4G :也可以用G定義這個參數建議加-encoding: 定製編碼,UTF-8比較全,工具解析代碼的時候指定字元集轉換的比較好,建議加,如果中文注釋不加會是亂碼。-diable-source-:rendering:不載入與漏洞無關的代碼到審計平台上,不建議加,這樣代碼顯示不全。
然後點擊下一步
它說:這是一個J2EE Web應用
選擇No (因為你掃的是PHP)
然後scan(開始掃描)
Always run in background 意思:總是在後台運行
run in background 意思:後台運行
cancel 意思 : 取消
Details 意思:細節
掃完之後:
none 代表其他 1個
A1 注入 7個
A3 xss 37個
A4 不安全的直接對象引用 35個
A6 敏感性資料暴露 4個
A10 未驗證的重新導向和轉寄 2個
如果發現是英文的,想改成如下方法中文:
以下是官網提供的分析圖:
分析漏洞:none漏洞:
這是一個可變變數,按照中國人說法簡稱:“變數覆蓋”。
講一下這個漏洞的原理:
可變變數
$first ="hello";$hello ="world";echo $first." ".$$first;
結果是 hello world
$$first就是$hello,因為$first的值是hello
———————————但是在foreach 就不一樣了—————————————————–
<?php$a = ‘sss‘;foreach ($_GET as $key => $value) { //如果在foreach那就不一樣了 echo $$key; //將$$區分開 然後$key 等於鍵 然後開始合并 比如開啟http://www.com.com/demo.php?a=值 就變成了$a 因為$key的鍵是a 所以就變成了$a $$key = $value;//$a = 值 替換變數 }echo ‘<hr ‘>‘;echo $a;?>
A1 注入漏洞:
發現$c變數是由用戶端進行GET請求控制的。
safe_replace函數過濾如下字元:
function safe_replace($string) {$string = str_replace(‘%20‘,‘‘,$string);$string = str_replace(‘%27‘,‘‘,$string);$string = str_replace(‘%2527‘,‘‘,$string);$string = str_replace(‘*‘,‘‘,$string);$string = str_replace(‘"‘,‘"‘,$string);$string = str_replace("‘",‘‘,$string);$string = str_replace(‘"‘,‘‘,$string);$string = str_replace(‘;‘,‘‘,$string);$string = str_replace(‘<‘,‘<‘,$string);$string = str_replace(‘>‘,‘>‘,$string);$string = str_replace("{",‘‘,$string);$string = str_replace(‘}‘,‘‘,$string);$string = str_replace(‘\\‘,‘‘,$string);return $string;}
include $c.".php"; 但是後面有個.php是拼接的。
但是如果php版本小於5.3.40可以採用空位元組也就是%00的二進位視作字串的結束,按照其他說法的話也就是截斷。。。。。
A3 xss 漏洞
$field_sql="update ".DB_PRE."member set {$field_sql} where userid={$last_id}";$query=$this->mysql->query($field_sql);
寫入資料庫的時候沒有任何限制或者輸出的時候沒有做任何的過濾就直接輸出導致造成了XSS。(我就不一一解釋了)
A4 不安全的直接對象引用漏洞
檔案上傳次數未做策略,可導致攻擊。
A6 敏感性資料暴露漏洞:
A10 未驗證的重新導向和轉寄漏洞:
這裡我就不去定位看誰使用這個函數了,懂點PHP的人相信都懂。。
整個過程基本已經結束了,但是有點我想提醒大家,在設定記憶體的時候如果你不設定記憶體他會自動幫你設定,比如你的電腦記憶體是8G 他就自動化佈建為8G 然後就會佔用你8G記憶體,然後搞得你電腦卡卡卡卡卡卡卡的。下次掃之前記得要設定你的記憶體,如果你電腦是8G記憶體 設定7G就好了,還剩下1G就可以玩4399小小遊戲了。 ~_~
商業層級Fortify白盒神器介紹與流量分析