phar:// deserialization
Bug bounty ipucu: Intigriti'ye kaydolun, hackers tarafından, hackers için oluşturulmuş premium bir bug bounty platformu! Bugün https://go.intigriti.com/hacktricks adresine katılın ve $100,000'a kadar ödüller kazanmaya başlayın!
Phar dosyaları (PHP Archive) serileştirilmiş formatta meta veri içerir, bu nedenle, ayrıştırıldığında bu meta veri deserileştirilir ve PHP kodu içinde bir deserileştirme açığını kötüye kullanmayı deneyebilirsiniz.
Bu özelliğin en iyi yanı, bu deserileştirmenin file_get_contents(), fopen(), file() veya file_exists(), md5_file(), filemtime() veya filesize() gibi PHP kodunu eval etmeyen PHP fonksiyonları kullanıldığında bile gerçekleşmesidir.
Yani, bir PHP web uygulamasının phar://
protokolünü kullanarak keyfi bir dosyanın boyutunu alabileceği bir durumu hayal edin ve kodun içinde aşağıdaki gibi bir sınıf bulursunuz:
Yüklenildiğinde bu sınıfı kötüye kullanarak rastgele komutlar çalıştıracak bir phar dosyası oluşturabilirsiniz:
JPG'nin sihirli baytlarının (\xff\xd8\xff
) phar dosyasının başına eklendiğine dikkat edin, bu mümkün dosya yükleme kısıtlamalarını aşmak için.
test.phar
dosyasını şu şekilde derleyin:
Ve zayıf kodu kötüye kullanarak whoami
komutunu çalıştırın:
Referanslar
Hata ödülü ipucu: Intigriti için kayıt olun, hackerlar tarafından, hackerlar için oluşturulmuş premium bir hata ödülü platformu! Bugün https://go.intigriti.com/hacktricks adresine katılın ve $100,000'a kadar ödüller kazanmaya başlayın!
Last updated