歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

Wpbullet:一款針對WordPress(PHP)的靜態代碼分析工具

來源:本站整理 作者:佚名 時間:2019-06-28 TAG: 我要投稿

今天給大家介紹的是一款名叫Wpbullet的工具,廣大安全研究人員可以使用這款工具來對WordPress、插件、主題以及其他PHP項目進行靜態代碼分析。

工具安裝
大家可以直接從Wpbullet的GitHub代碼庫中將項目克隆至本地,然后安裝工具的依賴組件,并運行工具腳本:
$ git clone https://github.com/webarx-security/wpbullet wpbullet
$ cd wpbullet
$ pip install -r requirements.txt
$ python wpbullet.py
工具使用
下面給出的是所有可用的操作選項:
–path(必需項) 系統路徑或下載URL地址
使用樣例:
--path="/path/to/plugin"
--path="https://wordpress.org/plugins/example-plugin"
--path="https://downloads.wordpress.org/plugin/example-plugin.1.5.zip"
–enabled(可選項) 檢測給定的模塊
使用樣例:
--enabled="SQLInjection,CrossSiteScripting"
–disabled(可選項) 不檢測給定的模塊
使用樣例:
--disabled="SQLInjection,CrossSiteScripting"
–cleanup(可選項) 在對遠程下載的插件進行完掃描操作之后,自動刪除本地.temp目錄的內容
–report(可選項) 將分析結果以JSON格式數據存儲至reports/目錄中
$python wpbullet.py --path="/var/www/wp-content/plugins/plugin-name"
創建模塊
Wpbullet的模塊可擴展性以及靈活性都非常高,它允許我們重寫每一個模塊的BaseClass方法并實現我們自己的方法。
Modules目錄中的每一個模塊都繼承了core.modules.BaseClass類的屬性以及方法,因此每一個模塊都需要的參數就是BaseClass了。
創建完成之后,模塊需要在modules/__init__.py中導入。模塊名和類名必須保持一致,否則Wpbullet將無法正常加載。
如果你想要在本項目的GitHub上pull request的話,請附帶模塊的單元測試數據。
模塊樣本
Modules/ExampleVulnerability.py
from core.modules import BaseClass
class ExampleVulnerability(object):
    # Vulnerability name
    name= "Cross-site Scripting"
    # Vulnerability severity
    severity = "Low-Medium"
    # Functions causing vulnerability
    functions = [
        "print"
        "echo"
    ]
    # Functions/regex that prevent exploitation
    blacklist = [
        "htmlspecialchars",
        "esc_attr"
]
重寫正則式匹配模式
正則式匹配模式由core.modules.BaseClass.build_pattern生成,因此我們可以根據自己的需要重寫每一個模塊類。
Modules/ExampleVulnerability.py
import copy
...
#Build dynamic regex pattern to locate vulnerabilities in given content
defbuild_pattern(self, content, file):
    user_input = copy.deepcopy(self.user_input)
    variables = self.get_input_variables(self,content)
    if variables:
        user_input.extend(variables)
    if self.blacklist:
        blacklist_pattern =r"(?!(\s?)+(.*(" + '|'.join(self.blacklist) + ")))"
    else:
        blacklist_pattern = ""
    self.functions = [self.functions_prefix + xfor x in self.functions]
    pattern = r"((" +'|'.join(self.functions) + ")\s{0,}\(?\s{0,1}" + blacklist_pattern +".*(" + '|'.join(user_input) + ").*)"
    return pattern
模塊單元測試
$ python3 -m unittest
項目地址
Wpbullet:【GitHub傳送門

【聲明】:黑吧安全網(http://www.zjtpzs.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        神秘东方电子游艺 pk10三码必中冠军计划 山西快乐10分技巧 kk顶级棋牌 广东11选5开奖视频直播 福建麻将安卓版 快乐10分现场开奖 广东十一选五中奖助手 现在去卖车能赚钱吗 双色球彩票大奖排行 内部精准二肖中特 北京赛车pk平台 11选5中奖查询 重庆时时开奖视频下载 快速赛车开奖记录 山西11选5推荐导航 时时彩宝典苹果手机版