πAPI Testing
API lΓ mα»t tαΊp hợp cΓ‘c commands, functions, protocol, objects ... giΓΊp hai phαΊ§n mα»m cΓ³ thα» tΖ°Ζ‘ng tΓ‘c trao Δα»i dα»― liα»u vα»i nhau .
API Recon
TrΖ°α»c khi bαΊ―t ΔαΊ§u kiα»m thα» API, Δiα»u quan trα»ng ΔαΊ§u tiΓͺn lΓ thu thαΊp thΓ΄ng tin vα» API Δα» xΓ‘c Δα»nh bα» mαΊ·t tαΊ₯n cΓ΄ng
XΓ‘c Δα»nh API Endpoint
GET /api/books HTTP/1.1
Host: example.comTrong trΖ°α»ng hợp nΓ y, API endpoint lΓ /api/books, nΓ³ Δược sα» dα»₯ng Δα» lαΊ₯y danh sΓ‘ch sΓ‘ch tα»« mα»t thΖ° viα»n. Mα»t endpoint khΓ‘c cΓ³ thα» lΓ /api/books/mystery, giΓΊp lαΊ₯y danh sΓ‘ch sΓ‘ch thuα»c thα» loαΊ‘i trinh thΓ‘m.
TΓ¬m hiα»u cΓ‘ch tΖ°Ζ‘ng tΓ‘c vα»i API
Dα»― liα»u ΔαΊ§u vΓ o mΓ API xα» lΓ½:
Bao gα»m cΓ‘c tham sα» bαΊ―t buα»c vΓ khΓ΄ng bαΊ―t buα»c mΓ API yΓͺu cαΊ§u.
CΓ‘c loαΊ‘i yΓͺu cαΊ§u mΓ API chαΊ₯p nhαΊn:
Bao gα»m cΓ‘c phΖ°Ζ‘ng thα»©c HTTP Δược hα» trợ nhΖ°
GET,POST,PUT,DELETEvΓ cΓ‘c Δα»nh dαΊ‘ng dα»― liα»u nhΖ°JSON,XML.
Giα»i hαΊ‘n tα»c Δα» (Rate Limits) vΓ cΖ‘ chαΊΏ xΓ‘c thα»±c:
TΓ¬m hiα»u xem API cΓ³ giα»i hαΊ‘n sα» lượng yΓͺu cαΊ§u trong mα»t khoαΊ£ng thα»i gian hay khΓ΄ng.
XΓ‘c Δα»nh cΓ‘c phΖ°Ζ‘ng thα»©c xΓ‘c thα»±c nhΖ° API Key, OAuth, hoαΊ·c JWT.
API Document
Discovering API documentation
DΓΉng Burp Scanner Δα» quΓ©t
Manual bαΊ±ng cΓ‘c endpoint cΓ³ thα» chα»©a API Documenrt
CΓ³ thα» dΓΉng cΓ‘c tool Δα» fuzzing nΓ³ ra bαΊ±ng cΓ‘ch dΓΉng cΓ‘c list API quen thuα»c - wordlist
Lab: Exploiting an API endpoint using documentation






