Гуравдагч этгээдийн хүсэлтийг оруулах боломжийг бидэнд олгодог урд талын арын системүүдийн халдлага

Илчилсэн Агуулга хүргэх сүлжээ, ачааллыг тэнцвэржүүлэгч эсвэл прокси ашиглан ажилладаг сайтууд гэх мэт урд талын загвар ашигладаг сайтууд руу хийсэн шинэ халдлагын талаарх дэлгэрэнгүй мэдээлэл. Энэхүү халдлага нь тодорхой хүсэлтийг илгээснээр урд болон арын хэсгийн хооронд ижил хэлхээнд боловсруулагдсан бусад хүсэлтийн агуулгыг оруулах боломжийг олгодог. Санал болгож буй аргыг PayPal үйлчилгээний хэрэглэгчдийн нэвтрэлт танилтын параметрүүдийг таслан зогсоох боломжийг олгосон халдлагыг зохион байгуулахад амжилттай ашигласан бөгөөд энэ нь засварлагдаагүй эмзэг байдлын талаар мэдээлэх хөтөлбөрийн хүрээнд судлаачдад 40 мянган доллар төлсөн юм. Энэхүү халдлага нь Akamai контент түгээлтийн сүлжээг ашигладаг сайтуудад ч хамаатай.

Асуудлын гол зүйл бол урд болон арын хэсэг нь HTTP протоколд янз бүрийн түвшний дэмжлэг үзүүлдэг боловч нэгэн зэрэг өөр өөр хэрэглэгчдийн хүсэлтийг нийтлэг суваг болгон нэгтгэдэг явдал юм. Frontend хүлээн авах хүсэлтүүд болон backend боловсруулах хүсэлтүүдийг холбохын тулд урт хугацааны TCP холболтыг бий болгож, хэрэглэгчийн хүсэлтийг HTTP протоколоор тусгаарлаж, гинжин хэлхээний дагуу нэг нэгээр нь дамжуулдаг. Хүсэлтүүдийг салгахын тулд "Агуулгын урт" (хүсэлт дэх өгөгдлийн нийт хэмжээг тодорхойлдог) болон "Дамжуулах-кодлох: хэсэгчилсэн"("{size}\r\n{block}\r\n{size}\r\n{block}\r\n0" форматаар өөр өөр хэмжээтэй блокуудыг зааж, хэсэг хэсгээр нь өгөгдөл дамжуулах боломжийг танд олгоно).

Хэрэв урд тал нь зөвхөн "Агуулгын урт"-ыг дэмждэг боловч "Шилжүүлгийн кодчилол: хэсэгчилсэн" -ийг үл тоомсорлодог (жишээлбэл, Akamai CDN үүнийг хийсэн) эсвэл эсрэгээр нь асуудал үүсдэг. Хэрэв Transfer-Encoding: chunked нь хоёр талдаа дэмжигддэг бол HTTP толгойн задлагчийн хэрэгжүүлэх функцуудыг халдлагад ашиглаж болно (жишээ нь, урд хэсэг нь "Шилжүүлэн кодчилол: xchunked", "Шилжүүлэн кодлох: chunked" гэх мэт мөрүүдийг үл тоомсорлодог. ”, “Шилжүүлгийн кодчилол” :[tab]хэсэглэсэн”, “X: X[\n]Шилжүүлгийн кодчилол: хэсэгчилсэн”, “Шилжүүлэн-кодлох[\n]: хэсэгчилсэн” эсвэл “Шилжүүлэн-кодлох: хэсэгчилсэн” болон арын хэсэг нь тэдгээрийг амжилттай боловсруулдаг).

