πŸ”Access control vulnerabilities and privilege escalation

Server Side Vul

Access control là gì ?

Access control hay cΓ³ thể gọi lΓ  authorization( cαΊ₯p quyền) lΓ  cαΊ₯p quyền cho ai hoαΊ·c cΓ‘i gΓ¬ thể thα»±c cΓ‘c hΓ nh Δ‘α»™ng riΓͺng biệt hoαΊ·c truy cαΊ­p tΓ i nguyΓͺn mΓ  họ yΓͺu cαΊ§u. ThΓ΄ng thường α»©ng dα»₯ng web, access control phα»₯ thuα»™c vΓ o authentication vΓ  quαΊ£n lΓ½ session:

  • Authentication: NhαΊ­n biαΊΏt user vΓ  confirm rαΊ±ng họ chΓ­nh lΓ  họ

  • QuαΊ£n lΓ½ Session: NhαΊ­n biαΊΏt cΓ‘c HTTP request tiαΊΏp theo nΓ o Δ‘ang được yΓͺu cαΊ§u bởi user Δ‘Γ³

  • Accesss control: XΓ‘c Δ‘α»‹nh user được phΓ©p tiαΊΏn hΓ nh hΓ nh Δ‘α»™ng mΓ  họ Δ‘ang cα»‘ gαΊ―ng thα»±c hiện hay khΓ΄ng...

Broken access controls lΓ  mα»™t lα»— hα»•ng bαΊ£o mαΊ­t thường gαΊ·p vΓ  nghiΓͺm trọng, nΓ³ phΓ‘ vα»‘ quyền Δ‘iều khiển vượt qua cΓ‘c kiểm soΓ‘t tα»« Δ‘Γ³ cΓ³ thể xem cΓ‘c thΓ΄ng tin nhαΊ‘y cαΊ£m.

Vertical access controls

NΓ³ cΓ³ nghΔ©a lΓ  kiểm soΓ‘t truy cαΊ­p dọc.....cΓ³ nghΔ©a lΓ  tα»« trΓͺn xuα»‘ng dΖ°α»›i, tα»« cao nhαΊ₯t xuα»‘ng thαΊ₯p nhαΊ₯t.

Vertical access controls lΓ  cΖ‘ chαΊΏ hαΊ‘n chαΊΏ quyền truy cαΊ­p vΓ o chα»©c nΔƒng nhαΊ‘y cαΊ£m khΓ΄ng cΓ³ sαΊ΅n cho cΓ‘c kiểu người dΓΉng khΓ‘c.

Vα»›i vertical access controls, cΓ‘c kiểu người dΓΉng khΓ‘c nhau cΓ³ quyền truy cαΊ­p vΓ o cΓ‘c chα»©c nΔƒng α»©ng dα»₯ng khΓ‘c nhau. VΓ­ dα»₯: quαΊ£n trα»‹ viΓͺn cΓ³ thể sα»­a Δ‘α»•i hoαΊ·c xΓ³a tΓ i khoαΊ£n của bαΊ₯t kα»³ người dΓΉng nΓ o, trong khi người dΓΉng bΓ¬nh thường khΓ΄ng cΓ³ quyền truy cαΊ­p vΓ o cΓ‘c hΓ nh Δ‘α»™ng nΓ y. Kiểm soΓ‘t truy cαΊ­p theo chiều tα»« trΓͺn xuα»‘ng cΓ³ thể lΓ  cΓ‘ch triển khai chi tiαΊΏt hΖ‘n của cΓ‘c mΓ΄ hΓ¬nh bαΊ£o mαΊ­t được thiαΊΏt kαΊΏ để thα»±c thi cΓ‘c chΓ­nh sΓ‘ch kinh doanh nhΖ° tΓ‘ch biệt cΓ‘c nhiệm vα»₯ vΓ  Γ­t Δ‘αΊ·c quyền nhαΊ₯t.

Horizontal access controls

NΓ³ cΓ³ nghΔ©a lΓ  kiểm soΓ‘t truy cαΊ­p ngang...nghΔ©a lΓ  kiểm soΓ‘t nhα»―ng quyền được cαΊ₯p vα»›i nhα»―ng accout cΓΉng cαΊ₯p vα»›i mΓ¬nh nhΖ° bαΊ‘n khΓ΄ng thể xem mα»™t vΓ i thΓ΄ng tin private của người dΓΉng khΓ‘c.

Horizontal access controls lΓ  cΖ‘ chαΊΏ hαΊ‘n chαΊΏ quyền truy cαΊ­p vΓ o tΓ i nguyΓͺn Δ‘α»‘i vα»›i nhα»―ng người dΓΉng được phΓ©p truy cαΊ­p cα»₯ thể vΓ o cΓ‘c tΓ i nguyΓͺn Δ‘Γ³.