Machine-readable API Documentation
CΓ΄ng cα»₯ phΓ’n tΓch vΓ kiα»m thα» tΓ i liα»u API
Burp Suite:
Burp Scanner:
Tα»± Δα»ng quΓ©t vΓ kiα»m tra bαΊ£o mαΊt tΓ i liα»u API theo chuαΊ©n OpenAPI (Swagger).
XΓ‘c Δα»nh cΓ‘c lα» hα»ng bαΊ£o mαΊt nhΖ° Injection, Broken Authentication, Rate Limiting.
OpenAPI Parser BApp:
Mα»t tiα»n Γch mα» rα»ng trong Burp Suite giΓΊp phΓ’n tΓch tΓ i liα»u OpenAPI, tα»± Δα»ng trΓch xuαΊ₯t cΓ‘c endpoint vΓ tαΊ‘o yΓͺu cαΊ§u thα» nghiα»m.
Postman:
CΓ΄ng cα»₯ kiα»m thα» API phα» biαΊΏn, cho phΓ©p nhαΊp tΓ i liα»u OpenAPI Δα» tα»± Δα»ng tαΊ‘o yΓͺu cαΊ§u HTTP.
Hα» trợ kiα»m tra tΓnh ΔΓΊng ΔαΊ―n cα»§a phαΊ£n hα»i vΓ xΓ‘c thα»±c API bαΊ±ng cΓ‘c phΖ°Ζ‘ng phΓ‘p nhΖ° OAuth, API Key, JWT.
SoapUI:
Kiα»m thα» API SOAP vΓ REST vα»i cΓ‘c kα»ch bαΊ£n tα»± Δα»ng dα»±a trΓͺn tΓ i liα»u API.
Cho phΓ©p mΓ΄ phα»ng cΓ‘c yΓͺu cαΊ§u phα»©c tαΊ‘p vΓ thα»±c hiα»n kiα»m thα» chα»©c nΔng.
Quy trΓ¬nh kiα»m thα» API dα»±a trΓͺn tΓ i liα»u
PhΓ’n tΓch tΓ i liα»u API:
Sα» dα»₯ng Burp hoαΊ·c Postman Δα» nhαΊp vΓ trΓch xuαΊ₯t cΓ‘c endpoint.
XΓ‘c Δα»nh cΓ‘c thΓ΄ng sα» ΔαΊ§u vΓ o, phΖ°Ζ‘ng thα»©c HTTP Δược hα» trợ vΓ quy tαΊ―c xΓ‘c thα»±c.
Gα»i yΓͺu cαΊ§u kiα»m thα»:
Kiα»m tra API bαΊ±ng cΓ‘ch gα»i yΓͺu cαΊ§u thΓ΄ng qua Postman hoαΊ·c SoapUI.
PhΓ’n tΓch phαΊ£n hα»i vΓ kiα»m tra lα»i logic hoαΊ·c bαΊ£o mαΊt.
Kiα»m tra bαΊ£o mαΊt tα»± Δα»ng:
Sα» dα»₯ng Burp Scanner Δα» phΓ‘t hiα»n lα» hα»ng nhΖ° SQL Injection, XSS, Authentication Bypass.
Kiα»m tra tΓnh chα»ng chα»u cα»§a API vα»i giα»i hαΊ‘n tα»c Δα» (rate limiting) vΓ kiα»m tra lα»i xα» lΓ½ ΔαΊ§u vΓ o.
Identifying API endpoints
Tα»± Δα»ng quΓ©t bαΊ±ng Burp Scanner:
Burp Scanner cΓ³ thα» thα»±c hiα»n quΓ‘ trΓ¬nh crawling (thu thαΊp dα»― liα»u) Δα» phΓ‘t hiα»n cΓ‘c endpoint API.
Sau khi quΓ©t, kiα»m tra cΓ‘c kαΊΏt quαΊ£ liΓͺn quan ΔαΊΏn cΓ‘c endpoint ΔΓ‘ng ngα» hoαΊ·c chΖ°a Δược ghi nhαΊn.
Duyα»t α»©ng dα»₯ng thα»§ cΓ΄ng bαΊ±ng Burp's browser:
Sα» dα»₯ng trΓ¬nh duyα»t proxy cα»§a Burp Δα» quan sΓ‘t cΓ‘c yΓͺu cαΊ§u gα»i Δi trong thα»i gian thα»±c vΓ tΓ¬m kiαΊΏm dαΊ₯u hiα»u cα»§a API.
Tìm kiếm trong file JavaScript:
Nhiα»u endpoint API cΓ³ thα» Δược tham chiαΊΏu trong cΓ‘c file JavaScript tαΊ£i xuα»ng tα»« trΓ¬nh duyα»t.
DΓΉng cΓ΄ng cα»₯ JS Link Finder BApp cα»§a Burp Suite Δα» tα»± Δα»ng phΓ’n tΓch vΓ trΓch xuαΊ₯t cΓ‘c ΔΖ°α»ng dαΊ«n API tα»« mΓ£ nguα»n JavaScript.
CΕ©ng cΓ³ thα» kiα»m tra thα»§ cΓ΄ng bαΊ±ng cΓ‘ch duyα»t vΓ phΓ’n tΓch cΓ‘c file
.jstrong Burp Suite.
Interacting with API endpoints
XΓ‘c Δα»nh cΓ‘c endpoint API vΓ sα» dα»₯ng Burp Repeater, Burp Intruder Δα» kiα»m tra.
Quan sΓ‘t hΓ nh vi cα»§a API vΓ phΓ‘t hiα»n bα» mαΊ·t tαΊ₯n cΓ΄ng tiα»m αΊ©n.
Kiα»m tra phαΊ£n hα»i cα»§a API khi thay Δα»i phΖ°Ζ‘ng thα»©c HTTP vΓ loαΊ‘i dα»― liα»u.
PhΓ’n tΓch kα»Ή thΓ΄ng bΓ‘o lα»i vΓ phαΊ£n hα»i Δα» thu thαΊp thΓ΄ng tin hα»―u Γch.
Sα» dα»₯ng thΓ΄ng tin thu Δược Δα» xΓ’y dα»±ng yΓͺu cαΊ§u HTTP hợp lα».
Identifying supported HTTP methods
HTTP method xΓ‘c Δα»nh hΓ nh Δα»ng Δược thα»±c hiα»n trΓͺn mα»t tΓ i nguyΓͺn.
VΓ dα»₯ vα» cΓ‘c HTTP method phα» biαΊΏn:
GET: LαΊ₯y dα»― liα»u tα»« mα»t tΓ i nguyΓͺn.
PATCH: Thay Δα»i mα»t phαΊ§n cα»§a tΓ i nguyΓͺn.
OPTIONS: LαΊ₯y thΓ΄ng tin vα» cΓ‘c phΖ°Ζ‘ng thα»©c HTTP Δược hα» trợ trΓͺn tΓ i nguyΓͺn.
Mα»t endpoint API cΓ³ thα» hα» trợ nhiα»u phΖ°Ζ‘ng thα»©c HTTP khΓ‘c nhau, do ΔΓ³ cαΊ§n kiα»m tra tαΊ₯t cαΊ£ cΓ‘c phΖ°Ζ‘ng thα»©c tiα»m nΔng Δα» khΓ‘m phΓ‘ thΓͺm chα»©c nΔng cα»§a endpoint vΓ mα» rα»ng bα» mαΊ·t tαΊ₯n cΓ΄ng.
VΓ dα»₯, endpoint
/api/taskscΓ³ thα» hα» trợ cΓ‘c phΖ°Ζ‘ng thα»©c sau:GET /api/tasks: LαΊ₯y danh sΓ‘ch cΓ΄ng viα»c.
POST /api/tasks: TαΊ‘o mα»t cΓ΄ng viα»c mα»i.
DELETE /api/tasks/1: XΓ³a mα»t cΓ΄ng viα»c.
Burp Intruder cΓ³ sαΊ΅n danh sΓ‘ch cΓ‘c HTTP method Δα» tα»± Δα»ng kiα»m tra hΓ ng loαΊ‘t phΖ°Ζ‘ng thα»©c khΓ‘c nhau.
LΖ°u Γ½:
Khi kiα»m tra cΓ‘c phΖ°Ζ‘ng thα»©c HTTP, nΓͺn thα» nghiα»m trΓͺn cΓ‘c Δα»i tượng cΓ³ mα»©c Δα» Ζ°u tiΓͺn thαΊ₯p Δα» trΓ‘nh tΓ‘c Δα»ng khΓ΄ng mong muα»n nhΖ° thay Δα»i dα»― liα»u quan trα»ng hoαΊ·c tαΊ‘o ra quΓ‘ nhiα»u bαΊ£n ghi.
Identifying supported content types
CΓ‘c endpoint API thΖ°α»ng yΓͺu cαΊ§u dα»― liα»u theo mα»t Δα»nh dαΊ‘ng cα»₯ thα».
API cΓ³ thα» phαΊ£n hα»i khΓ‘c nhau tΓΉy thuα»c vΓ o kiα»u nα»i dung (content type) Δược gα»i trong yΓͺu cαΊ§u.
Viα»c thay Δα»i kiα»u nα»i dung cΓ³ thα» giΓΊp bαΊ‘n:
KΓch hoαΊ‘t lα»i Δα» thu thαΊp thΓ΄ng tin hα»―u Γch.
Bypass cΓ‘c biα»n phΓ‘p phΓ²ng thα»§ khΓ΄ng chαΊ·t chαΊ½.
Khai thΓ‘c sα»± khΓ‘c biα»t trong logic xα» lΓ½, vΓ dα»₯: API cΓ³ thα» an toΓ n khi xα» lΓ½ JSON nhΖ°ng dα» bα» tαΊ₯n cΓ΄ng injection khi xα» lΓ½ XML.
Δα» thay Δα»i kiα»u nα»i dung, cαΊ§n chα»nh sα»a tiΓͺu Δα» Content-Type vΓ Δα»nh dαΊ‘ng lαΊ‘i phαΊ§n thΓ’n (body) cα»§a yΓͺu cαΊ§u cho phΓΉ hợp.
CΓ΄ng cα»₯ Content Type Converter BApp cΓ³ thα» tα»± Δα»ng chuyα»n Δα»i dα»― liα»u trong yΓͺu cαΊ§u giα»―a XML vΓ JSON, giΓΊp dα» dΓ ng thα» nghiα»m nhiα»u Δα»nh dαΊ‘ng khΓ‘c nhau.
Lab: Finding and exploiting an unused API endpoint



