0x00 前言在之前的文章介紹了Fortigate識別與版本探測的方法,在提取出頁面特徵後,可根據特徵對應到具體版本。為了找到特徵與具體版本的對應關係,這里首要解決的問題是下載固件。
本文將要介紹通過程序實現自動下載固件的方法,分享腳本開發細節。
0x01 簡介本文將要介紹以下內容:
實現原理
實現細節
開源代碼
0x02 實現原理通過Burp Suite分析下載固件的數據格式,進而編寫程序實現自動下載
1.用戶認證使用Cookie作為憑據,格式示例:
2.下載流程訪問固件下載頁面,如下圖
點擊固件對應的HTTPS即可下載固件
通過Burp Suite分析數據包內容,具體流程如下:
訪問頁面https://support.fortinet.com/Download/FirmwareImages.aspx,發送的數據包如下圖
其中,ctl04作為變量,不同固件對應的值不同
返回結果實例如下圖
返回結果中為實際的下載文件地址
0x03 實現細節這里以7.2.4的下載為例,在程序實現上需要額外考慮以下細節:
1.文件下載對於返回結果需要作簡單的處理,解析後並下載的代碼實例:
2.需要獲得文件名與下載鏈接的對應關係實際上為文件名同變量ctl的對應關係
訪問上級頁面,抓包如下圖
返回結果如下圖
從頁面中能夠獲得文件名同變量ctl的對應關係
這裡使用正則匹配,格式化輸出的代碼實例:
注:
在使用print函數時,\r指定回到行起始位置,flush=True表示刷新輸出
3.加入下載進度條為了便於掌握下載進度,需要加入下載的進度條
參考代碼:https://www.cnblogs.com/Old-Kang/articles/15271067.html
實例代碼:
輸出實例:
4.下載判斷當下載很多文件時,如果網絡中斷,需要從中斷處的文件名重新下載
這裡加入指定下載位置作為用戶輸入,實例代碼:
0x04 小結本文介紹了通過程序下載Fortigate固件的方法,後續可對特徵進行提取。