Vα»›i Δ‘iều khiển truy cαΊ­p ngang, nhα»―ng người dΓΉng khΓ‘c nhau cΓ³ quyền truy cαΊ­p vΓ o mα»™t tαΊ­p hợp con cΓ‘c tΓ i nguyΓͺn cΓΉng loαΊ‘i. VΓ­ dα»₯: mα»™t α»©ng dα»₯ng ngΓ’n hΓ ng sαΊ½ cho phΓ©p người dΓΉng xem cΓ‘c giao dα»‹ch vΓ  thα»±c hiện thanh toΓ‘n tα»« tΓ i khoαΊ£n của chΓ­nh họ, chα»© khΓ΄ng phαΊ£i tΓ i khoαΊ£n của bαΊ₯t kα»³ người dΓΉng nΓ o khΓ‘c.

Context-dependent access controls

Kiểm soΓ‘t truy cαΊ­p phα»₯ thuα»™c vΓ o ngα»― cαΊ£nh hαΊ‘n chαΊΏ quyền truy cαΊ­p vΓ o chα»©c nΔƒng vΓ  tΓ i nguyΓͺn dα»±a trΓͺn trαΊ‘ng thΓ‘i của α»©ng dα»₯ng hoαΊ·c tΖ°Ζ‘ng tΓ‘c của người dΓΉng vα»›i nΓ³.

Kiểm soΓ‘t truy cαΊ­p phα»₯ thuα»™c vΓ o ngα»― cαΊ£nh ngΔƒn người dΓΉng thα»±c hiện cΓ‘c hΓ nh Δ‘α»™ng khΓ΄ng Δ‘ΓΊng thα»© tα»±. VΓ­ dα»₯: mα»™t trang web bΓ‘n lαΊ» cΓ³ thể ngΔƒn người dΓΉng sα»­a Δ‘α»•i nα»™i dung trong giỏ hΓ ng của họ sau khi họ Δ‘Γ£ thanh toΓ‘n.

Broken access control

Vertical privilege escalation

NαΊΏu người dΓΉng cΓ³ thể cΓ³ quyền truy cαΊ­p vΓ o chα»©c nΔƒng mΓ  họ khΓ΄ng được phΓ©p truy cαΊ­p thΓ¬ Δ‘Γ’y lΓ  sα»± leo thang Δ‘αΊ·c quyền theo chiều dọc.

VΓ­ dα»₯: nαΊΏu người dΓΉng khΓ΄ng phαΊ£i quαΊ£n trα»‹ trΓͺn thα»±c tαΊΏ cΓ³ thể cΓ³ quyền truy cαΊ­p vΓ o trang quαΊ£n trα»‹ nΖ‘i họ cΓ³ thể xΓ³a tΓ i khoαΊ£n người dΓΉng, thΓ¬ Δ‘Γ’y lΓ  sα»± leo thang Δ‘αΊ·c quyền theo chiều dọc.

Unprotected functionality

Unprotect chα»©c nΔƒng lΓ  cΓ‘i cΖ‘ bαΊ£n nhαΊ₯t mΓ  kαΊ» tαΊ₯n cΓ΄ng cΓ³ tαΊ₯n cΓ΄ng, leo thang Δ‘αΊ·c quyền theo chiều dọc phΓ‘t sinh khi α»©ng dα»₯ng khΓ΄ng thα»±c thi bαΊ₯t kα»³ biện phΓ‘p bαΊ£o vệ nΓ o Δ‘α»‘i vα»›i chα»©c nΔƒng nhαΊ‘y cαΊ£m.

VΓ­ dα»₯: cΓ‘c chα»©c nΔƒng quαΊ£n trα»‹ cΓ³ thể được liΓͺn kαΊΏt tα»« trang chΓ o mα»«ng của quαΊ£n trα»‹ viΓͺn nhΖ°ng khΓ΄ng được liΓͺn kαΊΏt tα»« trang chΓ o mα»«ng của người dΓΉng. Tuy nhiΓͺn, người dΓΉng cΓ³ thể chỉ cαΊ§n truy cαΊ­p cΓ‘c chα»©c nΔƒng quαΊ£n trα»‹ bαΊ±ng cΓ‘ch duyệt trα»±c tiαΊΏp Δ‘αΊΏn URL quαΊ£n trα»‹ cΓ³ liΓͺn quan.

VΓ­ dα»₯ nhΖ° URL sau:

https://insecure-website.com/admin

NhΖ° ta Δ‘Γ£ thαΊ₯y người dΓΉng cΓ³ thể truy cαΊ­p tα»›i admin mΓ  khΓ΄ng bα»‹ ngΔƒn chαΊ·n bởi chα»©c nΔƒng nΓ o.