Using Intruder to find hidden endpoints
DΓΉng Burp Intruder Δα» tΓ¬m endpoint αΊ©n sau khi xΓ‘c Δα»nh cΓ‘c endpoint ban ΔαΊ§u.
Kiα»m tra biαΊΏn thα» cα»§a endpoint bαΊ±ng cΓ‘ch thΓͺm cΓ‘c chα»©c nΔng phα» biαΊΏn nhΖ°
delete,add.Sα» dα»₯ng wordlists vα»i cΓ‘c quy Ζ°α»c ΔαΊ·t tΓͺn API phα» biαΊΏn vΓ thuαΊt ngα»― ngΓ nh.
Bα» sung tα»« khΓ³a liΓͺn quan dα»±a trΓͺn thΓ΄ng tin thu thαΊp ban ΔαΊ§u - wordlist
Mass assignment vulnerabilities
Mass Assignment lΓ mα»t kα»Ή thuαΊt trong lαΊp trΓ¬nh web cho phΓ©p gΓ‘n giΓ‘ trα» cho nhiα»u thuα»c tΓnh cα»§a mα»t Δα»i tượng (object) cΓΉng lΓΊc, thΖ°α»ng bαΊ±ng cΓ‘ch sα» dα»₯ng dα»― liα»u tα»« request cα»§a ngΖ°α»i dΓΉng (vΓ dα»₯: JSON, form data). NΓ³ giΓΊp lαΊp trΓ¬nh viΓͺn giαΊ£m thiα»u cΓ΄ng sα»©c viαΊΏt code khi xα» lΓ½ nhiα»u trΖ°α»ng dα»― liα»u cΓΉng mα»t lΓΊc.
Identifying hidden parameters
XΓ‘c Δα»nh tham sα» αΊ©n: CΓ‘c tham sα» αΊ©n cΓ³ thα» Δược phΓ‘t hiα»n bαΊ±ng cΓ‘ch kiα»m tra thα»§ cΓ΄ng cΓ‘c Δα»i tượng do API trαΊ£ vα».
VΓ dα»₯:
YΓͺu cαΊ§u
PATCH /api/users/Δα» cαΊp nhαΊtusernamevΓemailvα»i dα»― liα»u JSON:Mα»t yΓͺu cαΊ§u Δα»ng thα»i
GET /api/users/123trαΊ£ vα»:
Δiα»u nΓ y cho thαΊ₯y cΓ‘c tham sα» αΊ©n nhΖ°
idvΓisAdmincΓ³ thα» tα»n tαΊ‘i vΓ Δược rΓ ng buα»c vΓ o Δα»i tượng ngΖ°α»i dΓΉng nα»i bα», bΓͺn cαΊ‘nh cΓ‘c tham sα» Δược cαΊp nhαΊt nhΖ°usernamevΓemail.KαΊΏt luαΊn: Kiα»m tra phαΊ£n hα»i tα»« API cΓ³ thα» giΓΊp phΓ‘t hiα»n tham sα» αΊ©n, cho phΓ©p khai thΓ‘c hoαΊ·c kiα»m tra lα» hα»ng bαΊ£o mαΊt liΓͺn quan ΔαΊΏn mass assignment.
Kiα»m tra lα» hα»ng Mass Assignment
Kiα»m tra lα» hα»ng Mass Assignment
BΖ°α»c 1: Thα» thΓͺm tham sα» αΊ©n vΓ o yΓͺu cαΊ§u PATCH
Gα»i yΓͺu cαΊ§u cαΊp nhαΊt thΓ΄ng tin ngΖ°α»i dΓΉng vα»i tham sα»
isAdminΔược thΓͺm vΓ o:NαΊΏu α»©ng dα»₯ng chαΊ₯p nhαΊn yΓͺu cαΊ§u mΓ khΓ΄ng cΓ³ phαΊ£n hα»i lα»i, cΓ³ thα» tham sα» nΓ y Δang Δược xα» lΓ½ nα»i bα».
BΖ°α»c 2: Kiα»m tra phαΊ£n hα»i vα»i giΓ‘ trα» khΓ΄ng hợp lα»
Gα»i yΓͺu cαΊ§u PATCH vα»i giΓ‘ trα» khΓ΄ng hợp lα» cho
isAdmin:NαΊΏu α»©ng dα»₯ng phαΊ£n hα»i khΓ‘c nhau giα»―a giΓ‘ trα» hợp lα» vΓ khΓ΄ng hợp lα», Δiα»u nΓ y cΓ³ thα» cho thαΊ₯y tham sα» Δang tΓ‘c Δα»ng ΔαΊΏn logic xα» lΓ½ cα»§a α»©ng dα»₯ng.
BΖ°α»c 3: Khai thΓ‘c lα» hα»ng bαΊ±ng cΓ‘ch thay Δα»i giΓ‘ trα» thΓ nh
trueGα»i yΓͺu cαΊ§u PATCH vα»i giΓ‘ trα»
isAdminlΓtrue:NαΊΏu tham sα» nΓ y khΓ΄ng Δược kiα»m tra vΓ xΓ‘c thα»±c ΔΓΊng cΓ‘ch, ngΖ°α»i dΓΉng cΓ³ thα» Δược cαΊ₯p quyα»n admin ngoΓ i Γ½ muα»n.
BΖ°α»c 4: Kiα»m tra quyα»n truy cαΊp
ΔΔng nhαΊp vΓ o α»©ng dα»₯ng bαΊ±ng tΓ i khoαΊ£n
wienervΓ kiα»m tra xem cΓ³ thα» truy cαΊp cΓ‘c tΓnh nΔng dΓ nh cho admin hay khΓ΄ng.NαΊΏu cΓ³ thα» truy cαΊp, chα»©ng tα» α»©ng dα»₯ng ΔΓ£ bα» khai thΓ‘c lα» hα»ng mass assignment.
KαΊΏt luαΊn: NαΊΏu α»©ng dα»₯ng khΓ΄ng kiα»m tra vΓ lα»c tham sα» αΊ©n hợp lΓ½, kαΊ» tαΊ₯n cΓ΄ng cΓ³ thα» lợi dα»₯ng Δα» chiαΊΏm quyα»n kiα»m soΓ‘t hoαΊ·c thay Δα»i dα»― liα»u quan trα»ng.
Lab: Exploiting a mass assignment vulnerability



