የስርዓት ትዕዛዞችን ከተገለሉ ስክሪፕቶች ለመጥራት የሚያስችል በፓይዘን ውስጥ ተጋላጭነት

በ Python 2.7 ውስጥ የታየ ለረጅም ጊዜ የሚታወቅ ስህተትን በመጠቀም በፓይዘን ውስጥ የተለዩ የኮድ ማስፈጸሚያ ስርዓቶችን ለማለፍ ዘዴ ታትሟል፣ በ2012 ተለይቷል እና በ Python 3 ውስጥ እስካሁን አልተስተካከለም። ስህተቱ በተለየ ሁኔታ የተገናኘ መጠቀም ያስችላል። አስቀድሞ ነፃ የወጣውን ማህደረ ትውስታ (ከነጻ-በኋላ-ነፃ ይጠቀሙ) መዳረሻን ለማስጀመር Python ኮድ። መጀመሪያ ላይ ስህተቱ የደህንነት ስጋት አላመጣም ተብሎ ይገመታል እና በጣም አልፎ አልፎ ብቻ ፣ ብዙውን ጊዜ በአርቴፊሻል መንገድ የተፈጠረው ፣ ወደ ስክሪፕቱ ያልተለመደ መቋረጥ ሊያመራ ይችላል።

በ kn32 ስም የደህንነት ተመራማሪ ለችግሩ ፍላጎት አደረበት እና እንደ os.system ያሉ ዘዴዎችን በቀጥታ ማግኘት ሳያስፈልግ ማንኛውንም የስርዓት ትዕዛዝ ለመጥራት የሚያስችለውን የስራ ብዝበዛ ማዘጋጀት ችሏል። ብዝበዛው በንጹህ ፓይዘን ውስጥ የተተገበረ ሲሆን ውጫዊ ቤተ-መጻሕፍትን ሳያስመጣ እና "ኮድ__ አዲስ__" ተቆጣጣሪውን ሳይጭን ይሠራል. ከመንጠቆቹ ውስጥ "builtin.__id__" ብቻ ጥቅም ላይ ይውላል, እሱም ብዙውን ጊዜ አይከለከልም. በተግባራዊው በኩል ፣ የቀረበው ኮድ በተለያዩ አገልግሎቶች እና አካባቢዎች (ለምሳሌ ፣ በመማሪያ አካባቢዎች ፣ በመስመር ላይ ዛጎሎች ፣ አብሮገነብ ተቆጣጣሪዎች ፣ ወዘተ) ውስጥ ያሉትን የማግለል ዘዴዎችን ለማለፍ ሊያገለግል ይችላል ፣ ይህም የ Python ኮድ አፈፃፀምን ይፈቅዳል ፣ ግን ያሉ ጥሪዎች እና እንደ os.system ያሉ የጥሪ ዘዴዎችን አትፍቀድ።

የቀረበው ኮድ በCPython ውስጥ ያለውን ተጋላጭነት በመጠቀም የሚሰራው የOS.system ጥሪ አናሎግ ነው። ብዝበዛው በሁሉም የ Python 3 ስሪቶች ከ x86-64 አርክቴክቸር ጋር ይሰራል እና በኡቡንቱ 22.04 ላይ የተረጋጋ አሰራርን ያሳያል፣ PIE፣ RELRO እና CET ጥበቃ ሁነታዎች ሲነቁም። ስራው በፒቲን ኮድ ውስጥ ስለ አንዱ ተግባር አድራሻ መረጃን ከ Python ኮድ ለማግኘት ይወርዳል። በዚህ አድራሻ ላይ በመመስረት፣ በማህደረ ትውስታ ውስጥ ያለው የ CPython አድራሻ እና የስርዓቱ () ተግባር በሊቢክ ምሳሌ ውስጥ በማህደረ ትውስታ ውስጥ በተጫነው አድራሻ ይሰላሉ። በመጨረሻው ላይ ወደ አንድ የተወሰነ የስርዓት አድራሻ ቀጥተኛ ሽግግር የሚጀምረው የመጀመሪያውን ክርክር ጠቋሚ ወደ መስመር "/ ቢን / sh" በመተካት ነው.

የስርዓት ትዕዛዞችን ከተገለሉ ስክሪፕቶች ለመጥራት የሚያስችል በፓይዘን ውስጥ ተጋላጭነት


ምንጭ: opennet.ru

አስተያየት ያክሉ