ssnepenthe/soter-core

一个用于与 WPScan 漏洞数据库 API 交互的基础库。

0.2.0 2017-09-24 17:37 UTC

This package is auto-updated.

Last update: 2024-08-28 12:22:09 UTC


README

Soter Core 是一个简单的库,用于与 WPScan 漏洞数据库 API 交互。

它包含了 SoterSoter Command 的核心逻辑。

要求

此包需要 Composer。它应该能在 PHP 5.3 以下版本工作,但仅对 PHP 5.6 及以上版本进行了适当的测试,因为这是 10up/WP_Mock 所需的最小版本。

安装

composer require ssnepenthe/soter-core

用法

根据您的用例,您应该与 Api_Client 类或 Checker 类进行交互。

API 客户端

$client = new Soter_Core\Api_Client(
    new Soter_Core\Cached_Http_Client(
        new Soter_Core\WP_Http_Client( 'Some user agent string' ),
        new Soter_Core\WP_Transient_Cache( 'unique-prefix', HOUR_IN_SECONDS )
    )
);

API 客户端公开了一个 ->check() 方法,可以用来将 Soter_Core\Package 实例与 API 进行比较。

$plugin = new Soter_Core\Package( 'contact-form-7', Soter_Core\Package::TYPE_PLUGIN, '4.9' );
$response = $client->check( $plugin );

$theme = new Soter_Core\Package( 'twentyfifteen', Soter_Core\Package::TYPE_THEME, '1.8' );
$response = $client->check( $theme );

// WordPress "slug" is the version string stripped of periods.
$wordpress = new Soter_Core\Package( '481', Soter_Core\Package::TYPE_WORDPRESS, '4.8.1' );
$response = $client->check( $wordpress );

响应将是一个 Soter_Core\Response 实例。您可以使用以下方法检查软件包漏洞:

->has_vulnerabilities() - 返回一个布尔值,表示是否有记录的漏洞。

->get_vulnerabilities() - 返回一个代表所有影响给定软件包漏洞的 Soter_Core\Vulnerabilities 实例。

->get_vulnerabilities_by_version( string $version = null ) - 返回一个代表影响给定软件包特定版本的漏洞的 Soter_Core\Vulnerabilities 实例。

->get_vulnerabilities_for_current_version() - 返回一个代表影响 API 检查版本中软件包的所有漏洞的 Soter_Core\Vulnerabilities 实例。

检查器

$checker = new Soter_Core\Checker(
    new Soter_Core\Api_Client(
        new Soter_Core\Cached_Http_Client(
            new Soter_Core\WP_Http_Client( 'Some user agent string' ),
            new Soter_Core\WP_Transient_Cache( 'unique-prefix', HOUR_IN_SECONDS )
        )
    ),
    new Soter_Core\WP_Package_Manager()
);

检查器实例上有以下方法可用:

->check_site( array $ignored = array() ) - 检查所有已安装软件包(插件、主题和核心)的当前版本,并返回一个 Soter_Core\Vulnerabilities 实例。可以提供一个可选的软件包别名数组,指定不应检查的软件包。

->check_plugins( array $ignored = array() ) - 检查所有已安装插件的当前版本,并返回一个 Soter_Core\Vulnerabilities 实例。可以提供一个可选的插件别名数组,指定不应检查的插件。

->check_themes( array $ignored = array() ) - 检查所有已安装主题的当前版本,并返回一个 Soter_Core\Vulnerabilities 实例。可以提供一个可选的主题别名数组,指定不应检查的主题。

->check_wordpress( array $ignored = array() ) - 检查 WordPress 的当前版本,并返回一个 Soter_Core\Vulnerabilities 实例。可以提供一个可选的 WordPress "别名" 数组,指定不应检查的 WordPress 版本。请注意,WordPress 的别名是去掉点的版本字符串(例如,版本 4.7.5 的别名为 '475')。

您还可以添加任何数量的回调函数,在检查每个软件包之后运行。

每个回调函数都将使用 Soter_Core\Vulnerabilities 实例和 Soter_Core\Response 实例作为参数调用。

作为一个简单的例子,您可能想做以下操作来记录错误响应以进行调试:

$checker->add_post_check_callback( function( $vulnerabilities, $response ) {
    if ( ! $response->is_error() ) {
        return;
    }

    // Ex: "Error checking plugin not-a-real-plugin with message: Non-200 status code received"
    $this->logger->debug( 'Error checking {type} {slug} with message: {message}', [
        'message' => $response->error['message'],
        'slug' => $response->get_package()->get_slug(),
        'type' => $response->get_package()->get_type(),
    ] );
} );