หน้าเว็บ

วันศุกร์ที่ 27 มกราคม พ.ศ. 2555

การหาจุดที่ Bug จาก CMS แบบพื้นฐาน


          สวัสดีครับ ห่างหายไปนานเลยเนื่องจากอยู่ในช่วงสอบจึงไม่ค่อยได้เขียนบล๊อกหรือไม่รู้จะเขียนเรื่องอะไรดี วันนี้เลยจะมานำเสนอพื้นฐานการหา Bug จาก CMS มาให้ดูเป็นตัวอย่างกันครับ

          เนื่องด้วยเว็บที่ผมใช้เช็คว่า CMS ไหนมี Bug อะไรให้ศึกษามีอยู่ประมาณ 3-4 เว็บ แต่ขอยกตัวอย่าง Exploit-DB.com และ 1337day.com นะครับ ซึ้งเราก็จะเห็นว่ามีการประกาศ ก็จะมีโค้ดให้ทราบว่า บัคตรงนั้นนะ มีรูตรงนี้ให้เราเข้าไปซนได้ แต่ถ้าไม่ีมีโค้ดบอกว่า บัคยังไงล่ะ เรามาหาจุดตรงที่มันบัคกันดีกว่าครับ

          บทความนี้ขอยกตัวอย่าง Peel SHOPPING - Version 2.8 and Version 2.9 XSS/SQL Inject Vulnerability ซึ้งถ้าเข้าไปจะเห็นแค่


http://localhost/peel/index.php/achat/recherche.php?motclef=[Xss Here ]&action=Rechercher
http://localhost/peel/administrer/tva.php?mode=modif&id=[SQL]
http://localhost/peel/index.php/[XSS]

          แต่จะไม่มีบอกว่าบัคได้อย่างไร เราก็แค่เข้าไปที่ Software Link ครับ ไปโหลด CMS นี้มาชำแหละโค้ดดูกันครับ บทความนี้ขอยกตัวอย่าง SQL Injection นะครับ


          เรามาดูกันที่ไฟล์ tva.php ที่มีบัคอยู่นะครับจะรู้ได้อย่างไรว่าบัคตรงไหน ถ้าสังเกตุจะเห็น ?mode=modif&id= ตรงนี้ก็เป็นการรับค่า $_GET ในภาษา PHP นั้นเอง ซึ้งใครเป็นก็คงจะร้องอ่อแล้ว เราก็ค้นหาด้วย Keyword modif ก็จะได้เป็น

 case "modif" :
  affiche_formulaire_modif_tva($_GET['id']);
  break;

          จะเห็นว่ามีการเรียกใช้ Function affiche_formulaire_modif_tva อยู่นะครับสังเกตุได้จาก affiche_formulaire_modif_tva($_GET['id']); อย่างที่ผมบอกไว้ตั้งแต่แรกว่ามันเป็นการรับค่า GET นั้นเอง เราก็ค้นว่า affiche_formulaire_modif_tva อยู่ตรงไหน...

function affiche_formulaire_modif_tva(&$id) {
  /* Affiche le formulaire de modification pour le tvas้lectionn้ */

 global $frm;

 /* Charge les informations du produit */
 $qid = mysql_query("
 SELECT *
 FROM peel_tva
 WHERE id = $id
 ");
 
 $frm = mysql_fetch_array($qid);
 
 $frm['nouveau_mode'] = "maj";
 $frm['titre_bouton'] = "Sauvegarder";

 affiche_formulaire_tva();
}

มีการรับค่ามาสังเกตุจาก
$_GET['id'];
และการ Query ตรงนี้
$qid = mysql_query("SELECT * FROM peel_tva WHERE id = $id");
          รับค่ามาโดยตรงโดยไม่มีการป้องกัน SQL Injection เลยจึงเกิดบัค SQL Injection ส่วนวิธีป้องกันและวิธี By Pass ลองหาดูในบล๊อกผมครับ เคยเขียนไว้แล้ว :P

          ขอจบบทความการหาจุดที่ Bug จาก CMS แบบพื้นฐานเพียงแค่นี้ครับ ขอบคุณทุกท่านที่อ่านจนจบ ,, ICheer_No0M

ไม่มีความคิดเห็น:

แสดงความคิดเห็น