ssnepenthe / soter-core
一个用于与 WPScan 漏洞数据库 API 交互的基础库。
Requires
- php: >=5.3
Requires (Dev)
- 10up/wp_mock: dev-dev
- phpunit/phpunit: ^5.7
- psy/psysh: ^0.8
This package is auto-updated.
Last update: 2024-08-28 12:22:09 UTC
README
Soter Core 是一个简单的库,用于与 WPScan 漏洞数据库 API 交互。
它包含了 Soter 和 Soter 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(), ] ); } );