forked from Aspen-Discovery/aspen-discovery
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
70 changed files
with
10,399 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
root = true | ||
|
||
[*] | ||
charset = utf-8 | ||
indent_size = 4 | ||
indent_style = space | ||
end_of_line = lf | ||
insert_final_newline = true | ||
trim_trailing_whitespace = true | ||
|
||
[*.md] | ||
trim_trailing_whitespace = false | ||
|
||
[*.{yml,yaml}] | ||
indent_size = 2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
GPL Cooperation Commitment | ||
Version 1.0 | ||
|
||
Before filing or continuing to prosecute any legal proceeding or claim | ||
(other than a Defensive Action) arising from termination of a Covered | ||
License, we commit to extend to the person or entity ('you') accused | ||
of violating the Covered License the following provisions regarding | ||
cure and reinstatement, taken from GPL version 3. As used here, the | ||
term 'this License' refers to the specific Covered License being | ||
enforced. | ||
|
||
However, if you cease all violation of this License, then your | ||
license from a particular copyright holder is reinstated (a) | ||
provisionally, unless and until the copyright holder explicitly | ||
and finally terminates your license, and (b) permanently, if the | ||
copyright holder fails to notify you of the violation by some | ||
reasonable means prior to 60 days after the cessation. | ||
|
||
Moreover, your license from a particular copyright holder is | ||
reinstated permanently if the copyright holder notifies you of the | ||
violation by some reasonable means, this is the first time you | ||
have received notice of violation of this License (for any work) | ||
from that copyright holder, and you cure the violation prior to 30 | ||
days after your receipt of the notice. | ||
|
||
We intend this Commitment to be irrevocable, and binding and | ||
enforceable against us and assignees of or successors to our | ||
copyrights. | ||
|
||
Definitions | ||
|
||
'Covered License' means the GNU General Public License, version 2 | ||
(GPLv2), the GNU Lesser General Public License, version 2.1 | ||
(LGPLv2.1), or the GNU Library General Public License, version 2 | ||
(LGPLv2), all as published by the Free Software Foundation. | ||
|
||
'Defensive Action' means a legal proceeding or claim that We bring | ||
against you in response to a prior proceeding or claim initiated by | ||
you or your affiliate. | ||
|
||
'We' means each contributor to this repository as of the date of | ||
inclusion of this file, including subsidiaries of a corporate | ||
contributor. | ||
|
||
This work is available under a Creative Commons Attribution-ShareAlike | ||
4.0 International license (https://creativecommons.org/licenses/by-sa/4.0/). |
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# Security notices relating to PHPMailer | ||
|
||
Please disclose any security issues or vulnerabilities found through [Tidelift's coordinated disclosure system](https://tidelift.com/security) or to the maintainers privately. | ||
|
||
PHPMailer 6.4.1 and earlier contain a vulnerability that can result in untrusted code being called (if such code is injected into the host project's scope by other means). If the `$patternselect` parameter to `validateAddress()` is set to `'php'` (the default, defined by `PHPMailer::$validator`), and the global namespace contains a function called `php`, it will be called in preference to the built-in validator of the same name. Mitigated in PHPMailer 6.5.0 by denying the use of simple strings as validator function names. Recorded as [CVE-2021-3603](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2021-3603). Reported by [Vikrant Singh Chauhan](mailto:[email protected]) via [huntr.dev](https://www.huntr.dev/). | ||
|
||
PHPMailer versions 6.4.1 and earlier contain a possible remote code execution vulnerability through the `$lang_path` parameter of the `setLanguage()` method. If the `$lang_path` parameter is passed unfiltered from user input, it can be set to [a UNC path](https://docs.microsoft.com/en-us/dotnet/standard/io/file-path-formats#unc-paths), and if an attacker is also able to persuade the server to load a file from that UNC path, a script file under their control may be executed. This vulnerability only applies to systems that resolve UNC paths, typically only Microsoft Windows. | ||
PHPMailer 6.5.0 mitigates this by no longer treating translation files as PHP code, but by parsing their text content directly. This approach avoids the possibility of executing unknown code while retaining backward compatibility. This isn't ideal, so the current translation format is deprecated and will be replaced in the next major release. Recorded as [CVE-2021-34551](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2021-34551). Reported by [Jilin Diting Information Technology Co., Ltd](https://listensec.com) via Tidelift. | ||
|
||
PHPMailer versions between 6.1.8 and 6.4.0 contain a regression of the earlier CVE-2018-19296 object injection vulnerability as a result of [a fix for Windows UNC paths in 6.1.8](https://github.com/PHPMailer/PHPMailer/commit/e2e07a355ee8ff36aba21d0242c5950c56e4c6f9). Recorded as [CVE-2020-36326](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2020-36326). Reported by Fariskhi Vidyan via Tidelift. 6.4.1 fixes this issue, and also enforces stricter checks for URL schemes in local path contexts. | ||
|
||
PHPMailer versions 6.1.5 and earlier contain an output escaping bug that occurs in `Content-Type` and `Content-Disposition` when filenames passed into `addAttachment` and other methods that accept attachment names contain double quote characters, in contravention of RFC822 3.4.1. No specific vulnerability has been found relating to this, but it could allow file attachments to bypass attachment filters that are based on matching filename extensions. Recorded as [CVE-2020-13625](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2020-13625). Reported by Elar Lang of Clarified Security. | ||
|
||
PHPMailer versions prior to 6.0.6 and 5.2.27 are vulnerable to an object injection attack by passing `phar://` paths into `addAttachment()` and other functions that may receive unfiltered local paths, possibly leading to RCE. Recorded as [CVE-2018-19296](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2018-19296). See [this article](https://knasmueller.net/5-answers-about-php-phar-exploitation) for more info on this type of vulnerability. Mitigated by blocking the use of paths containing URL-protocol style prefixes such as `phar://`. Reported by Sehun Oh of cyberone.kr. | ||
|
||
PHPMailer versions prior to 5.2.24 (released July 26th 2017) have an XSS vulnerability in one of the code examples, [CVE-2017-11503](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-11503). The `code_generator.phps` example did not filter user input prior to output. This file is distributed with a `.phps` extension, so it it not normally executable unless it is explicitly renamed, and the file is not included when PHPMailer is loaded through composer, so it is safe by default. There was also an undisclosed potential XSS vulnerability in the default exception handler (unused by default). Patches for both issues kindly provided by Patrick Monnerat of the Fedora Project. | ||
|
||
PHPMailer versions prior to 5.2.22 (released January 9th 2017) have a local file disclosure vulnerability, [CVE-2017-5223](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-5223). If content passed into `msgHTML()` is sourced from unfiltered user input, relative paths can map to absolute local file paths and added as attachments. Also note that `addAttachment` (just like `file_get_contents`, `passthru`, `unlink`, etc) should not be passed user-sourced params either! Reported by Yongxiang Li of Asiasecurity. | ||
|
||
PHPMailer versions prior to 5.2.20 (released December 28th 2016) are vulnerable to [CVE-2016-10045](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10045) a remote code execution vulnerability, responsibly reported by [Dawid Golunski](https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html), and patched by Paul Buonopane (@Zenexer). | ||
|
||
PHPMailer versions prior to 5.2.18 (released December 2016) are vulnerable to [CVE-2016-10033](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10033) a remote code execution vulnerability, responsibly reported by [Dawid Golunski](http://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html). | ||
|
||
PHPMailer versions prior to 5.2.14 (released November 2015) are vulnerable to [CVE-2015-8476](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-8476) an SMTP CRLF injection bug permitting arbitrary message sending. | ||
|
||
PHPMailer versions prior to 5.2.10 (released May 2015) are vulnerable to [CVE-2008-5619](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2008-5619), a remote code execution vulnerability in the bundled html2text library. This file was removed in 5.2.10, so if you are using a version prior to that and make use of the html2text function, it's vitally important that you upgrade and remove this file. | ||
|
||
PHPMailer versions prior to 2.0.7 and 2.2.1 are vulnerable to [CVE-2012-0796](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-0796), an email header injection attack. | ||
|
||
Joomla 1.6.0 uses PHPMailer in an unsafe way, allowing it to reveal local file paths, reported in [CVE-2011-3747](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-3747). | ||
|
||
PHPMailer didn't sanitise the `$lang_path` parameter in `SetLanguage`. This wasn't a problem in itself, but some apps (PHPClassifieds, ATutor) also failed to sanitise user-provided parameters passed to it, permitting semi-arbitrary local file inclusion, reported in [CVE-2010-4914](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-4914), [CVE-2007-2021](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2007-2021) and [CVE-2006-5734](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2006-5734). | ||
|
||
PHPMailer 1.7.2 and earlier contained a possible DDoS vulnerability reported in [CVE-2005-1807](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2005-1807). | ||
|
||
PHPMailer 1.7 and earlier (June 2003) have a possible vulnerability in the `SendmailSend` method where shell commands may not be sanitised. Reported in [CVE-2007-3215](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2007-3215). | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
6.9.1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
{ | ||
"name": "phpmailer/phpmailer", | ||
"type": "library", | ||
"description": "PHPMailer is a full-featured email creation and transfer class for PHP", | ||
"authors": [ | ||
{ | ||
"name": "Marcus Bointon", | ||
"email": "[email protected]" | ||
}, | ||
{ | ||
"name": "Jim Jagielski", | ||
"email": "[email protected]" | ||
}, | ||
{ | ||
"name": "Andy Prevost", | ||
"email": "[email protected]" | ||
}, | ||
{ | ||
"name": "Brent R. Matzelle" | ||
} | ||
], | ||
"funding": [ | ||
{ | ||
"url": "https://github.com/Synchro", | ||
"type": "github" | ||
} | ||
], | ||
"config": { | ||
"allow-plugins": { | ||
"dealerdirect/phpcodesniffer-composer-installer": true | ||
} | ||
}, | ||
"require": { | ||
"php": ">=5.5.0", | ||
"ext-ctype": "*", | ||
"ext-filter": "*", | ||
"ext-hash": "*" | ||
}, | ||
"require-dev": { | ||
"dealerdirect/phpcodesniffer-composer-installer": "^1.0", | ||
"doctrine/annotations": "^1.2.6 || ^1.13.3", | ||
"php-parallel-lint/php-console-highlighter": "^1.0.0", | ||
"php-parallel-lint/php-parallel-lint": "^1.3.2", | ||
"phpcompatibility/php-compatibility": "^9.3.5", | ||
"roave/security-advisories": "dev-latest", | ||
"squizlabs/php_codesniffer": "^3.7.2", | ||
"yoast/phpunit-polyfills": "^1.0.4" | ||
}, | ||
"suggest": { | ||
"decomplexity/SendOauth2": "Adapter for using XOAUTH2 authentication", | ||
"ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", | ||
"ext-openssl": "Needed for secure SMTP sending and DKIM signing", | ||
"greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication", | ||
"hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", | ||
"league/oauth2-google": "Needed for Google XOAUTH2 authentication", | ||
"psr/log": "For optional PSR-3 debug logging", | ||
"thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication", | ||
"symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)" | ||
}, | ||
"autoload": { | ||
"psr-4": { | ||
"PHPMailer\\PHPMailer\\": "src/" | ||
} | ||
}, | ||
"autoload-dev": { | ||
"psr-4": { | ||
"PHPMailer\\Test\\": "test/" | ||
} | ||
}, | ||
"license": "LGPL-2.1-only", | ||
"scripts": { | ||
"check": "./vendor/bin/phpcs", | ||
"test": "./vendor/bin/phpunit --no-coverage", | ||
"coverage": "./vendor/bin/phpunit", | ||
"lint": [ | ||
"@php ./vendor/php-parallel-lint/php-parallel-lint/parallel-lint . --show-deprecated -e php,phps --exclude vendor --exclude .git --exclude build" | ||
] | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,182 @@ | ||
<?php | ||
|
||
/** | ||
* PHPMailer - PHP email creation and transport class. | ||
* PHP Version 5.5 | ||
* @package PHPMailer | ||
* @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project | ||
* @author Marcus Bointon (Synchro/coolbru) <[email protected]> | ||
* @author Jim Jagielski (jimjag) <[email protected]> | ||
* @author Andy Prevost (codeworxtech) <[email protected]> | ||
* @author Brent R. Matzelle (original founder) | ||
* @copyright 2012 - 2020 Marcus Bointon | ||
* @copyright 2010 - 2012 Jim Jagielski | ||
* @copyright 2004 - 2009 Andy Prevost | ||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License | ||
* @note This program is distributed in the hope that it will be useful - WITHOUT | ||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
* FITNESS FOR A PARTICULAR PURPOSE. | ||
*/ | ||
|
||
/** | ||
* Get an OAuth2 token from an OAuth2 provider. | ||
* * Install this script on your server so that it's accessible | ||
* as [https/http]://<yourdomain>/<folder>/get_oauth_token.php | ||
* e.g.: http://localhost/phpmailer/get_oauth_token.php | ||
* * Ensure dependencies are installed with 'composer install' | ||
* * Set up an app in your Google/Yahoo/Microsoft account | ||
* * Set the script address as the app's redirect URL | ||
* If no refresh token is obtained when running this file, | ||
* revoke access to your app and run the script again. | ||
*/ | ||
|
||
namespace PHPMailer\PHPMailer; | ||
|
||
/** | ||
* Aliases for League Provider Classes | ||
* Make sure you have added these to your composer.json and run `composer install` | ||
* Plenty to choose from here: | ||
* @see http://oauth2-client.thephpleague.com/providers/thirdparty/ | ||
*/ | ||
//@see https://github.com/thephpleague/oauth2-google | ||
use League\OAuth2\Client\Provider\Google; | ||
//@see https://packagist.org/packages/hayageek/oauth2-yahoo | ||
use Hayageek\OAuth2\Client\Provider\Yahoo; | ||
//@see https://github.com/stevenmaguire/oauth2-microsoft | ||
use Stevenmaguire\OAuth2\Client\Provider\Microsoft; | ||
//@see https://github.com/greew/oauth2-azure-provider | ||
use Greew\OAuth2\Client\Provider\Azure; | ||
|
||
if (!isset($_GET['code']) && !isset($_POST['provider'])) { | ||
?> | ||
<html> | ||
<body> | ||
<form method="post"> | ||
<h1>Select Provider</h1> | ||
<input type="radio" name="provider" value="Google" id="providerGoogle"> | ||
<label for="providerGoogle">Google</label><br> | ||
<input type="radio" name="provider" value="Yahoo" id="providerYahoo"> | ||
<label for="providerYahoo">Yahoo</label><br> | ||
<input type="radio" name="provider" value="Microsoft" id="providerMicrosoft"> | ||
<label for="providerMicrosoft">Microsoft</label><br> | ||
<input type="radio" name="provider" value="Azure" id="providerAzure"> | ||
<label for="providerAzure">Azure</label><br> | ||
<h1>Enter id and secret</h1> | ||
<p>These details are obtained by setting up an app in your provider's developer console. | ||
</p> | ||
<p>ClientId: <input type="text" name="clientId"><p> | ||
<p>ClientSecret: <input type="text" name="clientSecret"></p> | ||
<p>TenantID (only relevant for Azure): <input type="text" name="tenantId"></p> | ||
<input type="submit" value="Continue"> | ||
</form> | ||
</body> | ||
</html> | ||
<?php | ||
exit; | ||
} | ||
|
||
require 'vendor/autoload.php'; | ||
|
||
session_start(); | ||
|
||
$providerName = ''; | ||
$clientId = ''; | ||
$clientSecret = ''; | ||
$tenantId = ''; | ||
|
||
if (array_key_exists('provider', $_POST)) { | ||
$providerName = $_POST['provider']; | ||
$clientId = $_POST['clientId']; | ||
$clientSecret = $_POST['clientSecret']; | ||
$tenantId = $_POST['tenantId']; | ||
$_SESSION['provider'] = $providerName; | ||
$_SESSION['clientId'] = $clientId; | ||
$_SESSION['clientSecret'] = $clientSecret; | ||
$_SESSION['tenantId'] = $tenantId; | ||
} elseif (array_key_exists('provider', $_SESSION)) { | ||
$providerName = $_SESSION['provider']; | ||
$clientId = $_SESSION['clientId']; | ||
$clientSecret = $_SESSION['clientSecret']; | ||
$tenantId = $_SESSION['tenantId']; | ||
} | ||
|
||
//If you don't want to use the built-in form, set your client id and secret here | ||
//$clientId = 'RANDOMCHARS-----duv1n2.apps.googleusercontent.com'; | ||
//$clientSecret = 'RANDOMCHARS-----lGyjPcRtvP'; | ||
|
||
//If this automatic URL doesn't work, set it yourself manually to the URL of this script | ||
$redirectUri = (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; | ||
//$redirectUri = 'http://localhost/PHPMailer/redirect'; | ||
|
||
$params = [ | ||
'clientId' => $clientId, | ||
'clientSecret' => $clientSecret, | ||
'redirectUri' => $redirectUri, | ||
'accessType' => 'offline' | ||
]; | ||
|
||
$options = []; | ||
$provider = null; | ||
|
||
switch ($providerName) { | ||
case 'Google': | ||
$provider = new Google($params); | ||
$options = [ | ||
'scope' => [ | ||
'https://mail.google.com/' | ||
] | ||
]; | ||
break; | ||
case 'Yahoo': | ||
$provider = new Yahoo($params); | ||
break; | ||
case 'Microsoft': | ||
$provider = new Microsoft($params); | ||
$options = [ | ||
'scope' => [ | ||
'wl.imap', | ||
'wl.offline_access' | ||
] | ||
]; | ||
break; | ||
case 'Azure': | ||
$params['tenantId'] = $tenantId; | ||
|
||
$provider = new Azure($params); | ||
$options = [ | ||
'scope' => [ | ||
'https://outlook.office.com/SMTP.Send', | ||
'offline_access' | ||
] | ||
]; | ||
break; | ||
} | ||
|
||
if (null === $provider) { | ||
exit('Provider missing'); | ||
} | ||
|
||
if (!isset($_GET['code'])) { | ||
//If we don't have an authorization code then get one | ||
$authUrl = $provider->getAuthorizationUrl($options); | ||
$_SESSION['oauth2state'] = $provider->getState(); | ||
header('Location: ' . $authUrl); | ||
exit; | ||
//Check given state against previously stored one to mitigate CSRF attack | ||
} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) { | ||
unset($_SESSION['oauth2state']); | ||
unset($_SESSION['provider']); | ||
exit('Invalid state'); | ||
} else { | ||
unset($_SESSION['provider']); | ||
//Try to get an access token (using the authorization code grant) | ||
$token = $provider->getAccessToken( | ||
'authorization_code', | ||
[ | ||
'code' => $_GET['code'] | ||
] | ||
); | ||
//Use this to interact with an API on the users behalf | ||
//Use this to get a new access token if the old one expires | ||
echo 'Refresh Token: ', $token->getRefreshToken(); | ||
} |
Oops, something went wrong.