Điều nΓ y trΓͺn thα»±c tαΊΏ cΓ³ thể được truy cαΊ­p bởi bαΊ₯t kα»³ người dΓΉng nΓ o, khΓ΄ng chỉ nhα»―ng người dΓΉng quαΊ£n trα»‹ cΓ³ liΓͺn kαΊΏt Δ‘αΊΏn chα»©c nΔƒng trong giao diện người dΓΉng của họ. Trong mα»™t sα»‘ trường hợp, URL quαΊ£n trα»‹ cΓ³ thể được tiαΊΏt lα»™ ở cΓ‘c vα»‹ trΓ­ khΓ‘c, chαΊ³ng hαΊ‘n nhΖ° file robots.txt:

https://insecure-website.com/robots.txt

Trong mα»™t sα»‘ trường hợp, cΓ‘c function nhαΊ‘y cαΊ£m khΓ΄ng được bαΊ£o vệ mαΊ‘nh nhΖ°ng nΓ³ được giαΊ₯u Δ‘i bαΊ±ng cΓ‘ch cung cαΊ₯p cho mα»™t url khΓ³ Δ‘oΓ‘n hΖ‘n, bởi vαΊ­y được gọi lΓ  bαΊ£o mαΊ­t bαΊ±ng cΓ‘ch che khuαΊ₯t. ThαΊ­t ra chỉ αΊ©n Δ‘i cΓ‘c chα»©c nΔƒng nhαΊ‘y cαΊ£m chα»© khΓ΄ng cung cαΊ₯p cΓ‘c quyền access thΓ¬ người dΓΉng vαΊ«n cΓ³ thể tΓ¬m ra được url bαΊ±ng nhiều cΓ‘ch.

VΓ­ dα»₯ nhΖ° mα»™t url sau cΓ³ lΖ°u trα»― cΓ‘c function của admin:

https://insecure-website.com/administrator-panel-yb556

KαΊ» tαΊ₯n cΓ΄ng cΓ³ thể khΓ΄ng Δ‘oΓ‘n được trα»±c tiαΊΏp Δ‘iều nΓ y. Tuy nhiΓͺn, α»©ng dα»₯ng vαΊ«n cΓ³ thể lΓ m rΓ² rỉ URL cho người dΓΉng.

VΓ­ dα»₯: URL cΓ³ thể được tiαΊΏt lα»™ trong JavaScript tαΊ‘o giao diện người dΓΉng dα»±a trΓͺn vai trΓ² của người dΓΉng- cΓ³ nghΔ©a cΓ‘c file được load cΓΉng giao diện người dΓΉng:

<script>
var isAdmin = false;
if (isAdmin) {
	...
	var adminPanelTag = document.createElement('a');
	adminPanelTag.setAttribute('https://insecure-website.com/administrator-panel-yb556');
	adminPanelTag.innerText = 'Admin panel';
	...
}
</script>

Parameter-based access control methods

Mα»™t sα»‘ α»©ng dα»₯ng xΓ‘c Δ‘α»‹nh quyền truy cαΊ­p người dΓΉng hoαΊ·c vai trΓ² trong login vΓ  sau Δ‘Γ³ lΖ°u trα»― thΓ΄ng tin ở vα»‹ trΓ­ người dΓΉng cΓ³ thể control ( controllable) nhΖ° lΓ  cΓ‘c trường αΊ©n, cookie hoαΊ·c cΓ‘c truy vαΊ«n tham sα»‘ hiện tαΊ‘i. Ứng dα»₯ng Δ‘Ζ°a ra cΓ‘c quyαΊΏt Δ‘α»‹nh access control tiαΊΏp theo dα»±a trΓͺn giΓ‘ trα»‹ Δ‘Γ£ gα»­i.

VΓ­ dα»₯:

https://insecure-website.com/login/home.jsp?admin=true
https://insecure-website.com/login/home.jsp?role=1

CΓ‘ch tiαΊΏp cαΊ­n nΓ y về cΖ‘ bαΊ£n thΓ¬ khΓ΄ng an toΓ n bởi vΓ¬ người dΓΉng cΓ³ thể chỉ cαΊ§n sα»­a Δ‘α»•i giΓ‘ trα»‹ vΓ  giΓ nh được quyền truy cαΊ­p cΓ‘c function mΓ  họ khΓ΄ng được phΓ©p nhΖ° lΓ  function admin.

Trong hai lab nΓ y thΓ¬ lab thα»© nhαΊ₯t khΓ‘ dα»… chΓΊng ta chỉ cαΊ§n thay Δ‘α»•i giΓ‘ trα»‹ cookie của admin lΓ  true nhΖ°ng thα»±c tαΊΏ ngoΓ i đời rαΊ₯t hiαΊΏm cΓ³ trường hợp nΓ y, trong lab 2 thΓ¬ khi mΓ¬nh gα»­i tΓ i khoαΊ£n vΓ  mαΊ­t khαΊ©u thΓ¬ trường mα»—i tΓ i khoαΊ£n sαΊ½ cΓ³ mα»™t roleid, nΓ³ lΓ  id của vai trΓ² thΓ¬ nαΊΏu cΓ³ thể hΓ£y thα»­ tα»«ng id mα»™t để ra id của admin thΓ¬ lΓΊc Δ‘Γ³ chΓΊng ta sαΊ½ nhΖ° mα»™t admin, hΓ£y gα»­i cΓ‘c cΓ‘c nhΖ° thay Δ‘α»•i email, Δ‘α»•i pass... để xem response lΓ  gΓ¬ vΓ  tα»« Δ‘Γ³ khai thΓ‘c nΓ³.

