OWASP Tbilisi — CTF

Aleksi Kistauri
ka_GE
Published in
4 min readMay 18, 2019

--

15 მაის, საქართველოში ჩატარდა პირველი, პროგრამული უზრუნველყოფის უსაფრთხოებაზე ორიენტირებული არაკომერციული ორგანიზაციის — OWASP ის შეხვედრა, სადაც განხილული იყო ისეთი თემები, როგორიცაა : Application Security Verification Standard (ASVS), OWASP top 10 და ა.შ.

ხოლო დღის ბოლოს ჩატარდა CTF, რომელიც 3 სავარჯისოსა და 9 კითხვას მოიცავდა. სავარჯიშოები კი განხილული თემებიდან იყო შედგენილი.

დღეს განვიხილავ ამ სავარჯიშოებს და ვეცდები ყველაფერი გარკვევით ავხსნა. დასპოილერება თუ არ გინდათ, გირჩევთ არ წაიკითხოთ.

დავიწყოთ კიბერ ჰიგიენის საკითხით.

THE.GOV.GE

აღსანიშნავია ის ფაქტი, რომ ეს სავარჯიშო OWASP ის შეხვედრამდეც იყო Cyber-lab.tech — ზე მაგრამ არავის არ ქონდა ამოხსნილი.

ამოცანის პირობა შემდეგია:

მოცემული გვაქვს IAPP.ZIP — ფაილი, რომელშიც მარტივი, flask -ზე დაწერილი საიტია მოცემული.

მისი სტრუქტურა შემდეგნაირია:

ფაილებშიც არაფერია საინტერესო:

ამ მომენტზე დიდხანს ვიყავი გაჭედილი სანამ ჰინთი არ მივიღე, თუ მას Github — ზე მოვძებნით, წავაწყდებით მის რეპოზიტორს.

რეპოზიტორში ერთი შეხევდით არაფერი საინტერესო არ ხდება, იგივეა თითქმის ყველაფერი. კონფიგურაციაზეც არაფერი ნახსენები

ერთადერთი განსხვავება რაც არის, დამატებულია app.zip ფაილი, რომელიც ჩვენთვის საინტერესო უნდა იყოს.

სწორედ აქ ვხვდებით .git ფოლდერს

ლოგებს თუ ჩავხედავთ, აღმოვაჩენთ ჩვენთვის საინტერესო კომიტებს — “Remove database connection information.” და “Add database connection information.

რომლის ნახვაც მარტივად შეგვიძლია:

git log -p -2 81bda1fefbfe08769d98fe41b7d0226e71481a84

vuala ! ვიპოვით კონფიგურაციის ფაილი. პირველ კითხვის პასუხიც აშკარა ხდება - Sensitive data exposure.

შემდეგი სავარჯიშო:

Tr33

ამოცანის პირობა შემდეგია:

nmap — მა და dirb- მა მნიშვნელოვანი არაფერი გვაჩვენა, გადავიდეთ საიტზე

თუ ჩავხედავთ script.js-ს შევამჩნევთ, რომ საიტზე იგზავნება XML ფაილი, რომელიც შეგვიძლია ინექციისთვის გამოვიყენოთ.

სანამ უშუალოდ ინექციაზე გადავალთ განვიხილოთ თუ რა არის თავად XML.

XML ანუ — eXtensible Markup Language

ჩავშალოთ :

eXtensible გულისხმობს იმას, რომ შენ შეგიძლია შექმნა შენი თეგები, აღწერო თუ როგორ გამოჩნდეს ეს თეგი და ა.შ.

Markup Language მა შეიძლება გაგვახსენოს HTML მაგრამ, XML-სგან განსხვავებით html არის უფრო ‘პრეზენტაციის’ ენა რაც იმას გულისხმობს, რომ ის არ გვაწვდის იმის შესახებ მონაცემებს, თუ როგორი სტრუქტურა აქვს დოკუმენტს.

სწორად არასწორი XML გვაძლევს ისეთი შეტევის განხორციელების უფლებას, როგორიცაა XXE.

აღნიშნულ დავალებაშიც სწორედ XXE სისუსტეა, დავტესტოტ XXE-ს მარტივი მაგალითით, ვნახოთ თუ რომელი დისტრიბუტორი აყენია სერვერზე:

ვნახოთ /etc/passwd ფაილი:

როგორც ვხედავთ XXE შეტევა მუშაობს, დაგვრჩა index.php ფაილის შიგთავსის ნახვა.

ერთი შეხედვით იოლია, მაგრამ ჩვენ არ შეგვიძლია მას მივწვდეთ რომელიმე იუზერით შემდეგნაირად:

file:///var/home/vigaca/www/index.php

რადგან ამ იუზერის ფაილებს ვერ ვნახავთ.

ჩვენ გვჭირდება PHP Wrapper ის განთავსება XXE-ში, PHP Wrapper ის საშუალებით შეგვიძლია index.php-ს შიგთავსი გადავიყვანოთ base64 ში და გამოვიტანოთ ეს შედეგი:

<!DOCTYPE replace [<!ENTITY xxe SYSTEM “php://filter/convert.base64-encode/resource=index.php”> ]>

index.php ფაილიც მოვიპოვეთ, დაგვრჩა აუთფუთის base64 იდან დიკოდი. რაც მარტივად შეგვიძლია base64decode.org ის გამოყენებით.

vuala ! გვაქვს ადმინისტრატორის პაროლიც და flag-იც.

შემდეგი სავარჯიშო:

PHEl

ამოცანის პირობა შემდეგია:

მოცემული გვაქვს PHEL.ZIP არქივი, რომლის სტრუქტურაც შემდეგნაირია

index.php ში საინტერესო არაფერი არ ხდება, ხოლო .htaccess იდან ვარკვევთ, რომ იუზერს შეეძლო აეტვირთა PHP ფაილი, როგორც ფოტო. ანუ საქმე გვაქვს Security Misconfiguration — სთან

AddHandler application/x-httpd-php .jpg

ე.ი. შემტევს შეეძლო php shell-ი აეტვირთა როგორც ფოტო, შეგვიძლია მარტივად გავფილტროთ, თუ ფოტო შეიცავს სიტყვა php-ს გამოვიტანოთ შედეგი:

strings *.jpg | grep php *

რის შედეგადაც ნათელი ხდება, რომ ფაილი, 403.jpg შეიცავს PHP Shell-ს, შემდეგ კითხვის პასუხიც გავიგეთ. დაგვჩა პაროლის დეშიფრაცია, რაც მარტივად შეგვიძლია ონლაინ hashkiller.co.uk ის გამოყენებით, ან თუ სურვილი გაქვთ JohnTheRipper -ის გამოყენებაც შეგიძლიათ.

პაროლიც გავიგეთ — Hack3r.

მადლობა პოსტის წაკითხვისთვის ;დ, გავითვალისწინებ ნებისმიერ რჩევას და შენიშვნას.

Follow me, for future posts ❤ .

--

--