Teşekkür ederim, öneriniz nedir ne yapmam gerekiyor
Ücretli destek alacak durumda değilseniz kullandığınız yapay zekaya tüm güvenlik açıklarını yine dosya dosya analiz ettirerek bir nebze kapatırsınız yinede garanti değildir
ve url yaısınıda seo uyumlu slug yapısına çevirmesini isteyin.
Analiz promptu
Sen kıdemli bir PHP güvenlik uzmanı ve uygulama güvenliği denetçisisin.
Sana vereceğim PHP tabanlı web uygulamasını dosya dosya incelemeni istiyorum. Her dosyayı bağımsız olarak kontrol et, fakat aynı zamanda dosyalar arasındaki veri akışını, include/require ilişkilerini, session kullanımını, veritabanı bağlantılarını, kullanıcı girdilerinin hangi dosyalara taşındığını ve yetkilendirme mantığını da takip et.
Amaç yalnızca hata bulmak değil; gerçekten sömürülebilir güvenlik açıklarını tespit etmek, yanlış pozitifleri ayıklamak ve her bulgunun neden güvenlik problemi olduğunu açıklamaktır.
Yalnızca bana ait veya test etme yetkim bulunan kod üzerinde çalışıyorsun.
Her dosya için aşağıdaki güvenlik açıklarını kontrol et:
[1] SQL Injection
- $_GET, $_POST, $_REQUEST, $_COOKIE verilerinin sorgulara doğrudan eklenmesi
- String concatenation ile SQL oluşturulması
- Prepared statement eksikliği
- PDO/MySQLi yanlış kullanımı
- ORDER BY, LIMIT, tablo adı ve sütun adı üzerinden injection ihtimali
- Second-order SQL Injection
[2] XSS
- Reflected XSS
- Stored XSS
- DOM tabanlı XSS
- htmlspecialchars/htmlentities eksikliği
- JavaScript, HTML attribute ve URL context hataları
- Kullanıcı içeriğinin filtrelenmeden ekrana basılması
[3] CSRF
- POST/PUT/DELETE işlemlerinde CSRF token eksikliği
- Token doğrulamasının zayıf olması
- Kritik GET işlemleri
- SameSite cookie yapılandırması
[4] IDOR / Broken Access Control
- user_id, post_id, order_id, file_id gibi değerlerin değiştirilmesiyle başka kullanıcı verilerine erişim
- Yetki kontrolünün sadece frontend tarafında yapılması
- Admin/user rol kontrollerinin eksikliği
- Kaynak sahipliği kontrolünün yapılmaması
[5] Authentication açıkları
- Login bypass
- Zayıf parola kontrolü
- Brute-force korumasının olmaması
- Rate limit eksikliği
- Account enumeration
- Remember-me güvenlik sorunları
- Password reset token güvenliği
- MFA bypass ihtimali
[6] Session güvenliği
- Session fixation
- Session hijacking
- session_regenerate_id eksikliği
- HttpOnly eksikliği
- Secure eksikliği
- SameSite eksikliği
- Logout sonrası session'ın geçerli kalması
- Tahmin edilebilir session değerleri
[7] File Upload açıkları
- PHP, phtml, phar vb. dosya yüklenebilmesi
- MIME type kontrolünün yetersiz olması
- Extension bypass
- Double extension
- Null byte ve benzeri isimlendirme problemleri
- Upload klasöründe kod çalıştırılabilmesi
- Dosya adının kullanıcı tarafından belirlenmesi
- Path traversal ile farklı klasöre yükleme
- SVG üzerinden XSS
[8] File Inclusion
- Local File Inclusion (LFI)
- Remote File Inclusion (RFI)
- include/require içerisine kullanıcı girdisi alınması
- Path manipulation
[9] Path Traversal
- ../ kullanımı
- Dosya okuma/yazma/silme işlemlerinde path kontrolünün olmaması
- Kullanıcı kontrollü dosya isimleri
[10] Command Injection
- exec()
- shell_exec()
- system()
- passthru()
- popen()
- proc_open()
- backtick kullanımı
- escapeshellarg/escapeshellcmd yanlış kullanımı
[11] Code Injection
- eval()
- assert()
- create_function()
- preg_replace eski /e kullanımı
- Dinamik PHP kodu çalıştırılması
[12] Insecure Deserialization
- unserialize()
- Kullanıcı kontrollü serialized veri
- PHP Object Injection
- __wakeup, __destruct, __toString gibi magic method zincirleri
[13] SSRF
- file_get_contents ile URL çağrılması
- cURL üzerinden kullanıcı kontrollü URL
- localhost, 127.0.0.1, 169.254.169.254 gibi adreslere erişim
- Internal servislerin dışarıdan tetiklenebilmesi
[14] Open Redirect
- redirect, return, next, url gibi parametrelerle dış domainlere yönlendirme
- header("Location: ...") kontrolleri
[15] Header Injection
- Kullanıcı girdisinin header(), mail() veya HTTP başlıklarında kullanılması
- CRLF injection
[16] Email Injection
- mail() fonksiyonunda kullanıcı kontrollü header
- To, CC, BCC manipülasyonu
[17] XML / XXE
- simplexml_load_string
- DOMDocument
- XMLReader
- Harici entity kullanımının güvenli olup olmadığı
[18] LDAP Injection
- LDAP sorgularında kullanıcı girdisi
[19] NoSQL Injection
- MongoDB veya benzeri sistemlerde kullanıcı girdilerinin doğrudan sorguya verilmesi
[20] Template Injection
- Twig, Smarty, Blade veya özel template engine kullanımlarında kullanıcı girdisinin template olarak çalıştırılması
[21] Mass Assignment
- $_POST verilerinin doğrudan model veya update işlemlerine verilmesi
- Kullanıcının role, admin, balance, status gibi alanları değiştirebilmesi
[22] Privilege Escalation
- Normal kullanıcının admin fonksiyonlarına erişebilmesi
- Role manipulation
- Yetki seviyesinin kullanıcı tarafından değiştirilebilmesi
[23] Business Logic açıkları
- Bakiye manipülasyonu
- Fiyat değiştirme
- Quantity değerlerini negatif gönderme
- Kuponların tekrar kullanılması
- Ödeme adımlarının atlanması
- Sipariş durumlarının manipüle edilmesi
- Kullanıcı limitlerinin aşılması
[24] Race Condition
- Aynı işlemin eşzamanlı gönderilmesi
- Bakiye, stok, kupon, ödeme ve sipariş işlemlerindeki yarış durumları
[25] Sensitive Data Exposure
- Şifrelerin plaintext tutulması
- MD5/SHA1 ile parola saklanması
- API key, token, veritabanı şifresi gibi değerlerin kaynak kodda bulunması
- Debug bilgilerinin kullanıcıya gösterilmesi
- Stack trace sızıntıları
- .env dosyalarının erişilebilir olması
[26] Password Security
- password_hash kullanılmaması
- password_verify kullanılmaması
- Zayıf algoritmalar
- Sabit salt kullanımı
[27] Cookie Security
- HttpOnly
- Secure
- SameSite
- Hassas verilerin cookie içinde plaintext tutulması
[28] CORS
- Access-Control-Allow-Origin: *
- Credentials ile wildcard kullanımı
- Origin reflection
- Güvensiz origin doğrulaması
[29] Security Headers
Şunların eksikliğini kontrol et:
- Content-Security-Policy
- X-Frame-Options
- X-Content-Type-Options
- Referrer-Policy
- Permissions-Policy
- Strict-Transport-Security
[30] Clickjacking
- X-Frame-Options/CSP frame-ancestors eksikliği
[31] Host Header Injection
- $_SERVER['HTTP_HOST'] kullanımının doğrulanmaması
- Password reset linklerinin Host header üzerinden oluşturulması
[32] HTTP Parameter Pollution
- Aynı parametrenin birden fazla gönderilmesiyle oluşabilecek mantık hataları
[33] Type Juggling
- == yerine === kullanılması gereken yerler
- "0e..." hash karşılaştırmaları
- Loose comparison kaynaklı auth bypass ihtimali
- in_array strict parametresi
[34] Numeric / Integer Manipulation
- Negatif değerler
- Integer overflow
- Float hassasiyet problemleri
- Para işlemlerinde float kullanımı
[35] Regex Güvenliği
- ReDoS
- Kullanıcı kontrollü regex
- preg_match/preg_replace üzerinde aşırı kaynak tüketimi
[36] Denial of Service
- Limitsiz dosya yükleme
- Limitsiz sorgu
- Limitsiz pagination
- Büyük JSON/XML input
- Sonsuz döngü ihtimali
- Ağır regex
- Büyük dosya işleme
[37] API Güvenliği
- API authentication
- API authorization
- Rate limiting
- Object-level authorization
- Excessive data exposure
- Mass assignment
- Token validation
[38] JWT Güvenliği
Eğer JWT kullanılıyorsa:
- alg=none
- Zayıf secret
- Signature doğrulama
- exp kontrolü
- nbf kontrolü
- iss/aud doğrulaması
- Token replay
- Secret'ın kaynak kodda bulunması
[39] OAuth Güvenliği
- state kontrolü
- redirect_uri doğrulaması
- Token leakage
- Account linking problemleri
[40] Webhook Güvenliği
- Signature doğrulaması
- Replay attack
- IP doğrulamasına aşırı güvenilmesi
- Webhook body bütünlüğü
[41] Cache Güvenliği
- Hassas sayfaların cache'lenmesi
- Cache poisoning ihtimali
- Kullanıcı verisinin başka kullanıcıya gösterilmesi
[42] Log Güvenliği
- Password/token/API key loglanması
- Log injection
- Kullanıcı girdilerinin filtrelenmeden loga yazılması
[43] Error Handling
- SQL hatalarının gösterilmesi
- PHP warning/error bilgilerinin kullanıcıya gösterilmesi
- Dosya yolu sızıntıları
- Debug mode açık olması
[44] Dependency Güvenliği
- composer.json
- composer.lock
- Kullanılan paketler
- Eski/deprecated kütüphaneler
- Riskli veya terk edilmiş paketler
[45] PHP Configuration
Kontrol et:
- display_errors
- allow_url_include
- allow_url_fopen
- expose_php
- session.cookie_httponly
- session.cookie_secure
- session.use_strict_mode
[46] Database Security
- Root kullanıcıyla bağlantı
- Gereksiz yüksek DB yetkileri
- DB credentials kaynak kodda
- Charset eksikliği
- utf8mb4 kullanılmaması
- SQL mode sorunları
[47] Cryptography
- md5
- sha1
- DES
- ECB mode
- Sabit IV
- Sabit encryption key
- rand()/mt_rand() ile güvenlik tokeni üretme
- random_bytes() kullanılmaması
[48] Token Güvenliği
- Tahmin edilebilir reset token
- Tahmin edilebilir verification token
- Token expiration olmaması
- Token'ın tekrar kullanılabilmesi
- Token'ın veritabanında plaintext saklanması
[49] Information Disclosure
- phpinfo()
- .git
- .svn
- backup dosyaları
- .bak
- .old
- config.php~
- SQL dump dosyaları
- composer dosyaları
- log dosyaları
[50] Dangerous PHP Functions
Özellikle ara:
eval
exec
system
shell_exec
passthru
popen
proc_open
assert
unserialize
include
require
include_once
require_once
file_get_contents
file_put_contents
fopen
unlink
move_uploaded_file
header
mail
Bunların her kullanımı açık değildir. Kullanıcı kontrollü veriyle ilişkisini analiz et.
DOSYA İNCELEME YÖNTEMİN:
Her dosya için önce şu yapıyı çıkar:
DOSYA:
Dosyanın adı
AMAÇ:
Dosyanın ne yaptığını 1-2 cümlede açıkla.
GİRDİLER:
Dosyanın aldığı tüm kullanıcı girdilerini listele.
Örnek:
$_GET
$_POST
$_REQUEST
$_COOKIE
$_FILES
JSON body
HTTP headers
URL parametreleri
HASSAS İŞLEMLER:
Dosyanın yaptığı güvenlik açısından kritik işlemleri listele.
Örnek:
SQL sorgusu
Dosya yükleme
Dosya silme
Session değiştirme
Yetki kontrolü
Para işlemi
Admin işlemi
Harici HTTP isteği
SONRA BULGULARI ŞU FORMATTA VER:
--------------------------------
AÇIK:
Açığın adı
DOSYA:
Dosya adı
SATIR:
Mümkünse ilgili satır veya kod bölümü
RİSK:
Critical / High / Medium / Low / Informational
GÜVEN:
High / Medium / Low
SORUNLU KOD:
İlgili kısa kod bölümünü göster.
NEDEN:
Açığın neden oluştuğunu açıkla.
SALDIRI SENARYOSU:
Gerçekçi fakat güvenli ve kontrollü bir test senaryosu anlat. Yıkıcı işlem yapma, veri silme, kalıcılık sağlama veya üçüncü taraf sistemlere saldırı tarif etme.
NASIL TEST EDİLİR:
Yerel veya yetkili test ortamında uygulanabilecek minimum doğrulama adımlarını yaz.
ETKİ:
Başarılı olması halinde neye yol açabileceğini açıkla.
DÜZELTME:
Nasıl düzeltileceğini açıkla.
GÜVENLİ KOD:
Mümkünse düzeltilmiş PHP kodunu göster.
--------------------------------
ÖNEMLİ KURALLAR:
1. Sadece pattern eşleşmesi yapma. Veri akışını takip et.
Örneğin:
$id = $_GET['id'];
sonra başka dosyada:
$query = "SELECT * FROM users WHERE id = $id";
şeklinde kullanılıyorsa bunu ilişkilendir.
2. include, require, function, class ve method çağrılarını takip et.
3. Bir değişkenin kullanıcı kontrollü olup olmadığını kaybetme.
4. Sanitization uygulanmışsa gerçekten doğru context için yeterli olup olmadığını kontrol et.
Örneğin htmlspecialchars SQL Injection engellemez.
addslashes güvenli SQL çözümü değildir.
strip_tags XSS için tek başına yeterli değildir.
5. Prepared statement varsa placeholder kullanımını kontrol et.
6. Bir bulgudan emin değilsen kesin açık gibi yazma.
Şöyle belirt:
MUHTEMEL AÇIK
ve doğrulanması gereken koşulu açıkla.
7. Aynı açığı onlarca kez tekrar etme.
Aynı root cause birden fazla dosyada bulunuyorsa:
- Ana bulguyu tek kez açıkla.
- Etkilenen dosyaları listele.
8. False positive üretmemeye çalış.
9. Sadece güvenlik açığı arama. Güvenlik açısından kötü kodlama uygulamalarını da ayrı olarak belirt.
10. Kodun tamamını görmeden varsayım yapman gerekiyorsa bunu açıkça söyle.
DOSYALAR ARASI ANALİZ:
Tüm dosyalar incelendikten sonra ayrıca genel uygulama analizi yap.
Şunları çıkar:
1. Authentication akışı
2. Authorization akışı
3. Session yapısı
4. Admin panel güvenliği
5. Veritabanı erişim yapısı
6. Dosya yükleme akışı
7. API yapısı
8. Ödeme sistemi varsa ödeme akışı
9. Şifre sıfırlama akışı
10. E-posta doğrulama akışı
Son olarak:
GENEL GÜVENLİK RAPORU
TOPLAM BULGU:
Critical:
High:
Medium:
Low:
Informational:
EN KRİTİK BULGULAR:
En önemli açıkları listele.
ZİNCİRLENEBİLEN AÇIKLAR:
Birden fazla açığın birleştirilerek daha ciddi sonuca yol açıp açamayacağını kontrol et.
Örneğin:
XSS + admin session
IDOR + privilege escalation
File Upload + code execution
SSRF + internal service access
Ancak yalnızca kodda gerçekten dayanak varsa belirt.
ÖNCELİKLİ DÜZELTME SIRASI:
En acil düzeltilmesi gereken güvenlik sorunlarını teknik gerekçeleriyle sırala.
Eksik dosya veya eksik kod yüzünden doğrulanamayan noktaları ayrıca:
MANUEL KONTROL GEREKENLER
başlığı altında listele.
Şimdi sana proje dosyalarını göndereceğim.
Her dosyayı tek tek analiz et.
Bir dosyayı atlama.
Bir dosyayı analiz ettikten sonra sonraki dosyayla bağlantısını da takip et.
En sonunda tüm proje için birleşik güvenlik değerlendirmesi oluştur.