⚔️Final-Screenshot 1,2

Web Exploitation | Cross-Site Scripting | Restriction Bypass

Харуул Занги 2021 эхний шат

Харуул Занги 2021 тэмцээний эхний шатанд Screenshot-1 даалгаврыг дангаараа бодож 1000 оноо авсан бөгөөд энэхүү бодлогын талаар яаж бодсоноо бусад багийн гишүүдтэйгээ хуваалцах нь зүйтэй болов уу гэж бодлоо

Screenshot-1

За энэхүү даалгаврыг тэмцээний явцад амжилттай хийсэн ч тэмцээн дууссаны дараа сервер унтарсан учраас харуул занги тэмцээний Github хуудаснаас Docker файлыг авч локалаар ажиллууж даалгаврыг хийхээр бэлтгэв

Building хийж байгаа үйл явц

Өгөгдсөн IP хаяг болон портоор хандаад үзвэл бидэнд Вэб скрийншот авах үйлчилгээ нэртэй форм харагдана. Анх харахад URL-ээр дамжуулж хортой код хуулаад веб сервер дээр агуулагдаж байгаа скрийншот файлуудыг татаж аваад тэрэн дотроосоо flag агуулсан файлыг олох болов уу гэсэн төсөөлөл надад байсан

Формд ямар нэгэн утга оруулаад үзэхэд энд хадгалагдлаа гэх мэт random generate URL өгч байсан бөгөөд энэхүү URL-руу хандаад үзвэл File Not Found алдааг өгч байсан учраас Source Code Analyze хийж үзэхээр шийдэв. Хайлтын үр дүнд ./feed.php гэсэн файлыг олов. Магадгүй сэжигтэй байж болох л юм тэ шалгаад үзье

Файлруу хандаад үзэхэд вебсайтуудын Comment бичдэг хэсэгтэй адилхан харагдав. Үүнийг хараад олон ийм формтой таарж байсан хүний хувьд шууд л Stored XSS байна шүү дээ гэж бодсон.

Юу ч гэсэн эхний ээлжинд хамаагүй утга оруулаад үзье гэж бодсон. Магадгүй NoSQL , PHP-тэй холбоотой Bug байх ч юм билүү тэ хэн мэдлээ ххэ

Мэдээж хүлээлт өндөр байгаагүй учраас Hello гэсэн үгийг маань хэвлэж байсан. Өөр аргаар л үзье даа

Хамгийн энгийн XSS payload-г бичиж тест хийхээр шийдэв. Хэрвээ payload маань ажиллаж байвал окэй миний бүх payload асуудалгүй ажиллах ёстой. Аан ажиллахгүй байвал яг аль хэсгийг нь replace хийж байгааг хайж олох шаардлага үүснэ

Үр дүнд: <script>alert(1);</script> --> <>alert(1); гэсэн л хариу ирэв. Мэдээж скрипт маань бүрэн ажиллаагүй учраас энэхүү replacebypass хийх аргаа бодож эхлэв

Ер нь бол янз бүрээр л давах боломжтой жишээ нь: <scr<script>ipt> , <sscriptcript> гэх мэт миний хувьд яаж шалгалтыг давсан вэ гэхээр <scRipt> буюу дан ганц R үсгийг томоор бичихэд л болно гэж үзсэн

Тийм ээ. Скрипт маань амжилттай ажиллаж pwned by fg0d гэсэн alert мэдээллийг бидэнд харууллаа

ОДОО БҮГДЭЭРЭЭ ЗҮГЭЭР ДУРААРАА ДУРГИХ БОЛОМЖТОЙ

WE CAN FREE TO FLY

Хэрэглэгч талаас буюу бид нар тухайн вебсайтын эмзэг байдлаар дамжуулж ард нь ажиллаж байгаа серверлүү хортой хүсэлт илгээнэ. Илгээхдээ дотор нь буцаад холбогдох ямар нэгэн хаяг тавьж өгөх шаардлага үүсэж байгаа биз тэгэхгүй бол эзэнгүй юм шиг таны хортой код хаашаа явахаа мэдэхгүй хүсэлтээ тухайн хэсэгтээ л дамжуулаад байна гэсэн үг л дээ. За тэгэхээр буцаад ирэх хүсэлтийг нь барьж авахын тулд онлайн webhook ашиглаж барих боломжтой эсвэл requestb.in ч юм уу тэ хүссэнээрээ л хий

XSS хортой кодон дотроо webhook-ээс авсан public URL-аа бичээд Санал Явуулах дарна

Script маань амжилттай ажилласан эсэхийг статикаар анализ хийж үзвэл alert-н ард хэсэгт зурагны icon гарч ирсэн байгааг харж болно. Тэгэхээр скрипт асуудалгүй ажилласан байна гэж ойлгож болно

webhook дээр орж ирсэн хүсэлтийн хариуг харвал нийтдээ 2 response ирсэн байна. Эхний хариу нь миний өөрийн Session ID болон мэдээллийг буцааж харуулсан байгаа харж болно

Дараагийн хариуг харвал админ хэрэглэгчийн Cookie утга байгааг олж харна. Бид вебсайтын цоорхойг ашиглаж ард нь ажиллаж байгаа админ хэрэглэгчийн Session-г амжилттай Hijacking хийчихлээ.

Screenshot-1 флаг: HZ{ye@h_admin_cook1e_and_fl@g_0f_ScreenShot_1}

Screenshot-2

За дараагийн үргэлжлэл хэсэгрүүгээ орж харвал саяны Hijacking хийсэн хэсэгт http://screen/god-wisper.php гэсэн referer байгааг харж болно. Энэ мэдээж бидэнд маш том hint өгч байна

Веб хөтөчийнхөө Proxy-г асааж байгаад туршилт хийж үзье

Хамгийн эхний index.php-д харагдаж байсан форм дотор тест мэдээллийг оруулаад үзсэн

Оруулж байх үедээ хүсэлтийг нь дундаас нь барьж аваад харвал url=hellotest гэж дамжиж байна. Referer нь: http://127.0.0.1:1337 буюу өөрийн локал хаяг байв

Үүнийг олсон мэдээллээрээ http://screen/admin.php болгож өөрчлөөд forward хийгээд үзвэл

Эцэст нь бид Screenshot-2 даалгаврын флагыг оллоо

Screenshot-2 флаг: HZ{2440a6c77ef002838ca441be4a5ec97d}

Last updated