SSRF
SSRF nədir?
SSRF və ya Server Side Request Forgery, təcavüzkarın daxili resurslara gözlənilməz sorğular etmək üçün veb tətbiqini aldatması zamanı baş verən təhlükəsizlik zəifliyidir. Məlumat əldə etmək üçün URL daxil etməyə imkan verən veb saytı təsəvvür edin. Sadə SSRF hücumunda təcavüzkar ictimai veb-səhifədən çox, verilənlər bazası və ya idarəetmə paneli kimi daxili serverə işarə edən zərərli URL daxil edə bilər. Veb tətbiqi istifadəçi daxiletmələrini düzgün təsdiqləməzsə və ya filtrləməzsə, o, istəmədən təcavüzkarın adından bu daxili resurslara sorğular göndərə bilər. Bu, icazəsiz girişə, məlumatların ifşasına və ya hətta uzaqdan kodun icrasına səbəb ola bilər. Məsələn, əgər vebsayt URL vasitəsilə şəkilləri götürürsə və təcavüzkar daxili serverə keçid təqdim edirsə, onlar həssas məlumatlara daxil olmaq və ya həmin serverdə əmrləri yerinə yetirmək üçün SSRF-dən istifadə edə bilərlər. O, bu cür hücumların qarşısını almaq üçün girişin yoxlanılması və təhlükəsizlik tədbirlərinin vacibliyini vurğulayır.
SSRF üçün potensial yerlərin müəyyən edilməsi
Xarici xidmətlə qarşılıqlı əlaqəyə imkan verən istənilən funksionallıq, üçüncü tərəfin URL-ini və ya xidmət inteqrasiyasını istifadə edə bildiyi yerlərdə ola bilər.
SSRF Zəifliklərini Necə Tapmaq olar
SSRF zəifliyini müəyyən etmək üçün ilk addım funksionallığın həssas olduğunu təsdiqləməkdir, bunu etmək üçün asan/miqyaslı bir yol Linode-da öz Burp Collaborator-dan istifadə etməkdir. Burp Collaborator asanlıqla diapazondan kənar qarşılıqlı əlaqənin mümkün olub-olmadığını qiymətləndirməyə imkan verəcək (hədəf server birbaşa nəzarət etdiyiniz serverə daxil olur). Qeyd etmək lazımdır ki, funksiya Burp Collaborator vasitəsilə müəyyən edilməsə belə, potensial olaraq həssas ola bilər, bu adətən hədəf serverin gedən DNS və ya strict egress firewall rules icazə verməməsi ilə əlaqədardır.
Payloads with localhost
localhost
istifadə edərək
127.0.0.1
istifadə edərək0.0.0.0
istifadə edərək
Bypassing filters
Bypass HTTPS istifadə edərək
Bypass localhost [::] ilə
Domain yönləndirməsi ilə localhost Bypass
Domain | Redirect to |
---|---|
localtest.me |
|
localh.st |
|
spoofed.[BURP_COLLABORATOR] |
|
spoofed.redacted.oastify.com |
|
company.127.0.0.1.nip.io |
|
Nip.io xidməti bunun üçün əladır, istənilən IP ünvanını dns kimi çevirəcək.
Bypass localhost with CIDR
IP addresses from 127.0.0.0/8
Bypass a decimal IP location istifadə edərək
Bypass octal IP istifadə edərək
Tətbiqlər ipv4-ün səkkizlik formatının necə idarə olunmasına görə fərqlənir.
Bypass IPv6/IPv4 Address Embedding istifadə edərək
Bypass malformed urls istifadə edərək
Bypass rare address istifadə edərək
Sıfırları ataraq IP ünvanlarını qısaltmaq olar
Bypass URL encoding istifadə edərək
Single or double encode a specific URL to bypass blacklist
Bypass bash variables istifadə edərək
(curl only)
Bypass tricks combination istifadə edərək
Bypass enclosed alphanumerics istifadə edərək
Bypass unicode istifadə edərək
In some languages (.NET, Python 3) regex supports unicode by default. \d
includes 0123456789
but also ๐๑๒๓๔๕๖๗๘๙
.
Bypass filter_var() php function
Bypass against a weak parser
Bypassing a redirect istifadə edərək
Bypassing type=url istifadə edərək
Bypassing DNS Rebinding (TOCTOU) istifadə edərək
Bypassing jar protocol (java only) istifadə edərək
Blind SSRF
SSRF exploitation via URL Scheme
File
Təcavüzkarın serverdəki faylın məzmununu əldə etməyə imkan verir
HTTP
Təcavüzkarın internetdən istənilən məzmunu əldə etməsinə imkan verir, o, həmçinin portları skan etmək üçün də istifadə edilə bilər.
Dict
DICT URL sxemi DICT protokolundan istifadə etməklə mövcud olan definitionlara və ya wordlistlərə istinad etmək üçün istifadə olunur:
SFTP
Twork protokolu təhlükəsiz shell üzərindən təhlükəsiz fayl ötürülməsi üçün istifadə olunur
TFTP
Trivial File Transfer Protocol, UDP üzərində işləyir
LDAP
Lightweight Directory Access Protocol. Bu paylanmış kataloq məlumat xidmətini idarə etmək və əldə etmək üçün IP şəbəkəsi üzərindən istifadə edilən proqram protokoludur.
Gopher
Gopher HTTP
Gopher SMTP - Back connect to 1337
Gopher SMTP - send a mail
Netdoc
Wrapper for Java when your payloads struggle with "\n" and "\r" characters.
SSRF exploiting WSGI
Exploit the Gopher protocol istifadə edərək
Header | ||
---|---|---|
modifier1 | (1 byte) | 0 (%00) |
datasize | (2 bytes) | 26 (%1A%00) |
modifier2 | (1 byte) | 0 (%00) |
Variable (UWSGI_FILE) | ||||
---|---|---|---|---|
key length | (2 bytes) | 10 | (%0A%00) | |
key data | (m bytes) | UWSGI_FILE | ||
value length | (2 bytes) | 12 | (%0C%00) | |
value data | (n bytes) | /tmp/test.py |
SSRF exploiting Redis
Redis, hər şeyi RAM-da saxlayan verilənlər bazası sistemidir
SSRF exploiting PDF file
Example with WeasyPrint by @nahamsec
Example with PhantomJS
Blind SSRF
Server tərəfi sorğu saxtakarlığından istifadə edərkən biz tez-tez cavabın oxunmadığı bir vəziyyətdə tapa bilərik.
Out-of-Band çıxışı əldə etmək üçün SSRF zəncirindən istifadə edin.
Possible via Gopher
SSRF to XSS
SSRF from XSS
Using an iframe
Faylın məzmunu PDF daxilində şəkil və ya mətn kimi inteqrasiya olunacaq.
Using an attachment
HTML istifadə edərək PDF qoşma nümunəsi
istifadə et
<link rel=attachment href="URL">
as Bio textPDF əldə etmək üçün "Məlumatları Yüklə" funksiyasından istifadə edin
istifadə et
pdfdetach -saveall filename.pdf
daxil edilmiş resursu çıxarmaq üçüncat attachment.bin
SSRF URL for Cloud Instances
SSRF URL for AWS
AWS İnstance Metadata Xidməti Amazon EC2 instansiyalarında mövcud olan xidmətdir və həmin instansiyalara özləri haqqında metadata əldə etməyə imkan verir. - Docs
IPv4 endpoint (old):
http://169.254.169.254/latest/meta-data/
IPv4 endpoint (new) requires the header
X-aws-ec2-metadata-token
IPv6 endpoint:
http://[fd00:ec2::254]/latest/meta-data/
WAF vəziyyətində, API-yə qoşulmağın müxtəlif yollarını sınamaq istəyə bilərsiniz.
DNS record pointing to the AWS API IP
HTTP redirect
Encoding the IP to bypass WAF
Bu URL-lər nümunə ilə əlaqəli IAM rollarının siyahısını qaytarır. Daha sonra rol üçün təhlükəsizlik etimadnaməsini əldə etmək üçün bu URL-ə rolun adını əlavə edə bilərsiniz.
Bu URL nümunəni işə salarkən müəyyən edilmiş istifadəçi məlumatlarına daxil olmaq üçün istifadə olunur. İstifadəçi məlumatları tez-tez başlanğıc skriptlərini və ya digər konfiqurasiya məlumatlarını nümunəyə ötürmək üçün istifadə olunur.
Host adı, ictimai IPv4 ünvanı və digər xassələr kimi nümunə haqqında metadatanın müxtəlif hissələrinə daxil olmaq üçün sorğu üçün digər URL-lər.
E.g: Jira SSRF leading to AWS info disclosure - https://help.redacted.com/plugins/servlet/oauth/users/icon-uri?consumerUri=http://169.254.169.254/metadata/v1/maintenance
E.g2: Flaws challenge - http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws/
SSRF URL for AWS ECS
ECS instansiyasında fayl sisteminə girişi olan SSRF varsa, çıxarmağa cəhd edin/proc/self/environ
UUID almaq üçün.
Bu yolla siz əlavə edilmiş rolun IAM açarlarını çıxaracaqsınız
SSRF URL for AWS Elastic Beanstalk
API-dən accountId
və bölgəni əldə edirik.
Biz API-dan AccessKeyId
, SecretAccessKey
, and Token
əldə edirik.
Then we use the credentials with aws s3 ls s3://elasticbeanstalk-us-east-2-[ACCOUNT_ID]/
.
SSRF URL for AWS Lambda
AWS Lambda, Lambda-dan çağırış hadisələrini qəbul etmək və cavab məlumatlarını Lambda icra mühitində geri göndərmək üçün xüsusi iş vaxtları üçün HTTP API təmin edir.
SSRF URL for Google Cloud
⚠️ Google yanvarın 15-də v1 metadata xidmətinin istifadəsi üçün dəstəyi dayandırır. "Metadata-Flavor: Google" və ya "X-Google-Metadata-Request: True" başlığını tələb edir
Google rekursiv çəkməyə icazə verir
Beta başlıq atm tələb etmir
Tələb olunan başlıqlar aşağıdakı texnika ilə gopher SSRF istifadə edərək təyin edilə bilər
Çıxarmaq üçün maraqlı fayllar:
SSH Public Key :
http://metadata.google.internal/computeMetadata/v1beta1/project/attributes/ssh-keys?alt=json
Get Access Token :
http://metadata.google.internal/computeMetadata/v1beta1/instance/service-accounts/default/token
Kubernetes Key :
http://metadata.google.internal/computeMetadata/v1beta1/instance/attributes/kube-env?alt=json
Add an SSH key
Tokeni çıxarın
Tokenin əhatə dairəsini yoxlayın
İndi SSH yoxlayın.
SSRF URL for Digital Ocean
Sənədlər burada mövcuddur: https://developers.digitalocean.com/documentation/metadata/
SSRF URL for Oracle Cloud
SSRF URL for Alibaba
SSRF URL for Kubernetes ETCD
API açarları və daxili ip və portları əhatə edə bilər
SSRF URL for Docker
Last updated