Энэ тохиолдолд халдагчид "Агуулгын урт" болон "Шилжүүлэн кодчилол: хэсэгчилсэн" толгой хэсгийг хоёуланг нь агуулсан хүсэлтийг илгээж болох боловч "Агуулгын урт" дахь хэмжээ нь хэсэгчилсэн гинжин хэлхээний хэмжээтэй тохирохгүй байна. бодит үнэ цэнээс бага байна. Хэрэв урд тал нь хүсэлтийг "Агуулгын урт"-ын дагуу боловсруулж, дамжуулж байгаа бол арын хэсэг нь "Шилжүүлэн-кодлох: хэсэгчилсэн" дээр үндэслэн блокыг дуусгахыг хүлээж байгаа бол "Шилжүүлэн-кодлох: хэсэгчилсэн"-д суурилсан өгөгдлийн төгсгөл нь өмнө нь тодорхойлогдох ба хүсэлтийн үлдсэн хэсэг нь халдагч дараагийн хүсэлтийн эхэнд байх болно, i.e. халдагчид дараа нь дамжуулсан өөр хэн нэгний хүсэлтийн эхэнд дурын өгөгдлийг хавсаргах боломжтой болно.

Гуравдагч этгээдийн хүсэлтийг оруулах боломжийг бидэнд олгодог урд талын арын системүүдийн халдлага

Ашигласан frontend-backend хослолын асуудлыг тодорхойлохын тулд та дараах байдлаар хүсэлт илгээж болно:

POST /HTTP-ийн тухай/1.1
Хөтлөгч: example.com
Дамжуулах-кодлох: хэсэгчилсэн
Агуулга-урт: 4

1
Z
Q

Хэрэв арын хэсэг нь хүсэлтийг тэр даруй боловсруулахгүй бөгөөд хуваагдсан өгөгдлийн эцсийн тэг хязгаарлах блок ирэхийг хүлээж байвал асуудал үүснэ. Илүү бүрэн шалгахын тулд бэлтгэсэн "Шилжүүлгийн кодчилол: хэсэгчилсэн" толгой хэсгийг урд талаас нуух боломжит аргуудыг туршиж үздэг тусгай хэрэгсэл.

Бодит халдлага хийх нь халдлагад өртсөн сайтын чадвараас шалтгаална, жишээлбэл, Trello вэб програм руу довтлохдоо та хүсэлтийн эхлэлийг орлуулж болно ("PUT /1/members/1234... x=x&csrf" гэх мэт өгөгдлийг орлуулж болно. =1234&хэрэглэгчийн нэр=testzzz&bio=бялуу”) болон гуравдагч этгээдийн хэрэглэгчийн анхны хүсэлт, түүнд заасан баталгаажуулалтын күүки агуулсан мессеж илгээнэ үү. Saas-app.com-д халдсан тохиолдолд хүсэлтийн параметрүүдийн аль нэгэнд орлуулж, хариултын JavaScript кодыг орлуулах боломжтой болсон. Redhat.com сайтын халдлагад халдагчийн вэб сайт руу чиглүүлэхийн тулд дотоод зохицуулагчийг ашигласан ("POST /search?dest=../assets/idx?redir=//" маягтын хүсэлт.[имэйлээр хамгаалагдсан]/ HTTP/1.1").

Агуулга дамжуулах сүлжээнд ашиглах аргыг ашигласнаар хүссэн сайтыг "Хост:" толгой хэсгийг орлуулах замаар солих боломжтой болсон. Энэхүү халдлагыг агуулгын кэшийн системийн агуулгыг хордуулж, кэштэй нууц мэдээллийг задлахад ашиглаж болно. Аргын оргил нь PayPal-д халдсан зохион байгуулалт байсан бөгөөд энэ нь баталгаажуулалтын явцад хэрэглэгчдийн илгээсэн нууц үгийг таслан зогсоох боломжийг олгосон (iframe хүсэлтийг paypal.com/us/gifts хуудасны контекст JavaScript ажиллуулахаар өөрчилсөн. аль CSP (Агуулгын аюулгүй байдлын бодлого) хэрэгжээгүй).

Сонирхолтой нь 2005 онд тэнд байсан санал болгосон Прокси (Tomcat, squid, mod_proxy) кэш дэх өгөгдлийг хуурах эсвэл нэг HTTP сесс дотор хэд хэдэн "GET" эсвэл "POST" хүсэлтийг зааж өгснөөр галт ханыг хаахыг тойрч гарах боломжийг олгодог үндсэндээ ижил төстэй хүсэлтийг хуурах арга.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх