Esenlikler THT ailesi.
Ben Tasarım Ekibinden Alex.
Bugün sizlerle Python kullanarak basit bir Remote Code Execution (RCE) sunucusu nasıl yazılır onu inceleyeceğiz. Konu hem mantığı anlamak hem de sistem tarafında nasıl çalıştığını görmek için faydalı olabilir.
RCE Nedir?
Remote Code Execution (RCE), bir sistem üzerinde uzaktan kod çalıştırılabilmesini ifade eder.
Yani basitçe anlatmak gerekirse, bir kullanıcı başka bir bilgisayara veya sunucuya bağlanıp kendi yazdığı kodu o sistem üzerinde çalıştırabiliyorsa buna RCE denir.
Bu bazen bilinçli olarak yapılan bir sistem olur, bazen de güvenlik açığı olarak karşımıza çıkar.
Yani basitçe anlatmak gerekirse, bir kullanıcı başka bir bilgisayara veya sunucuya bağlanıp kendi yazdığı kodu o sistem üzerinde çalıştırabiliyorsa buna RCE denir.
Bu bazen bilinçli olarak yapılan bir sistem olur, bazen de güvenlik açığı olarak karşımıza çıkar.
Basit Mantık
- Bir sunucu veya uygulama bulunur
- Kullanıcı bu sunucuya bir kod gönderir
- Sunucu gelen kodu kendi sisteminde çalıştırır
- Ortaya çıkan çıktı kullanıcıya geri gönderilir
Aslında mantık oldukça basittir fakat güvenlik açısından dikkat edilmesi gereken birçok nokta vardır.
Nerelerde Kullanılır?
RCE mantığı bazı sistemlerde bilerek kullanılır.
Örneğin:
Örneğin:
- Online kod çalıştırma siteleri
- Bazı test ve analiz platformları
- Sandbox ortamları
- Eğitim amaçlı lab ortamları
Bu tarz sistemlerde kodlar genellikle izole edilmiş ortamlarda çalıştırılır.
Güvenlik Açığı Olarak RCE
Eğer bir uygulamada kontrolsüz şekilde kullanıcıdan gelen kod çalıştırılıyorsa bu çok ciddi bir güvenlik açığına dönüşebilir.
Böyle bir durumda saldırgan:
Böyle bir durumda saldırgan:
- sunucu üzerindeki dosyaları okuyabilir
- sistem üzerinde komut çalıştırabilir
- veritabanına erişebilir
- sunucuyu tamamen ele geçirebilir
Bu yüzden RCE açıkları siber güvenlik dünyasında oldukça kritik kabul edilir.
Python ile Basit RCE Sunucusu
Şimdi Python kullanarak basit bir RCE mantığını gösteren küçük bir sunucu yazalım.
Öncelikle gerekli kütüphaneyi kuruyoruz.
Daha sonra aşağıdaki kodu yazıyoruz.
Bu kod basit bir HTTP sunucusu oluşturur ve gönderilen Python kodunu çalıştırır.
Öncelikle gerekli kütüphaneyi kuruyoruz.
Python:
pip install flask
Daha sonra aşağıdaki kodu yazıyoruz.
Python:
from flask import Flask, request
app = Flask(__name__)
@app.route("/run", methods=["POST"])
def run_code():
code = request.json.get("code")
try:
output = {}
exec(code, output)
return {"status": "ok", "result": str(output)}
except Exception as e:
return {"status": "error", "message": str(e)}
app.run(host="0.0.0.0", port=5000)
Bu kod basit bir HTTP sunucusu oluşturur ve gönderilen Python kodunu çalıştırır.
Test Etmek
Sunucuyu çalıştırdıktan sonra POST isteği göndererek test edebilirsiniz.
Örnek:
Örnek:
Kod:
POST /run
{
"code":"print(5+5)"
}
Sunucu bu kodu çalıştırır ve çıktıyı geri döndürür.
Önemli Not
Gerçek sistemlerde kullanıcıdan gelen kodu doğrudan çalıştırmak oldukça risklidir. Bu yüzden profesyonel sistemlerde genellikle:
- Sandbox ortamları
- Container sistemleri
- Kaynak limitleri
- Güvenlik filtreleri
kullanılır.
Bu konu ile ilgili ilerleyen zamanlarda daha güvenli bir sandbox sistemi de paylaşmayı düşünebilirim.
Okuyan herkese teşekkür eder ve iyi forumlar dilerim.