Preventing vulnerabilities in APIs
Khi thiαΊΏt kαΊΏ API, yαΊΏu tα» bαΊ£o mαΊt cαΊ§n Δược chΓΊ trα»ng ngay tα»« giai ΔoαΊ‘n ΔαΊ§u. Δα» ΔαΊ£m bαΊ£o an toΓ n, hΓ£y thα»±c hiα»n cΓ‘c bΖ°α»c sau:
BαΊ£o vα» tΓ i liα»u API:
NαΊΏu API cα»§a bαΊ‘n khΓ΄ng dΓ nh cho cΓ΄ng khai, hΓ£y bαΊ£o mαΊt tΓ i liα»u Δα» hαΊ‘n chαΊΏ truy cαΊp trΓ‘i phΓ©p.
CαΊp nhαΊt tΓ i liα»u thΖ°α»ng xuyΓͺn:
ΔαΊ£m bαΊ£o tΓ i liα»u luΓ΄n phαΊ£n Γ‘nh ΔΓΊng hiα»n trαΊ‘ng cα»§a API, giΓΊp cΓ‘c tester hợp phΓ‘p dα» dΓ ng kiα»m tra vΓ xΓ‘c Δα»nh bα» mαΊ·t tαΊ₯n cΓ΄ng.
HαΊ‘n chαΊΏ phΖ°Ζ‘ng thα»©c HTTP:
Chα» cho phΓ©p nhα»―ng HTTP method cαΊ§n thiαΊΏt (nhΖ° GET, POST) bαΊ±ng cΓ‘ch sα» dα»₯ng danh sΓ‘ch cho phΓ©p (allowlist).
XΓ‘c thα»±c loαΊ‘i nα»i dung (Content-Type):
Kiα»m tra vΓ ΔαΊ£m bαΊ£o rαΊ±ng mα»i yΓͺu cαΊ§u (request) hoαΊ·c phαΊ£n hα»i (response) chα» chα»©a loαΊ‘i nα»i dung phΓΉ hợp vα»i dα»± kiαΊΏn.
αΊ¨n thΓ΄ng tin trong lα»i:
Thay vΓ¬ cung cαΊ₯p thΓ΄ng bΓ‘o lα»i chi tiαΊΏt, hΓ£y sα» dα»₯ng cΓ‘c thΓ΄ng bΓ‘o lα»i chung chung Δα» trΓ‘nh rΓ² rα» thΓ΄ng tin mΓ kαΊ» tαΊ₯n cΓ΄ng cΓ³ thα» lợi dα»₯ng.
BαΊ£o mαΊt trΓͺn tαΊ₯t cαΊ£ cΓ‘c phiΓͺn bαΊ£n API:
KhΓ΄ng chα» tαΊp trung vΓ o phiΓͺn bαΊ£n production, mΓ mα»i phiΓͺn bαΊ£n (bao gα»m cαΊ£ phiΓͺn bαΊ£n cΕ© hoαΊ·c beta) Δα»u cαΊ§n Δược Γ‘p dα»₯ng cΓ‘c biα»n phΓ‘p bαΊ£o vα» tΖ°Ζ‘ng tα»±.
NgΔn ngα»«a lα» hα»ng "Mass Assignment":
Sα» dα»₯ng danh sΓ‘ch cho phΓ©p (allowlist) Δα» giα»i hαΊ‘n cΓ‘c thuα»c tΓnh mΓ ngΖ°α»i dΓΉng cΓ³ thα» cαΊp nhαΊt. Δα»ng thα»i, chαΊ·n nhα»―ng thuα»c tΓnh nhαΊ‘y cαΊ£m bαΊ±ng danh sΓ‘ch chαΊ·n (blocklist) Δα» ngΔn chαΊ·n truy cαΊp khΓ΄ng mong muα»n.
Server-side parameter pollution
Mα»t sα» hα» thα»ng chα»©a cΓ‘c API nα»i bα» khΓ΄ng Δược truy cαΊp trα»±c tiαΊΏp tα»« internet. Lα» hα»ng Server-side Parameter Pollution (SSPP) xαΊ£y ra khi mα»t trang web nhΓΊng ΔαΊ§u vΓ o cα»§a ngΖ°α»i dΓΉng vΓ o yΓͺu cαΊ§u gα»i ΔαΊΏn API nα»i bα» mΓ khΓ΄ng thα»±c hiα»n mΓ£ hΓ³a ΔαΊ§y Δα»§. Δiα»u nΓ y cho phΓ©p kαΊ» tαΊ₯n cΓ΄ng thao tΓΊng hoαΊ·c tiΓͺm cΓ‘c tham sα» khΓ‘c, dαΊ«n ΔαΊΏn:
Ghi ΔΓ¨ cΓ‘c tham sα» hiα»n cΓ³.
Thay Δα»i hΓ nh vi cα»§a α»©ng dα»₯ng.
Truy cαΊp dα»― liα»u trΓ‘i phΓ©p.
Testing the query string
1. Kiα»m tra cαΊ―t chuα»i truy vαΊ₯n (Truncating query strings)
Khi kiα»m tra khαΊ£ nΔng cαΊ―t chuα»i truy vαΊ₯n, bαΊ‘n cΓ³ thα» thΓͺm kΓ½ tα»± ΔαΊ·c biα»t nhΖ° #, &, hoαΊ·c = vΓ o ΔαΊ§u vΓ o cα»§a mΓ¬nh Δα» quan sΓ‘t phαΊ£n hα»i tα»« α»©ng dα»₯ng.
VΓ dα»₯ minh hα»a: Ứng dα»₯ng dα» bα» tαΊ₯n cΓ΄ng cho phΓ©p tΓ¬m kiαΊΏm ngΖ°α»i dΓΉng bαΊ±ng tΓͺn ΔΔng nhαΊp:
MΓ‘y chα»§ sαΊ½ gα»i yΓͺu cαΊ§u nα»i bα» sau:
Δα» thα» cαΊ―t chuα»i truy vαΊ₯n, bαΊ‘n cΓ³ thα» thΓͺm kΓ½ tα»± # (ΔΓ£ mΓ£ hΓ³a URL):
MΓ‘y chα»§ sau ΔΓ³ cΓ³ thα» gα»i yΓͺu cαΊ§u nα»i bα» nhΖ° sau:
LΖ°u Γ½: KΓ½ tα»±
#cαΊ§n Δược mΓ£ hΓ³a URL (vΓ dα»₯%23). NαΊΏu khΓ΄ng, α»©ng dα»₯ng phΓa front-end sαΊ½ coi ΔΓ³ lΓ "fragment identifier" vΓ khΓ΄ng chuyα»n nΓ³ ΔαΊΏn API nα»i bα».DαΊ₯u hiα»u khai thΓ‘c thΓ nh cΓ΄ng:
NαΊΏu phαΊ£n hα»i trαΊ£ vα» kαΊΏt quαΊ£ cho ngΖ°α»i dΓΉng "peter" mΓ khΓ΄ng cαΊ§n kiα»m tra
publicProfile, truy vαΊ₯n ΔΓ£ bα» cαΊ―t thΓ nh cΓ΄ng.NαΊΏu phαΊ£n hα»i trαΊ£ vα» lα»i nhΖ° "Invalid name", cΓ³ thα»
fooΔΓ£ bα» xα» lΓ½ nhΖ° mα»t phαΊ§n cα»§a tΓͺn ngΖ°α»i dΓΉng.
2. TiΓͺm tham sα» khΓ΄ng hợp lα» (Injecting invalid parameters)
BαΊ‘n cΓ³ thα» sα» dα»₯ng kΓ½ tα»± & (ΔΓ£ mΓ£ hΓ³a URL) Δα» thΓͺm tham sα» mα»i vΓ o yΓͺu cαΊ§u nα»i bα».
VΓ dα»₯: Sα»a chuα»i truy vαΊ₯n nhΖ° sau:
Khi ΔΓ³, API nα»i bα» sαΊ½ nhαΊn yΓͺu cαΊ§u:
Quan sΓ‘t phαΊ£n hα»i:
NαΊΏu khΓ΄ng cΓ³ thay Δα»i, tham sα»
foocΓ³ thα» ΔΓ£ Δược tiΓͺm nhΖ°ng bα» α»©ng dα»₯ng bα» qua.TiαΊΏp tα»₯c thα» nghiα»m Δα» hiα»u rΓ΅ cΓ‘ch tham sα» nΓ y Δược xα» lΓ½.
3. TiΓͺm tham sα» hợp lα» (Injecting valid parameters)
Khi tΓ¬m ra cΓ‘c tham sα» hợp lα» cΓ³ thα» tiΓͺm, bαΊ‘n cΓ³ thα» thΓͺm chΓΊng vΓ o yΓͺu cαΊ§u nα»i bα».
VΓ dα»₯:
NαΊΏu phΓ‘t hiα»n tham sα» email, bαΊ‘n cΓ³ thα» thΓͺm nΓ³:
YΓͺu cαΊ§u nα»i bα» sαΊ½ trα» thΓ nh:
Quan sΓ‘t phαΊ£n hα»i:
NαΊΏu tham sα»
emailΔược xα» lΓ½, bαΊ‘n cΓ³ thα» kiα»m tra xem nΓ³ αΊ£nh hΖ°α»ng thαΊΏ nΓ o ΔαΊΏn phαΊ£n hα»i.
4. Ghi ΔΓ¨ tham sα» hiα»n cΓ³ (Overriding existing parameters)
Δα» kiα»m tra lα» hα»ng, bαΊ‘n cΓ³ thα» thα» tiΓͺm mα»t tham sα» trΓΉng tΓͺn Δα» ghi ΔΓ¨ giΓ‘ trα» ban ΔαΊ§u.
VΓ dα»₯: Sα»a chuα»i truy vαΊ₯n nhΖ° sau:
YΓͺu cαΊ§u nα»i bα» sαΊ½ trα» thΓ nh:
CΓ‘ch xα» lΓ½ phα»₯ thuα»c cΓ΄ng nghα» web:
PHP: Chα» xα» lΓ½ tham sα» cuα»i cΓΉng (
carlos).ASP.NET: Kết hợp cả hai tham sỠ(
peter,carlos).Node.js / Express: Chα» xα» lΓ½ tham sα» ΔαΊ§u tiΓͺn (
peter).
DαΊ₯u hiα»u khai thΓ‘c:
NαΊΏu ghi ΔΓ¨ thΓ nh cΓ΄ng, bαΊ‘n cΓ³ thα» thα» thΓͺm tham sα» nhΖ°
name=administratorΔα» thα»±c hiα»n hΓ nh vi khai thΓ‘c (vΓ dα»₯: ΔΔng nhαΊp dΖ°α»i quyα»n admin).
Lab: Exploiting server-side parameter pollution in a query string








