Құм жәшігіндегі сценарийлерден жүйелік пәрмендерді шақыруға мүмкіндік беретін Python жүйесіндегі осалдық

Python 2.7-де пайда болған, 2012 жылы анықталған және Python 3-те әлі түзетілмеген бұрыннан белгілі қатені пайдалануға негізделген Python-да оқшауланған кодты орындау жүйелерін айналып өту әдісі жарияланды. Қате арнайы байланыстырылған жүйені пайдалануға мүмкіндік береді. Python тілінде әлдеқашан босатылған жадқа (Use-After-Free) қоңырауды бастау үшін Python коды. Бастапқыда қате қауіпсіздікке қауіп төндірмейді және өте сирек жағдайларда, әдетте жасанды түрде жасалған, сценарийдің қалыптан тыс тоқтатылуына әкелуі мүмкін деп болжалды.

Kn32 лақап атымен қауіпсіздік зерттеушісі мәселеге қызығушылық танытып, os.system сияқты әдістерге тікелей қатынаусыз кез келген жүйелік пәрменді шақыруға мүмкіндік беретін жұмыс эксплойтын дайындай алды. Эксплуатация таза Python тілінде жүзеге асырылады және сыртқы кітапханаларды импорттаусыз және «code.__new__» өңдегішін орнатпай жұмыс істейді. Ілмектердің ішінен тек “builtin.__id__” пайдаланылады, әдетте тыйым салынбайды. Практикалық жағынан ұсынылған кодты Python кодын орындауға мүмкіндік беретін, бірақ шектейтін әртүрлі қызметтер мен орталарда (мысалы, оқу орталарында, онлайн қабықшаларда, кірістірілген өңдеушілерде және т.б.) оқшаулау механизмдерін айналып өту үшін пайдалануға болады. қол жетімді қоңырауларға және os.system сияқты қоңырау әдістеріне рұқсат бермеңіз.

Ұсынылған код CPython жүйесіндегі осалдықты пайдалану арқылы жұмыс істейтін os.system шақыруының аналогы болып табылады. Эксплуатация x3-86 архитектурасы бар жүйелердегі Python 64-тің барлық нұсқаларымен жұмыс істейді және PIE, RELRO және CET қорғау режимдері қосылған кезде де Ubuntu 22.04 жүйесінде тұрақты жұмысты көрсетеді. Жұмыс Python кодынан орындалатын CPython кодындағы функциялардың бірінің мекенжайы туралы ақпаратты алуға дейін барады. Осы мекенжай негізінде жадтағы CPython негізгі мекенжайы және жадқа жүктелген libc данасында system() функциясының мекенжайы есептеледі. Соңында «/bin/sh» жолына бірінші аргументтің көрсеткішін ауыстыру арқылы белгілі бір жүйелік мекенжайға тікелей көшу басталады.

Құм жәшігіндегі сценарийлерден жүйелік пәрмендерді шақыруға мүмкіндік беретін Python жүйесіндегі осалдық


Ақпарат көзі: opennet.ru

пікір қалдыру