Broken access control resulting from platform misconfiguration

Mα»™t sα»‘ α»©ng dα»₯ng thα»±c thi cΓ‘c access control ở layer nền tαΊ£ng bαΊ±ng cΓ‘ch restrict truy cαΊ­p Δ‘αΊΏn cΓ‘c URL vΓ  phΖ°Ζ‘ng thα»©c HTTP Δ‘αΊ·c biệt dα»±a trΓͺn vai trΓ² của người dΓΉng.

VΓ­ dα»₯ về mα»™t α»©ng dα»₯ng cΓ³ cΓ’u hΓ¬nh nhΖ° sau:

DENY: POST, /admin/deleteUser, managers

Quy tαΊ―c nΓ y tα»« chα»‘i quyền truy cαΊ­p vΓ o POST phΖ°Ζ‘ng thα»©c trΓͺn URL /admin/deleteUser, Δ‘α»‘i vα»›i người dΓΉng trong nhΓ³m người quαΊ£n lΓ½. Nhiều thα»© cΓ³ thể xαΊ£y ra sai trong tΓ¬nh huα»‘ng nΓ y, dαΊ«n Δ‘αΊΏn việc bỏ qua kiểm soΓ‘t truy cαΊ­p.

Mα»™t sα»‘ khung α»©ng dα»₯ng hα»— trợ cΓ‘c tiΓͺu đề HTTP khΓ΄ng chuαΊ©n khΓ‘c nhau cΓ³ thể được sα»­ dα»₯ng để ghi Δ‘Γ¨ URL trong yΓͺu cαΊ§u ban Δ‘αΊ§u, chαΊ³ng hαΊ‘n nhΖ° X-Original-URLvΓ  X-Rewrite-URL.

Thường thΓ¬ truy cαΊ­p của người dΓΉng vΓ o nhα»―ng file nhΖ° nΓ y nΓ³ sαΊ½ bΓ‘o lα»—i 403 cΓ³ nghΔ©a deny access. NαΊΏu mα»™t trang web sα»­ dα»₯ng cΓ‘c Δ‘iều khiển front-end người dΓΉng nghiΓͺm ngαΊ·t để hαΊ‘n chαΊΏ quyền truy cαΊ­p dα»±a trΓͺn URL, nhΖ°ng α»©ng dα»₯ng cho phΓ©p ghi Δ‘Γ¨ URL qua tiΓͺu đề yΓͺu cαΊ§u, thΓ¬ cΓ³ thể bỏ qua cΓ‘c Δ‘iều khiển truy cαΊ­p bαΊ±ng cΓ‘ch sα»­ dα»₯ng mα»™t yΓͺu cαΊ§u nhΖ° sau:

POST / HTTP/1.1
X-Original-URL: /admin/deleteUser
...

Hoặc như này sẽ trả về status 403

GET /.git/ HTTP/1.1
Host: example.com

Nα»— lα»±c bỏ qua nΓ y cΕ©ng sαΊ½ trαΊ£ về 403, vΓ¬ URI khΓ΄ng thay Δ‘α»•i vΓ  quy tαΊ―c vαΊ«n Γ‘p dα»₯ng:

GET /.git/ HTTP/1.1
Host: example.com
X-Rewrite-URL: /.git/

Điều này sẽ bỏ qua hẑn chế:

GET / HTTP/1.1
Host: example.com
X-Rewrite-URL: /.git/

Mα»™t cuα»™c tαΊ₯n cΓ΄ng thay thαΊΏ cΓ³ thể phΓ‘t sinh liΓͺn quan Δ‘αΊΏn phΖ°Ζ‘ng thα»©c HTTP được sα»­ dα»₯ng trong request. CΓ‘c Δ‘iều khiển giao diện người dΓΉng ở trΓͺn hαΊ‘n chαΊΏ quyền truy cαΊ­p dα»±a trΓͺn URL vΓ  phΖ°Ζ‘ng thα»©c HTTP. Mα»™t sα»‘ trang web cΓ³ thể chαΊ₯p nhαΊ­n cΓ‘c phΖ°Ζ‘ng thα»©c yΓͺu cαΊ§u HTTP thay thαΊΏ khi thα»±c hiện mα»™t hΓ nh Δ‘α»™ng. NαΊΏu kαΊ» tαΊ₯n cΓ΄ng cΓ³ thể sα»­ dα»₯ng GET(hoαΊ·c mα»™t phΖ°Ζ‘ng thα»©c khΓ‘c) để thα»±c hiện cΓ‘c hΓ nh Δ‘α»™ng trΓͺn mα»™t URL bα»‹ hαΊ‘n chαΊΏ, thΓ¬ chΓΊng cΓ³ thể phΓ‘ vα»‘ kiểm soΓ‘t truy cαΊ­p được triển khai ở lα»›p nền tαΊ£ng.

