Siber güvenlik farkındalığı amacıyla paylaşılmıştır. Yasa dışı kullanımda kullanan kişi sorumludur.

Yazıcıların güvenlik açığının arkasındaki neden, yalnızca açık bir IPP bağlantı noktasıydı.

(IPP) – istemci cihazlar ve yazıcılar arasındaki iletişim için özel bir İnternet protokolüdür.

İstemcilerin bir veya daha fazla yazdırma işini yazıcıya veya yazdırma sunucusuna göndermesine ve yazıcının durumunu sorgulama gibi görevleri gerçekleştirmesine olanak tanır. Yazdırma işlerinin durumunu alma veya tek tek yazdırma işlerini iptal etme.

Bir IPP bağlantı noktası internete açık olduğunda, herkesin yazıcıya yazdırma yapması veya hatta onun aracılığıyla kötü amaçlı verileri aktarması (saldırılar için aracı olarak kullanarak) mümkündür.

VARIoT (IoT için Güvenlik Açığı ve Saldırı Deposu) tarafından yakın zamanda yapılan bir araştırma , dünyaya açılan yaklaşık 80 bin savunmasız yazıcı olduğunu gösterdi. Çoğu, CUPS sunucusunu (basit bir UNIX yazdırma sistemi olan) çalıştırıyor gibi görünüyor.


Açık bir IPP bağlantı noktası, yazıcı adı, konumu, modeli, ürün yazılımı sürümü ve hatta yazıcı wifi SSID’si gibi birçok bilgiyi açığa çıkarabilir.

Default IPP portu 631’dir.

Olayı Anladıgınıza göre Başlıyalım

Yerel ağ yazıcılarını bulma ve kullanma

git clone https://github.com/RUB-NDS/PRE

cd PRET

python2 -m pip install colorama pysnmP

Artık çalıştırmaya hazırız.

python pret.py

Local ağda otomatik olarak yazıcıları arıyacakdır.



-Exploiting aşaması

PRET kullanarak bir yazıcıdan yararlanırken denemeniz gereken tam olarak üç seçenek vardır:
1. ps (Dipnot)
2. pjl (Yazıcı İş Dili)
3. pcl (Yazıcı Komut Dili)

3 dilinide denemeniz gerekicek.

Örnek Kullanım
python pret.py {IP} pjl
python pret.py laserjet.lan ps
python pret.py /dev/usb/lp0 pcl

(Son seçenek, bilgisayarınıza zaten bağlı bir yazıcınız varsa çalışır)

After running this command, you are supposed to get shell-alike output with different commands.
Onları görmek için “help çalıştırın.


Yazıcıların iletişim kurmak için kullanabileceği farklı dillerde mevcut çeşitli örnek komutlar

Gördüğünüz gibi PRET, yazıcıyla uzak bir dizinle çalışıyormuşuz gibi etkileşim kurmamıza izin veriyor. Artık yazıcıda bilgi saklayabilir, silebilir veya ekleyebiliriz.
(Daha fazla komut ve örnek için projenin GitHub’ını okuyun)

Sadece güvenliğini test etmek için PRET’i evde yazıcınızda deneyebilirsiniz.

IPP yapılandırmasının Kötü Örneği


Bir IPP Baglantısı örnegi
10.10.36.xxx:631
Bir cups print server çalışmakda

Ssh sunucusuna bruteforce kullandım şifreyi elde ettim
ssh [email protected] -T -L 3631:localhost:631

Komutu ile ssh tunelleme yaptık

http://127.0.0.1:3631/printers/
Adresinden erişim sagladım