Estoy tratando de entender la falla de la Inyección de Objetos de PHP en vBulletin 5.1.x (CVE 2015-7808) y me topé con los requisitos para la Inyección de Objetos como lo indica OWASP:
La aplicación debe tener una clase que implemente un método mágico de PHP (como __wakeup o __destruct) que puede usarse para llevar a cabo ataques maliciosos, o para iniciar una "cadena POP".
Fuente: enlace
Sin embargo, en este informe sobre la vulnerabilidad de vbulletin no veo un método mágico siendo explotado, en su lugar, se llama a la función rewind()
de la clase vB_dB_Result
debido a 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);
}
¿Me falta algo o la declaración OWASP es simplemente falsa en este caso?