Horizontal privilege escalation

Sα»± leo thang Δ‘αΊ·c quyền theo chiều ngang phΓ‘t sinh khi người dΓΉng cΓ³ thể cΓ³ quyền truy cαΊ­p vΓ o tΓ i nguyΓͺn thuα»™c về người dΓΉng khΓ‘c, thay vΓ¬ tΓ i nguyΓͺn của chΓ­nh họ thuα»™c loαΊ‘i Δ‘Γ³. VΓ­ dα»₯: nαΊΏu mα»™t nhΓ’n viΓͺn chỉ cΓ³ thể truy cαΊ­p hα»“ sΖ‘ việc lΓ m vΓ  bαΊ£ng lΖ°Ζ‘ng của họ, nhΖ°ng trΓͺn thα»±c tαΊΏ cΕ©ng cΓ³ thể truy cαΊ­p hα»“ sΖ‘ của cΓ‘c nhΓ’n viΓͺn khΓ‘c, thΓ¬ Δ‘Γ’y lΓ  sα»± leo thang Δ‘αΊ·c quyền theo chiều ngang.

CΓ‘c cuα»™c tαΊ₯n cΓ΄ng leo thang Δ‘αΊ·c quyền theo chiều ngang cΓ³ thể sα»­ dα»₯ng cΓ‘c loαΊ‘i phΖ°Ζ‘ng phΓ‘p khai thΓ‘c tΖ°Ζ‘ng tα»± để leo thang Δ‘αΊ·c quyền theo chiều dọc. VΓ­ dα»₯: thΓ΄ng thường người dΓΉng cΓ³ thể truy cαΊ­p trang tΓ i khoαΊ£n của họ bαΊ±ng URL nhΖ° sau:

https://insecure-website.com/myaccount?id=123

BΓ’y giờ, nαΊΏu kαΊ» tαΊ₯n cΓ΄ng sα»­a Δ‘α»•i id giΓ‘ trα»‹ tham sα»‘ của người dΓΉng khΓ‘c, thΓ¬ kαΊ» tαΊ₯n cΓ΄ng cΓ³ thể cΓ³ quyền truy cαΊ­p vΓ o trang tΓ i khoαΊ£n của người dΓΉng khΓ‘c, vα»›i dα»― liệu vΓ  chα»©c nΔƒng được liΓͺn kαΊΏt.

CΓ‘i nΓ y thường xαΊ£y ra ở nhα»―ng trang web trường học nαΊΏu khΓ΄ng được xΓ‘c thα»±c id, cΓ‘i nΓ y thαΊ­t sα»± lΓ  mα»™t lα»— hα»•ng lα»›n...

Mα»™t sα»‘ α»©ng dα»₯ng khΓ‘c, tham sα»‘ cΓ³ thể khai thΓ‘c khΓ΄ng cΓ³ giΓ‘ trα»‹ cΓ³ thể dα»± Δ‘oΓ‘n được.

VΓ­ dα»₯: thay vΓ¬ mα»™t sα»‘ tΔƒng dαΊ§n, mα»™t α»©ng dα»₯ng cΓ³ thể sα»­ dα»₯ng sα»‘ nhαΊ­n dαΊ‘ng duy nhαΊ₯t trΓͺn toΓ n cαΊ§u (GUID) để xΓ‘c Δ‘α»‹nh người dΓΉng. Ở Δ‘Γ’y, kαΊ» tαΊ₯n cΓ΄ng cΓ³ thể khΓ΄ng Δ‘oΓ‘n hoαΊ·c dα»± Δ‘oΓ‘n được mΓ£ Δ‘α»‹nh danh cho người dΓΉng khΓ‘c. Tuy nhiΓͺn, cΓ‘c GUID của người dΓΉng khΓ‘c cΓ³ thể được tiαΊΏt lα»™ ở nΖ‘i khΓ‘c trong α»©ng dα»₯ng nΖ‘i người dΓΉng được tham chiαΊΏu, chαΊ³ng hαΊ‘n nhΖ° tin nhαΊ―n hoαΊ·c bΓ i Δ‘Γ‘nh giΓ‘ của người dΓΉng.

/?studentID=ss343i-k80kg-hf54-80d2-0489dedc

Mα»™t sα»‘ trường hợp, α»©ng dα»₯ng phΓ‘t hiện khi nΓ o người dΓΉng khΓ΄ng được phΓ©p truy cαΊ­p tΓ i nguyΓͺn vΓ  trαΊ£ về chuyển hΖ°α»›ng Δ‘αΊΏn trang Δ‘Δƒng nhαΊ­p. Tuy nhiΓͺn, response cΓ³ chα»©a chuyển hΖ°α»›ng vαΊ«n cΓ³ thể bao gα»“m mα»™t sα»‘ dα»― liệu nhαΊ‘y cαΊ£m thuα»™c về người dΓΉng được nhαΊ―m mα»₯c tiΓͺu, vΓ¬ vαΊ­y cuα»™c tαΊ₯n cΓ΄ng vαΊ«n thΓ nh cΓ΄ng.

