
Kritik PHP Güvenlik Açığı
5
●428
- Dün, 19:25:20PHP yama yayınladı
Ubuntuda da yama geldi
Ubuntu otomatik yama scripti:
cat > /root/php2shell-guncelle.sh <<'EOF' #!/usr/bin/env bash # php2shell-guncelle.sh # Ubuntu VDS'lerde: Ubuntu kontrolü, PHP tespiti, güvenlik deposu ekleme, # PHP güncelleme, servis yeniden başlatma ve PHP2Shell yaması doğrulaması. # Kullanım: # bash php2shell-guncelle.sh -> sadece PHP paketlerini günceller # bash php2shell-guncelle.sh --tam -> tüm sistemi günceller (apt upgrade) set -uo pipefail TAM=0 [[ "${1:-}" == "--tam" ]] && TAM=1 kirmizi() { printf '\033[31m%s\033[0m\n' "$*"; } yesil() { printf '\033[32m%s\033[0m\n' "$*"; } sari() { printf '\033[33m%s\033[0m\n' "$*"; } baslik() { printf '\n\033[1m== %s ==\033[0m\n' "$*"; } if [[ $EUID -ne 0 ]]; then kirmizi "Bu betik root kullanıcısıyla çalıştırılmalı." exit 1 fi LOG="/root/php2shell-$(date +%Y%m%d-%H%M%S).log" exec > >(tee -a "$LOG") 2>&1 SORUN=0 baslik "1/6 İşletim sistemi" if [[ ! -r /etc/os-release ]]; then kirmizi "/etc/os-release bulunamadı, sistem tanınamadı." exit 1 fi . /etc/os-release if [[ "${ID:-}" != "ubuntu" ]]; then kirmizi "Bu sunucu Ubuntu değil: ${PRETTY_NAME:-bilinmiyor}. Betik sadece Ubuntu içindir." exit 1 fi KOD="${VERSION_CODENAME:-${UBUNTU_CODENAME:-}}" echo "Sistem: ${PRETTY_NAME} (${KOD})" ESKI_SURUM=0 case "$KOD" in jammy|noble|resolute|stonking) yesil "Bu Ubuntu sürümü için Ubuntu güvenlik yaması yayınlandı (USN-8948-1)." ;; focal|bionic|xenial|trusty) ESKI_SURUM=1 sari "UYARI: ${KOD} standart destek dışında; ücretsiz Ubuntu deposunda bu açık için yama yok." sari "Ubuntu Pro (ESM) açıksa 'pro fix CVE-2026-109618' ile kontrol et; yoksa yeni bir Ubuntu sürümüne geçmek gerekir." ;; *) sari "UYARI: ${KOD} için yama durumu bilinmiyor; yine de devam ediliyor." ;; esac baslik "2/6 PHP tespiti" mapfile -t PAKETLER < <(dpkg-query -W -f='${db:Status-Abbrev} ${Package}\n' 'php*' 'libapache2-mod-php*' 2>/dev/null \ | awk '$1=="ii"{print $2}') mapfile -t SURUMLER < <(printf '%s\n' "${PAKETLER[@]}" \ | grep -oE '^(php|libapache2-mod-php)[0-9]+\.[0-9]+' \ | grep -oE '[0-9]+\.[0-9]+$' | sort -uV) PAKET_DISI=() for yol in /opt/cpanel/ea-php* /opt/alt/php* /opt/plesk/php/* /opt/remi/php* /usr/local/bin/php /usr/local/sbin/php-fpm; do [[ -e "$yol" ]] && PAKET_DISI+=("$yol") done if [[ ${#SURUMLER[@]} -eq 0 && ${#PAKET_DISI[@]} -eq 0 ]] && ! command -v php >/dev/null 2>&1; then yesil "Bu sunucuda PHP kurulu değil. PHP2Shell bu sunucuyu etkilemiyor." echo "Log: $LOG" exit 0 fi ONDREJ=0 if grep -rqsE 'ondrej/php|packages\.sury\.org' /etc/apt/sources.list /etc/apt/sources.list.d/; then ONDREJ=1 fi if [[ ${#SURUMLER[@]} -gt 0 ]]; then echo "Kurulu PHP sürümleri (paket):" for s in "${SURUMLER[@]}"; do ver=$(dpkg-query -W -f='${Version}' "php${s}-common" 2>/dev/null || true) echo " - PHP ${s} (${ver:-?})" done if [[ $ONDREJ -eq 1 ]]; then echo "Kaynak: Ondřej Surý PPA / packages.sury.org" else echo "Kaynak: Ubuntu'nun kendi depoları" fi fi MOD_PHP=0 if printf '%s\n' "${PAKETLER[@]}" | grep -q '^libapache2-mod-php'; then MOD_PHP=1 sari "Apache mod_php kurulu (en riskli kurulum türü)." fi if [[ ${#PAKET_DISI[@]} -gt 0 ]]; then sari "Paket yöneticisi dışında PHP bulundu; bu betik bunları GÜNCELLEYEMEZ:" printf ' - %s\n' "${PAKET_DISI[@]}" sari "Bunları kendi paneli / sağlayıcısı üzerinden güncellemen gerekir." SORUN=1 fi TUTULAN=$(apt-mark showhold 2>/dev/null | grep -E '^(php|libapache2-mod-php)' || true) if [[ -n "$TUTULAN" ]]; then sari "UYARI: Kilitli (hold) PHP paketleri var, bunlar GÜNCELLENMEYECEK:" echo "$TUTULAN" sari "Kilidi kaldırmak için: apt-mark unhold <paket>" fi baslik "3/6 Güvenlik deposu" VAR=0 for f in /etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources; do [[ -f "$f" ]] || continue if grep -q 'security\.ubuntu\.com' "$f" && grep -q "${KOD}-security" "$f"; then VAR=1 echo "security.ubuntu.com zaten tanımlı: $f" break fi done if [[ $VAR -eq 0 ]]; then LISTE=/etc/apt/sources.list.d/ubuntu-security-direct.list echo "deb http://security.ubuntu.com/ubuntu ${KOD}-security main universe" > "$LISTE" yesil "Eklendi: $LISTE" fi baslik "4/6 Paket listesi" if ! apt-get update; then sari "apt-get update hata verdi; ağ veya depo bağlantısını kontrol et. Devam ediliyor." fi for s in "${SURUMLER[@]}"; do kurulu=$(apt-cache policy "php${s}-common" | awk '/Installed:/{print $2}') aday=$(apt-cache policy "php${s}-common" | awk '/Candidate:/{print $2}') echo "PHP ${s}: kurulu ${kurulu} -> aday ${aday}" done baslik "5/6 Güncelleme" export DEBIAN_FRONTEND=noninteractive APT_OPTS=(-y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold) if [[ $TAM -eq 1 ]]; then echo "Tüm sistem güncelleniyor (--tam)..." apt-get "${APT_OPTS[@]}" upgrade || sari "apt-get upgrade hatayla bitti; aşağıdaki dpkg kontrolüne bak." elif [[ ${#PAKETLER[@]} -gt 0 ]]; then echo "Sadece PHP paketleri güncelleniyor..." apt-get "${APT_OPTS[@]}" install --only-upgrade "${PAKETLER[@]}" || sari "Güncelleme hatayla bitti; aşağıdaki dpkg kontrolüne bak." fi for s in "${SURUMLER[@]}"; do if systemctl is-active --quiet "php${s}-fpm"; then if systemctl restart "php${s}-fpm"; then yesil "php${s}-fpm yeniden başlatıldı." else kirmizi "php${s}-fpm yeniden başlatılamadı!" SORUN=1 fi fi done if [[ $MOD_PHP -eq 1 ]] && systemctl is-active --quiet apache2; then if systemctl restart apache2; then yesil "apache2 yeniden başlatıldı (mod_php)." else kirmizi "apache2 yeniden başlatılamadı!" SORUN=1 fi fi baslik "6/6 Doğrulama" declare -A DUZELTILMIS=( [8.2]=8.2.35 [8.3]=8.3.36 [8.4]=8.4.27 [8.5]=8.5.12 ) for s in "${SURUMLER[@]}"; do ver=$(dpkg-query -W -f='${Version}' "php${s}-common" 2>/dev/null || true) ust=${ver#*:}; ust=${ust%%-*}; ust=${ust%%+*} durum="" if [[ -n "${DUZELTILMIS[$s]:-}" && -n "$ust" ]] && dpkg --compare-versions "$ust" ge "${DUZELTILMIS[$s]}"; then durum="yamalı (upstream ${ust})" else for d in common cli fpm; do f="/usr/share/doc/php${s}-${d}/changelog.Debian.gz" if [[ -f "$f" ]] && zgrep -q 'CVE-2026-109618' "$f"; then durum="yamalı (paket changelog'unda CVE düzeltmesi var)" break fi done fi if [[ -n "$durum" ]]; then yesil "PHP ${s} (${ver}): ${durum}" else kirmizi "PHP ${s} (${ver:-?}): YAMASIZ" SORUN=1 fi done ESKI=$(grep -lE '(php|libphp).*\(deleted\)' /proc/[0-9]*/maps 2>/dev/null | cut -d/ -f3 | sort -u || true) if [[ -n "$ESKI" ]]; then kirmizi "Hâlâ ESKİ PHP ile çalışan süreçler var (yeniden başlatılmalı):" for p in $ESKI; do ps -o pid=,user=,cmd= -p "$p" 2>/dev/null; done SORUN=1 else yesil "Eski PHP ile çalışan süreç yok." fi AUDIT=$(dpkg --audit 2>/dev/null || true) if [[ -n "$AUDIT" ]]; then sari "dpkg'de yarım kalmış paketler var (PHP dışı olabilir):" echo "$AUDIT" fi if [[ $TAM -eq 1 && -f /var/run/reboot-required ]]; then sari "Sistem güncellemesi yeniden başlatma istiyor (/var/run/reboot-required)." fi baslik "Sonuç" if [[ $SORUN -eq 0 ]]; then yesil "TAMAM: Bu sunucudaki PHP yamalı ve yeni sürümle çalışıyor." else kirmizi "DİKKAT: Yukarıda kırmızı/sarı işaretli sorunlar var." [[ $ONDREJ -eq 1 ]] && sari "- Ondřej PPA henüz güncellenmemiş olabilir; bir süre sonra betiği tekrar çalıştır." [[ $ESKI_SURUM -eq 1 ]] && sari "- Eski Ubuntu sürümü: Ubuntu Pro (ESM) veya sürüm yükseltmesi gerekir." sari "- Yama gelene kadar: php.ini / FPM pool içinde session.upload_progress.enabled=0" sari " ve PHP 8.5'te fatal_error_backtraces=0 ayarlayıp PHP'yi yeniden başlat." fi echo "Log: $LOG" exit $SORUN EOF bash /root/php2shell-guncelle.sh - Dün, 19:58:23runo10 adlı üyeden alıntı: mesajı görüntüle
update ve upgrade yapınca uygulanıyor mu hcoam acaba yoksa verdiğinzi mi çalıştırmak lazım - Dün, 20:00:38Hi there,
PHP has released security fixes for two critical vulnerabilities (CVE-2026-109618 and CVE-2026-109619), both rated 9.2 under CVSS v4.0.
If you're running PHP, please update to version 8.5.12, 8.4.27, 8.3.36, or 8.2.35 as soon as possible. You can find more details in the official PHP security announcement.
We've also added managed WAF rules to Bunny Shield to help block specific exploit patterns while updates are being rolled out. Bunny Shield provides an additional layer of protection, but keeping PHP updated remains essential.
If your website or application doesn't use PHP, no action is needed, and you can disregard this email.
Read our security update and recommended next steps. - Dün, 20:45:54Almanya mirroruna gelmemişti daha o yüzden repo değiştirmek gerekebiliyor scriptle deneyin derim.Saul4Goodmann adlı üyeden alıntı: mesajı görüntüle