Testing for server-side parameter pollution in REST paths
Mα»t API RESTful cΓ³ thα» sα» dα»₯ng tΓͺn vΓ giΓ‘ trα» tham sα» trong ΔΖ°α»ng dαΊ«n URL thay vΓ¬ chuα»i truy vαΊ₯n. VΓ dα»₯, xΓ©t ΔΖ°α»ng dαΊ«n sau:
ΔΖ°α»ng dαΊ«n URL cΓ³ thα» Δược phΓ’n tΓch nhΖ° sau:
/api lΓ Δiα»m cuα»i gα»c cα»§a API.
/users lΓ tΓ i nguyΓͺn, trong trΖ°α»ng hợp nΓ y lΓ ngΖ°α»i dΓΉng.
/123 lΓ tham sα», α» ΔΓ’y lΓ Δα»nh danh cho ngΖ°α»i dΓΉng cα»₯ thα».
VΓ dα»₯ vα» α»©ng dα»₯ng dα» bα» tαΊ₯n cΓ΄ng: Mα»t α»©ng dα»₯ng cho phΓ©p chα»nh sα»a hα» sΖ‘ ngΖ°α»i dΓΉng theo tΓͺn ΔΔng nhαΊp. YΓͺu cαΊ§u Δược gα»i ΔαΊΏn endpoint sau:
YΓͺu cαΊ§u phΓa mΓ‘y chα»§ sαΊ½ lΓ :
KαΊ» tαΊ₯n cΓ΄ng cΓ³ thα» thao tΓΊng tham sα» ΔΖ°α»ng dαΊ«n phΓa mΓ‘y chα»§ Δα» khai thΓ‘c API. Δα» kiα»m tra lα» hα»ng nΓ y, bαΊ‘n cΓ³ thα» thΓͺm cΓ‘c chuα»i path traversal Δα» thay Δα»i tham sα» vΓ quan sΓ‘t cΓ‘ch α»©ng dα»₯ng phαΊ£n hα»i.
VΓ dα»₯ thα» nghiα»m:
BαΊ‘n cΓ³ thα» gα»i giΓ‘ trα» mΓ£ hΓ³a URL peter/../admin cho tham sα» name:
Δiα»u nΓ y cΓ³ thα» dαΊ«n ΔαΊΏn yΓͺu cαΊ§u phΓa mΓ‘y chα»§ sau:
NαΊΏu API hoαΊ·c mΓ‘y chα»§ phΓa back-end chuαΊ©n hΓ³a ΔΖ°α»ng dαΊ«n (normalize path), nΓ³ cΓ³ thα» giαΊ£i quyαΊΏt thΓ nh:
Lab: Exploiting server-side parameter pollution in a REST URL



Endpoint phΓ’n tΓch chi tiαΊΏt:
/api/internal/v1/users/{username}/field/{field}:Method:
"get"(phΖ°Ζ‘ng thα»©c GET Δα» lαΊ₯y dα»― liα»u tα»« server).Parameters:
"username":LoαΊ‘i tham sα»:
"in": "path"(tham sα» nαΊ±m trong URL).BαΊ―t buα»c (
"required": true).CΓ³ mΓ΄ tαΊ£:
"description": "Username".
"field":ΔΓ’y lΓ mα»t tham sα» khΓ‘c trong endpoint, cho phΓ©p bαΊ‘n xΓ‘c Δα»nh loαΊ‘i thΓ΄ng tin cαΊ§n lαΊ₯y tα»« API (vΓ dα»₯: email, token...).



Last updated