Horizontal to vertical privilege escalation

ThΓ΄ng thường, mα»™t cuα»™c tαΊ₯n cΓ΄ng leo thang Δ‘αΊ·c quyền theo chiều ngang cΓ³ thể được chuyển thΓ nh mα»™t cuα»™c tαΊ₯n cΓ΄ng leo thang Δ‘αΊ·c quyền theo chiều dọc, bαΊ±ng cΓ‘ch lΓ m αΊ£nh hưởng Δ‘αΊΏn người dΓΉng cΓ³ Δ‘αΊ·c quyền hΖ‘n. VΓ­ dα»₯: leo thang theo chiều ngang cΓ³ thể cho phΓ©p kαΊ» tαΊ₯n cΓ΄ng Δ‘αΊ·t lαΊ‘i hoαΊ·c lαΊ₯y mαΊ­t khαΊ©u của người dΓΉng khΓ‘c. NαΊΏu kαΊ» tαΊ₯n cΓ΄ng nhαΊ―m mα»₯c tiΓͺu người dΓΉng quαΊ£n trα»‹ vΓ  xΓ’m phαΊ‘m tΓ i khoαΊ£n của họ, thΓ¬ họ cΓ³ thể cΓ³ quyền truy cαΊ­p quαΊ£n trα»‹ vΓ  do Δ‘Γ³ thα»±c hiện leo thang Δ‘αΊ·c quyền theo chiều dọc.

VΓ­ dα»₯: kαΊ» tαΊ₯n cΓ΄ng cΓ³ thể cΓ³ quyền truy cαΊ­p vΓ o trang tΓ i khoαΊ£n của người dΓΉng khΓ‘c bαΊ±ng cΓ‘ch sα»­ dα»₯ng kα»Ή thuαΊ­t giαΊ£ mαΊ‘o tham sα»‘ Δ‘Γ£ được mΓ΄ tαΊ£ cho việc leo thang Δ‘αΊ·c quyền theo chiều ngang:

https://insecure-website.com/myaccount?id=456

NαΊΏu người dΓΉng mα»₯c tiΓͺu lΓ  quαΊ£n trα»‹ viΓͺn α»©ng dα»₯ng, thΓ¬ kαΊ» tαΊ₯n cΓ΄ng sαΊ½ cΓ³ quyền truy cαΊ­p vΓ o trang tΓ i khoαΊ£n quαΊ£n trα»‹. Trang nΓ y cΓ³ thể tiαΊΏt lα»™ mαΊ­t khαΊ©u của quαΊ£n trα»‹ viΓͺn hoαΊ·c cung cαΊ₯p phΖ°Ζ‘ng tiện thay Δ‘α»•i mαΊ­t khαΊ©u hoαΊ·c cΓ³ thể cung cαΊ₯p quyền truy cαΊ­p trα»±c tiαΊΏp vΓ o chα»©c nΔƒng Δ‘αΊ·c quyền.

Insecure direct object references (IDOR)

Tham chiαΊΏu Δ‘α»‘i tượng trα»±c tiαΊΏp khΓ΄ng an toΓ n (IDOR) lΓ  mα»™t loαΊ‘i lα»— hα»•ng kiểm soΓ‘t truy cαΊ­p phΓ‘t sinh khi α»©ng dα»₯ng sα»­ dα»₯ng Δ‘αΊ§u vΓ o do người dΓΉng cung cαΊ₯p để truy cαΊ­p trα»±c tiαΊΏp cΓ‘c Δ‘α»‘i tượng. ThuαΊ­t ngα»― IDOR Δ‘Γ£ được phα»• biαΊΏn khi nΓ³ xuαΊ₯t hiện trong Top 10 OWASP 2007. Tuy nhiΓͺn, Δ‘Γ³ chỉ lΓ  mα»™t vΓ­ dα»₯ về nhiều sai lαΊ§m khi triển khai kiểm soΓ‘t truy cαΊ­p cΓ³ thể dαΊ«n Δ‘αΊΏn việc kiểm soΓ‘t truy cαΊ­p bα»‹ phΓ‘ vα»‘. CΓ‘c lα»— hα»•ng IDOR thường liΓͺn quan Δ‘αΊΏn việc leo thang Δ‘αΊ·c quyền theo chiều ngang, nhΖ°ng chΓΊng cΕ©ng cΓ³ thể phΓ‘t sinh liΓͺn quan Δ‘αΊΏn leo thang Δ‘αΊ·c quyền theo chiều dọc.

