前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Wpbullet:针对WordPress的静态代码分析工具

Wpbullet:针对WordPress的静态代码分析工具

作者头像
FB客服
发布2019-07-09 15:38:09
6380
发布2019-07-09 15:38:09
举报
文章被收录于专栏:FreeBuf

今天给大家介绍的是一款名叫Wpbullet的工具,广大安全研究人员可以使用这款工具来对WordPress、插件、主题以及其他PHP项目进行静态代码分析。

工具安装

大家可以直接从Wpbullet的GitHub代码库中将项目克隆至本地,然后安装工具的依赖组件,并运行工具脚本:

代码语言:javascript
复制
$ git clone https://github.com/webarx-security/wpbullet wpbullet
$ cd wpbullet
$ pip install -r requirements.txt
$ python wpbullet.py

工具使用

下面给出的是所有可用的操作选项:

—path(必需项) 系统路径或下载URL地址

使用样例:

代码语言:javascript
复制
—path=”/path/to/plugin”
—path=”https://wordpress.org/plugins/example-plugin“
—path=”https://downloads.wordpress.org/plugin/example-plugin.1.5.zip“

—enabled(可选项) 检测给定的模块

使用样例:

代码语言:javascript
复制
—enabled=”SQLInjection,CrossSiteScripting

—disabled(可选项) 不检测给定的模块

使用样例:

代码语言:javascript
复制
—disabled=”SQLInjection,CrossSiteScripting”

—cleanup(可选项) 在对远程下载的插件进行完扫描操作之后,自动删除本地.temp目录的内容

—report(可选项) 将分析结果以JSON格式数据存储至reports/目录中

代码语言:javascript
复制
$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的话,请附带模块的单元测试数据。

模块样本

代码语言:javascript
复制
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

代码语言:javascript
复制
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

模块单元测试

代码语言:javascript
复制
$ python3 -m unittest

项目地址

Wpbullet:【https://github.com/webarx-security/wpbullet】

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工具安装
  • 工具使用
    • 使用样例:
      • 使用样例:
        • 使用样例:
        • 创建模块
          • 模块样本
          • 重写正则式匹配模式
            • Modules/ExampleVulnerability.py
            • 模块单元测试
            • 项目地址
            相关产品与服务
            数据保险箱
            数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档