JavaScript код дээрх үйлдлүүдийг нуухын тулд үл үзэгдэх Unicode тэмдэгтүүдийг ашиглах

Хоёр чиглэлтэй текстийн дэлгэцийн дарааллыг өөрчилдөг Юникод тэмдэгтүүдийг ашиглахад үндэслэсэн Трояны эх сурвалжийн халдлагын аргын дараа JavaScript кодонд хамаарах далд үйлдлүүдийг нэвтрүүлэх өөр нэг техник хэвлэгджээ. Шинэ арга нь үсэг боловч харагдах агуулгагүй "ㅤ" (код 0x3164, "HANGUL FILLER") юникод тэмдэгтийг ашиглахад үндэслэсэн болно. Энэ тэмдэгтийн хамаарах Юникод категорийг ECMAScript 2015 тодорхойлолтоос хойш JavaScript хувьсагчийн нэрэнд ашиглахыг зөвшөөрсөн бөгөөд энэ нь Notepad++, VS Code зэрэг алдартай код засварлагчдын бусад хувьсагчдаас ялгагдахгүй үл үзэгдэх хувьсагч эсвэл шинэ хувьсагч үүсгэх боломжийг олгодог.

Жишээ болгон Node.js платформын кодыг өгсөн бөгөөд үүнд нэг "ㅤ" тэмдэгтээс бүрдэх хувьсагчийг ашиглан халдагчийн заасан кодыг гүйцэтгэх боломжийг олгодог арын хаалга нуугдсан байдаг: app.get( '/network_health', async (req, res) = > { const { timeout,ㅤ} = req.query; // үнэндээ "const { timeout,ㅤ \u3164}" гэж хэлдэг const checkCommands = [ 'ping -c 1 google. com', 'curl -s http:// example.com/',ㅤ // таслал, араас нь \u3164 ];

Өнгөцхөн харвал гадаад параметрээр зөвхөн завсарлагааны утгыг дамжуулдаг бөгөөд гүйцэтгэх тушаалууд бүхий массив нь хор хөнөөлгүй тогтмол жагсаалтыг агуулдаг. Гэвч үнэн хэрэгтээ завсарлагааны хувьсагчийн дараа \u3164 тэмдэгт код бүхий өөр үл үзэгдэх хувьсагчийн утгыг оноож өгдөг бөгөөд энэ нь мөн гүйцэтгэгдэх командуудын массивт орлуулдаг. Иймд ийм бүтэц байгаа үед халдагчид "https://host:8080/network_health?%E3%85%A4=command" гэх мэт хүсэлтийг илгээж, арын хаалгаа идэвхжүүлж, кодоо ажиллуулж болно.

Өөр нэг жишээ болгон "ǃ" (ALVEOLAR CLICK) тэмдэгтийг өгсөн бөгөөд энэ нь анхаарлын тэмдэг тэмдэглэсэн дүр төрхийг өгөхөд ашиглаж болно. Жишээлбэл, Node.js 14-д ажиллах үед "if(environmentǃ=ENV_PROD){" илэрхийлэл нь ялгааг шалгадаггүй, харин "орчин" хувьсагчийг ENV_PROD болгож тохируулдаг тул үргэлж үнэн байх болно. Юникод төөрөгдүүлсэн тэмдэгтүүдэд "/", "−", "+", "⩵", "❨", "⫽", "꓿", "∗" орно.

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

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