Lα»— hα»•ng IDOR vα»›i tham chiαΊΏu trα»±c tiαΊΏp Δ‘αΊΏn cΓ‘c Δ‘α»‘i tượng cΖ‘ sở dα»― liệu

HΓ£y xem xΓ©t mα»™t trang web sα»­ dα»₯ng URL:

https://insecure-website.com/customer_account?customer_number=132355

NαΊΏu khΓ΄ng cΓ³ cΓ‘c biện phΓ‘p kiểm soΓ‘t nΓ o khΓ‘c, kαΊ» tαΊ₯n cΓ΄ng cΓ³ thể chỉ cαΊ§n sα»­a Δ‘α»•i giΓ‘ trα»‹ customer_number, bỏ qua cΓ‘c kiểm soΓ‘t truy cαΊ­p để xem hα»“ sΖ‘ của cΓ‘c khΓ‘ch hΓ ng khΓ‘c. ĐÒy lΓ  mα»™t vΓ­ dα»₯ về lα»— hα»•ng IDOR dαΊ«n Δ‘αΊΏn leo thang Δ‘αΊ·c quyền theo chiều ngang.

Lα»— hα»•ng IDOR vα»›i tham chiαΊΏu trα»±c tiαΊΏp Δ‘αΊΏn cΓ‘c tệp tΔ©nh

CΓ‘c lα»— hα»•ng IDOR thường phΓ‘t sinh khi cΓ‘c tΓ i nguyΓͺn nhαΊ‘y cαΊ£m nαΊ±m trong cΓ‘c tệp tΔ©nh trΓͺn hệ thα»‘ng tệp phΓ­a mΓ‘y chủ. VΓ­ dα»₯: mα»™t trang web cΓ³ thể lΖ°u cΓ‘c bαΊ£n ghi tin nhαΊ―n trΓ² chuyện vΓ o Δ‘Δ©a bαΊ±ng cΓ‘ch sα»­ dα»₯ng tΓͺn tệp tΔƒng dαΊ§n vΓ  cho phΓ©p người dΓΉng truy xuαΊ₯t cΓ‘c bαΊ£n ghi nΓ y bαΊ±ng cΓ‘ch truy cαΊ­p vΓ o mα»™t URL nhΖ° sau:

https://insecure-website.com/static/121.txt

Khi Δ‘Γ³ kαΊ» tαΊ₯n cΓ΄ng cΓ³ thể chỉ cαΊ§n sα»­a Δ‘α»•i tΓͺn tệp để truy xuαΊ₯t bαΊ£n ghi do người dΓΉng khΓ‘c tαΊ‘o vΓ  cΓ³ khαΊ£ nΔƒng lαΊ₯y được thΓ΄ng tin Δ‘Δƒng nhαΊ­p của người dΓΉng vΓ  dα»― liệu nhαΊ‘y cαΊ£m khΓ‘c.

Access control vulnerabilities in multi-step processes

Nhiều trang web thα»±c hiện cΓ‘c chα»©c nΔƒng quan trọng qua mα»™t loαΊ‘t cΓ‘c bΖ°α»›c.

VΓ­ dα»₯: chα»©c nΔƒng quαΊ£n trα»‹ để cαΊ­p nhαΊ­t chi tiαΊΏt người dΓΉng cΓ³ thể bao gα»“m cΓ‘c bΖ°α»›c sau:

  1. TαΊ£i biểu mαΊ«u cΓ³ chα»©a thΓ΄ng tin chi tiαΊΏt cho mα»™t người dΓΉng cα»₯ thể.

  2. Gα»­i cΓ‘c thay Δ‘α»•i.

  3. Xem lαΊ‘i cΓ‘c thay Δ‘α»•i vΓ  xΓ‘c nhαΊ­n.

Đôi khi, mα»™t trang web sαΊ½ thα»±c hiện cΓ‘c biện phΓ‘p kiểm soΓ‘t truy cαΊ­p nghiΓͺm ngαΊ·t Δ‘α»‘i vα»›i mα»™t sα»‘ bΖ°α»›c nΓ y, nhΖ°ng lαΊ‘i bỏ qua nhα»―ng bΖ°α»›c khΓ‘c.

VΓ­ dα»₯: giαΊ£ sα»­ cΓ‘c Δ‘iều khiển truy cαΊ­p được Γ‘p dα»₯ng chΓ­nh xΓ‘c cho bΖ°α»›c Δ‘αΊ§u tiΓͺn vΓ  bΖ°α»›c thα»© hai, nhΖ°ng khΓ΄ng Γ‘p dα»₯ng cho bΖ°α»›c thα»© ba. Về mαΊ·t hiệu quαΊ£, trang web giαΊ£ Δ‘α»‹nh rαΊ±ng người dΓΉng sαΊ½ chỉ Δ‘αΊ‘t được bΖ°α»›c 3 nαΊΏu họ Δ‘Γ£ hoΓ n thΓ nh cΓ‘c bΖ°α»›c Δ‘αΊ§u tiΓͺn, được kiểm soΓ‘t Δ‘ΓΊng cΓ‘ch. TαΊ‘i Δ‘Γ’y, kαΊ» tαΊ₯n cΓ΄ng cΓ³ thể truy cαΊ­p trΓ‘i phΓ©p vΓ o chα»©c nΔƒng bαΊ±ng cΓ‘ch bỏ qua hai bΖ°α»›c Δ‘αΊ§u tiΓͺn vΓ  trα»±c tiαΊΏp gα»­i yΓͺu cαΊ§u cho bΖ°α»›c thα»© ba vα»›i cΓ‘c tham sα»‘ bαΊ―t buα»™c.

