Sto cercando di capire il difetto di PHP Object Injection in vBulletin 5.1.x (CVE 2015-7808) e mi sono imbattuto nei requisiti per Object Injection come dichiarato da OWASP:
The application must have a class which implements a PHP magic method (such as __wakeup or __destruct) that can be used to carry out malicious attacks, or to start a "POP chain".
Source: https://www.owasp.org/index.php/PHP_Object_Injection
Tuttavia in questa scrittura sulla vulnerabilità di vbulletin non vedo un metodo magico sfruttato, viene invece chiamata la funzione rewind()
della classe vB_dB_Result
a causa di foreach()
:
public function decodeArguments($arguments){
if ($args = @unserialize($arguments)){
$result = '';
foreach ($args AS $varname => $value){
$result .= $varname;
...
class vB_dB_Result implements Iterator{
...
public function rewind(){
//no need to rerun the query if we are at the beginning of the recordset.
if ($this->bof){
return;
}
if ($this->recordset){
$this->db->free_result($this->recordset);
}
...
abstract class vB_Database{
...
function free_result($queryresult){
$this->sql = '';
return @$this->functions['free_result']($queryresult);
}
Mi manca qualcosa o la dichiarazione OWASP è semplicemente falsa in questo caso?