Referer-based access control

Mα»™t sα»‘ trang web kiểm soΓ‘t quyền truy cαΊ­p dα»±a trΓͺn Refererheader được gα»­i trong HTTP requesr. Referer header thường được thΓͺm vΓ o cΓ‘c yΓͺu cαΊ§u của trΓ¬nh duyệt để cho biαΊΏt trang mΓ  tα»« Δ‘Γ³ mα»™t yΓͺu cαΊ§u được bαΊ―t Δ‘αΊ§u.

VΓ­ dα»₯: giαΊ£ sα»­ mα»™t α»©ng dα»₯ng thα»±c thi mαΊ‘nh mαΊ½ quyền kiểm soΓ‘t truy cαΊ­p Δ‘α»‘i vα»›i trang quαΊ£n trα»‹ chΓ­nh tαΊ‘i /admin, nhΖ°ng Δ‘α»‘i vα»›i cΓ‘c trang phα»₯, chαΊ³ng hαΊ‘n nhΖ° /admin/deleteUser chỉ kiểm tra Referer Header. NαΊΏu Referer Header chα»©a /adminURL chΓ­nh, thΓ¬ yΓͺu cαΊ§u được cho phΓ©p.

Trong tΓ¬nh huα»‘ng nΓ y, vΓ¬ RefererkαΊ» tαΊ₯n cΓ΄ng cΓ³ thể kiểm soΓ‘t hoΓ n toΓ n header, chΓΊng cΓ³ thể giαΊ£ mαΊ‘o cΓ‘c yΓͺu cαΊ§u trα»±c tiαΊΏp Δ‘αΊΏn cΓ‘c trang con nhαΊ‘y cαΊ£m, cung cαΊ₯p Refererheader bαΊ―t buα»™c vΓ  do Δ‘Γ³ cΓ³ được quyền truy cαΊ­p trΓ‘i phΓ©p.

CÑch ngăn chặn cÑc lỗ hổng access control

CΓ‘c lα»— hα»•ng access control nΓ³i chung cΓ³ thể được ngΔƒn chαΊ·n bαΊ±ng cΓ‘ch thα»±c hiện cΓ‘ch tiαΊΏp cαΊ­n chuyΓͺn sΓ’u về phΓ²ng thủ vΓ  Γ‘p dα»₯ng cΓ‘c nguyΓͺn tαΊ―c sau:

  • KhΓ΄ng bao giờ chỉ dα»±a vΓ o obfuscation để kiểm soΓ‘t truy cαΊ­p.

  • Trα»« khi mα»™t tΓ i nguyΓͺn được thiαΊΏt kαΊΏ để cΓ³ thể truy cαΊ­p cΓ΄ng khai, hΓ£y tα»« chα»‘i quyền truy cαΊ­p theo mαΊ·c Δ‘α»‹nh.

  • BαΊ₯t cα»© khi nΓ o cΓ³ thể, hΓ£y sα»­ dα»₯ng mα»™t cΖ‘ chαΊΏ toΓ n α»©ng dα»₯ng để thα»±c thi cΓ‘c biện phΓ‘p access control.

  • Ở cαΊ₯p Δ‘α»™ code, bαΊ―t buα»™c cΓ‘c nhΓ  phΓ‘t triển phαΊ£i khai bΓ‘o quyền truy cαΊ­p được phΓ©p cho mα»—i tΓ i nguyΓͺn vΓ  tα»« chα»‘i quyền truy cαΊ­p theo mαΊ·c Δ‘α»‹nh.

  • Kiểm tra kα»Ή lΖ°α»‘ng vΓ  thα»­ nghiệm cΓ‘c biện phΓ‘p kiểm soΓ‘t truy cαΊ­p để Δ‘αΊ£m bαΊ£o chΓΊng Δ‘ang hoαΊ‘t Δ‘α»™ng nhΖ° thiαΊΏt kαΊΏ.

Tα»•ng kαΊΏt

CαΊ£m Ζ‘n cΓ‘c bαΊ‘n Δ‘Γ£ đọc bΓ i viαΊΏt của mΓ¬nh! Nhα»―ng bΓ i viαΊΏt trΓͺn mΓ¬nh đều vα»«a học vΓ  dα»±a theo PortSwign.

Last updated