paint-brush
ፍፁም ትርጉም የለሽ መሆኑን ለማረጋገጥ አንድ ጴንጤ የድረ-ገጽ ኮድ ለየ@vognik
821 ንባቦች
821 ንባቦች

ፍፁም ትርጉም የለሽ መሆኑን ለማረጋገጥ አንድ ጴንጤ የድረ-ገጽ ኮድ ለየ

Maksim Rogov16m2024/12/06
Read on Terminal Reader

በጣም ረጅም፤ ማንበብ

ይህ ጽሑፍ የኢንጂነር የማይታወቅ ኮድ እንዴት እንደሚገለበጥ እና የራስዎን ቅጥያ ለ Burp Suite እንዴት እንደሚጽፉ ያብራራል።
featured image - ፍፁም ትርጉም የለሽ መሆኑን ለማረጋገጥ አንድ ጴንጤ የድረ-ገጽ ኮድ ለየ
Maksim Rogov HackerNoon profile picture
0-item
1-item
2-item

በሌላ ቀን በአገልጋዩ በኩል የጥያቄዎችን ፊርማ የሚያረጋግጥ አገልግሎት አገኘሁ። ለእያንዳንዱ ጥያቄ በተጠቃሚው ከአሳሹ የተላከውን የተወሰነ እሴት የሚፈትሽ ትንሽ የመስመር ላይ ካሲኖ ነበር። በካዚኖው ውስጥ ምን እየሰሩ ነበር ምንም ይሁን ምን: ውርርድ ማድረግ ወይም ተቀማጭ ማድረግ, በእያንዳንዱ ጥያቄ ላይ ተጨማሪ መለኪያ "ምልክት" እሴት ነበር, የዘፈቀደ የሚመስሉ ገጸ-ባህሪያትን ያካትታል. ያለሱ ጥያቄ ለመላክ የማይቻል ነበር - ጣቢያው ስህተት መለሰ, እና የራሴን ብጁ ጥያቄዎችን እንዳልልክ ከልክሎኛል.


ለዚህ እሴት ባይሆን ኖሮ በዛን ጊዜ ጣቢያውን ለቅቄ ወጣሁ እና ዳግመኛ አላስበውም ነበር። ነገር ግን፣ ከሁሉም ዕድሎች አንጻር፣ ያስደሰተኝ የፈጣን ትርፍ ስሜት ሳይሆን ካሲኖው በሞኝ ማረጋገጫው እየሰጠኝ ያለው የጥናት ፍላጎት እና ፈተና ነው።


ገንቢዎቹ ይህንን ግቤት ሲጨምሩ ያሰቡት አላማ ምንም ይሁን ምን፣ ጊዜ ማባከን ይመስለኛል። ከሁሉም በላይ, ፊርማው ራሱ በደንበኛው በኩል ይፈጠራል, እና ማንኛውም የደንበኛ-ጎን እርምጃ ለተቃራኒ-ምህንድስና ሊጋለጥ ይችላል.


በዚህ ጽሑፍ ውስጥ እንዴት እንደ ቻልኩ እወያይበታለሁ-

  1. የጥያቄውን ፊርማ ማመንጨት ስልተ ቀመር ይፍቱ
  2. ሁሉንም ቆሻሻ ስራ በራስ ሰር ለሚሰራ ለ Burp Suite የራሴን ቅጥያ ጻፍ


ደህንነታቸው የተጠበቁ ፕሮጀክቶችን ለመስራት ፍላጎት ያለው ገንቢ ከሆኑ ይህ ጽሑፍ ውድ ጊዜዎን እንዴት እንደሚቆጥቡ እና የማይጠቅሙ መፍትሄዎችን ውድቅ እንደሚያደርግ ያስተምርዎታል። እና ፔንቴስተር ከሆኑ, ይህን ጽሑፍ ካነበቡ በኋላ, ለማረም አንዳንድ ጠቃሚ ትምህርቶችን መማር እና ለስዊስ የደህንነት ቢላዋ የራስዎን ቅጥያዎች ፕሮግራም ማዘጋጀት ይችላሉ. ባጭሩ ሁሉም ሰው በጎ ጎን ነው።


በመጨረሻ ወደ ነጥቡ እንግባ።

የ Ariadne ክር፡ የፊርማ ስልተ ቀመርን መፍታት


ስለዚህ አገልግሎቱ የክላሲክ ጨዋታዎች ስብስብ ያለው የመስመር ላይ ካሲኖ ነው።

  • ፕሊንኮ - ተጫዋቾቹ ኳሱን በፒግ ከተሞላው ቦርድ አናት ላይ የሚጥሉበት፣ በማሸነፍ ወይም ዋጋ በማጣት ወደ ማስገቢያ ሲወርድ የሚመለከቱበት ጨዋታ።
  • ቲኬቶች - ተጫዋቾች የሎተሪ ቲኬቶችን በቁጥር ስብስብ ይገዛሉ እና ቁጥራቸው በዘፈቀደ ከተሳሉት ቁጥሮች ጋር የሚመሳሰል ከሆነ ያሸንፋሉ።
  • LiveDealers - የመስመር ላይ የቁማር ጨዋታዎች በእውነተኛ አዘዋዋሪዎች በእውነተኛ ጊዜ የሚካሄዱ፣ ይህም ተጫዋቾች በቪዲዮ ዥረት እንዲመለከቱ እና እንዲገናኙ ያስችላቸዋል።
  • ድርብ - ቀጣዩ ካርድ ከአሁኑ ካርድ የበለጠ ወይም ያነሰ መሆን አለመሆኑን ተጫዋቾች የሚወራረዱበት ቀላል ጨዋታ።
  • ብልሽት - ተጫዋቾቹ ተጫዋቾቹ ተወራርደው ይመለከታሉ፣ አባዢው ከመበላሸቱ በፊት ገንዘብ ለማውጣት በማለም
  • ንቩቲ - ተጫዋቾች ቁጥሩ ከተወሰነ ጊዜ በታች ወይም ከዚያ በላይ ይወድቃል በሚለው ላይ ይጫወታሉ።
  • የቁማር ጨዋታዎች - ተጫዋቾቹ በምልክቶች የሚሽከረከሩበት እና የተወሰኑ ጥምረት በስክሪኑ ላይ ከታዩ የሚያሸንፉበት የካሲኖ ጨዋታዎች።


ከአገልጋዩ ጋር ያለው ግንኙነት ሙሉ በሙሉ በኤችቲቲፒ ጥያቄዎች ላይ ይሰራል። የመረጡት ጨዋታ ምንም ይሁን ምን፣ እያንዳንዱ የPOST የአገልጋዩ ጥያቄ መፈረም አለበት - ይህ ካልሆነ አገልጋዩ ስህተት ይፈጥራል። በእያንዳንዳቸው ጨዋታዎች ላይ የመፈረም ጥያቄዎች በተመሳሳይ መርህ ላይ ይሰራሉ - አንድ አይነት ስራ ሁለት ጊዜ እንዳላደርግ ለመመርመር አንድ ጨዋታ ብቻ እወስዳለሁ.


እና ድራጎን እስር ቤት የሚባል ጨዋታ ልወስድ ነው።


የዚህ ጨዋታ ፍሬ ነገር በቤተ መንግሥቱ ውስጥ በሮች በ ባላባት ሚና ውስጥ በቅደም ተከተል መምረጥ ነው። ከእያንዳንዱ በር በስተጀርባ ውድ ሀብት ወይም ዘንዶ ይደብቃል። ተጫዋቹ ከበር ጀርባ ዘንዶ ካጋጠመው ጨዋታው ይቆማል እና ገንዘብ ያጣል። ሀብቱ ከተገኘ - የመጀመርያው ውርርድ መጠን ይጨምራል እና ተጫዋቹ ድሉን እስኪወስድ ድረስ፣ እስኪሸነፍ ወይም ሁሉንም ደረጃዎች እስኪያልፍ ድረስ ጨዋታው ይቀጥላል።


ጨዋታውን ከመጀመሩ በፊት ተጫዋቹ የመጫወቻውን መጠን እና የድራጎኖች ብዛት መግለጽ አለበት።


ቁጥር 10ን እንደ ድምር አስገባለሁ, አንድ ድራጎን ትቼ የሚላከውን ጥያቄ ተመልከት. ይህ በማንኛውም አሳሽ ውስጥ ካሉ የገንቢ መሳሪያዎች ሊከናወን ይችላል ፣ በ Chromium ውስጥ የአውታረ መረብ ትር ለዚህ ተጠያቂ ነው።


እዚህ በተጨማሪ ጥያቄው ወደ /srv/api/v1/dungeon መጨረሻ ነጥብ እንደተላከ ማየት ይችላሉ።


የPayload ትሩ የጥያቄውን አካል ራሱ በJSON ቅርጸት ያሳያል


የመጀመሪያዎቹ ሁለት መለኪያዎች ግልጽ ናቸው - ከ UI መረጥኳቸው; የመጨረሻው፣ እርስዎ እንደሚገምቱት፣ timestamp ወይም ከጃንዋሪ 1, 1970 ጀምሮ ያለፈው ጊዜ ነው፣ በተለመደው የጃቫስክሪፕት ትክክለኛነት ሚሊሰከንዶች።


ያ አንድ ያልተፈታ ግቤት እና, - እና ያ ፊርማው ራሱ ነው. እንዴት እንደሚፈጠር ለመረዳት ወደ ምንጮች ትር እሄዳለሁ - ይህ ቦታ አሳሹ የጫነውን አገልግሎት ሁሉንም ሀብቶች ይዟል. ለሁሉም የጣቢያው ደንበኛ ክፍል አመክንዮ ተጠያቂ የሆነውን ጃቫስክሪፕትን ጨምሮ።



ይህንን ኮድ ለመረዳት በጣም ቀላል አይደለም - የተቀነሰ ነው። ሁሉንም ግልጽ ለማድረግ መሞከር ይችላሉ - ግን ብዙ ጊዜ የሚወስድ ረጅም እና አሰልቺ ሂደት ነው (የምንጩን ኮድ መጠን ግምት ውስጥ በማስገባት) እኔ ይህን ለማድረግ ዝግጁ አይደለሁም.


ሁለተኛው እና ቀላሉ አማራጭ የኮዱን አስፈላጊ ክፍል በቁልፍ ቃል በቀላሉ ማግኘት እና አራሚውን መጠቀም ነው። ያ ነው የማደርገው፣ ምክንያቱም አጠቃላይ ጣቢያው እንዴት እንደሚሰራ ማወቅ ስለማልፈልግ፣ ፊርማው እንዴት እንደሚፈጠር ማወቅ ብቻ ነው ያለብኝ።


ስለዚህ ኮዱን የማመንጨት ሃላፊነት ያለበትን የኮዱ ክፍል ለማግኘት የ CTRL+SHIFT+F የቁልፍ ጥምርን በመጠቀም በሁሉም ምንጮች ፍለጋ መክፈት እና ለሚላከው sign ቁልፍ ዋጋ መስጠትን መፈለግ ይችላሉ። በጥያቄው ውስጥ.


እንደ እድል ሆኖ, አንድ ግጥሚያ ብቻ ነው, ይህም ማለት በትክክለኛው መንገድ ላይ ነኝ ማለት ነው.


ግጥሚያ ላይ ጠቅ ካደረጉ፣ ፊርማው ራሱ ወደሚገኝበት ኮድ ክፍል መድረስ ይችላሉ። ኮዱ እንደበፊቱ ተሸፍኗል፣ስለዚህ አሁንም ለማንበብ አስቸጋሪ ነው።


ከኮዱ መስመር ተቃራኒ ነጥብ አስቀምጫለሁ ፣ ገጹን አድስ እና በ “ድራጎኖች” ውስጥ አዲስ ጨረታ አወጣሁ - አሁን ስክሪፕቱ በትክክል ፊርማ በሚፈጠርበት ጊዜ ሥራውን አቁሟል ፣ እና የአንዳንድ ተለዋዋጮችን ሁኔታ ማየት ይችላሉ።


የተጠራው ተግባር አንድ ፊደል፣ ተለዋዋጮችም ያካትታል - ግን ምንም ችግር የለም። ወደ ኮንሶል መሄድ እና የእያንዳንዳቸውን እሴቶች ማሳየት ይችላሉ. ሁኔታው ይበልጥ ግልጽ መሆን ይጀምራል.


የመጀመሪያው ዋጋ እኔ የሚወጣው የተለዋዋጭ H እሴት ነው, እሱም ተግባር ነው. ከኮንሶሉ ላይ ጠቅ ማድረግ እና በኮዱ ውስጥ ወደተገለጸበት ቦታ መሄድ ይችላሉ, ከዚህ በታች ያለው ዝርዝር ነው.


ይህ ፍንጭ ያየሁበት በጣም ትልቅ የኮድ ቅንጣቢ ነው - SHA256። ይህ የሃሺንግ ስልተ ቀመር ነው። እንዲሁም ሁለት መለኪያዎች ወደ ተግባር ሲተላለፉ ማየት ይችላሉ፣ ይህም SHA256 ብቻ ሳይሆን HMAC SHA256 ከሚስጥር ጋር ሊሆን እንደሚችል ይጠቁማል።


ምናልባት እዚህ የሚተላለፉት ተለዋዋጮች (ወደ መሥሪያው እንዲሁ ይወጣሉ)

  • string 10;1;6693a87bbd94061678473bfb;1732817300080;gRdVWfmU-YR_RCuSkWFLCUTly_GZfDx3KEM8 - በቀጥታ የኤችኤምኤሲ SHA256 አሠራር የሚተገበርበት እሴት።
  • 31754cff-be0f-446f-9067-4cd827ba8707 ሚስጥራዊ ሆኖ የሚሰራ የማይንቀሳቀስ ቋሚ ነው


ይህንን ለማረጋገጥ, ተግባሩን እደውላለሁ እና የታሰበውን ፊርማ አገኛለሁ


አሁን HMAC SHA256 ወደሚቆጥረው ጣቢያ ሄጄ እሴቶችን አሳልፋለሁ።


እና ጨረታውን ሳቀርብ በጥያቄው ውስጥ ከተላከው ጋር በማወዳደር።


ውጤቱ ተመሳሳይ ነው ፣ ይህ ማለት የእኔ ግምቶች ትክክል ነበሩ ማለት ነው - በእውነቱ HMAC SHA256 ን ከሚለዋወጥ ምስጢር ጋር ይጠቀማል ፣ ይህም በልዩ ሁኔታ የተሠራ ሕብረቁምፊ ከታሪፍ ፣ ከድራጎኖች ብዛት እና ከሌሎች መመዘኛዎች ጋር ተላልፏል ፣ ይህም ስለበለጠ እነግርዎታለሁ። በጽሁፉ ሂደት ውስጥ.


አልጎሪዝም በጣም ቀላል እና ቀላል ነው። ግን አሁንም በቂ አይደለም - በፔንታስት ውስጥ በስራ ፕሮጀክት ውስጥ ያለ ግብ ከሆነ ተጋላጭነቶችን ለማግኘት ፣ Burp Suiteን ተጠቅሜ የራሴን ጥያቄዎች እንዴት እንደምልክ መማር አለብኝ።


እና ይሄ በእርግጠኝነት አውቶሜሽን ያስፈልገዋል፣ እሱም አሁን የማወራው ነው።

የራስዎን ቅጥያ ለመጻፍ እንኳን አስፈላጊ ነው?

የፊርማ ማመንጨት ስልተ ቀመር አውጥቻለሁ። ጥያቄዎችን በሚልኩበት ጊዜ ሁሉንም አላስፈላጊ ነገሮችን ለማስወገድ በራስ-ሰር እንዴት እንደሚያመነጩት ለመማር ጊዜው አሁን ነው።


ZAP፣ Caido፣ Burp Suite እና ሌሎች pentest መሳሪያዎችን በመጠቀም ጥያቄዎችን መላክ ትችላለህ። በጣም ለተጠቃሚ ምቹ እና ከሞላ ጎደል ፍፁም ሆኖ ስላገኘሁት ይህ መጣጥፍ በ Burp Suite ላይ ያተኩራል። የማህበረሰብ እትም ከኦፊሴላዊው ጣቢያ በነፃ ማውረድ ይቻላል, ለሁሉም ሙከራዎች በቂ ነው.


ከሳጥን ውስጥ Burp Suite እንዴት HMAC SHA256 ማመንጨት እንዳለበት አያውቅም። ስለዚህ፣ ይህንን ለማድረግ የ Burp Suiteን ተግባር የሚያሟሉ ቅጥያዎችን መጠቀም ይችላሉ።


ቅጥያዎች በሁለቱም በማህበረሰብ አባላት እና በራሳቸው ገንቢዎች የተፈጠሩ ናቸው። አብሮ በተሰራው ነፃ የBApp ማከማቻ፣ Github ወይም ሌላ የምንጭ ኮድ ማከማቻዎች በኩል ይሰራጫሉ።


ሁለት መንገዶችን መውሰድ ይችላሉ-

  1. ከመደርደሪያ ውጭ የሆነ ቅጥያ ከBApp ማከማቻ ይጠቀሙ
  2. የራስዎን ቅጥያ ይጻፉ


እያንዳንዳቸው እነዚህ መንገዶች ጥቅሞቹ እና ጉዳቶች አሏቸው, ሁለቱንም አሳይሻለሁ.

ከሃክቨርተር ጋር መተዋወቅ

ዝግጁ የሆነ ቅጥያ ያለው ዘዴ በጣም ቀላሉ ነው. ከባፕ ማከማቻ ማውረድ እና ባህሪያቱን ተጠቅሞ sign መለኪያ እሴት ማመንጨት ነው።


የተጠቀምኩት ቅጥያ ሃክቨርተር ይባላል። በተለዋዋጭ ኢንኮድ/መቀየስ፣ ኢንክሪፕት/ዲክሪፕት ማድረግ፣ የተለያዩ ዳታዎችን ሃሽ ማድረግ እንድትችል እንደ አገባብ ኤክስኤምኤልን እንድትጠቀም ይፈቅድልሃል።


እሱን ለመጫን, Burp ያስፈልገዋል:

  1. ወደ የቅጥያዎች ትር ይሂዱ

  2. በፍለጋው ውስጥ Hackvertor ይተይቡ

  3. በዝርዝሩ ውስጥ የተገኘውን ቅጥያ ይምረጡ

  4. ጫን የሚለውን ጠቅ ያድርጉ



አንዴ ከተጫነ, ተመሳሳይ ስም ያለው ትር በ Burp ውስጥ ይታያል. ወደ እሱ መሄድ እና የቅጥያውን ችሎታዎች እና የሚገኙትን መለያዎች ብዛት መገምገም ይችላሉ, እያንዳንዳቸው እርስ በርስ ሊጣመሩ ይችላሉ.


ለምሳሌ አንድን ነገር በሲሜትሪክ AES ማመስጠር ትችላለህ መለያ <@aes_encrypt('supersecret12356','AES/ECB/PKCS5PADDING')>MySuperSecretText<@/aes_encrypt>


ምስጢሩ እና አልጎሪዝም በቅንፍ ውስጥ ናቸው ፣ እና በመለያዎቹ መካከል ጽሑፉ ራሱ መመስጠር አለበት። ማንኛቸውም መለያዎች በRepeater, Intruder እና ሌሎች አብሮ በተሰራው Burp Suite መሳሪያዎች ውስጥ መጠቀም ይቻላል.



በሃክቨርተር ኤክስቴንሽን እገዛ በመለያ ደረጃ ላይ ፊርማ እንዴት መፈጠር እንዳለበት መግለጽ ይችላሉ። በእውነተኛ ጥያቄ ምሳሌ ላይ አደርጋለሁ።

በውጊያ ውስጥ Hackvertor መጠቀም

ስለዚህ፣ በድራጎን እስር ቤት ውስጥ ውርርድ እሰራለሁ፣ በዚህ ጽሁፍ መጀመሪያ ላይ የተጠለፍኩትን ተመሳሳይ ጥያቄ ከኢንተርሴፕ ፕሮክሲ ጋር ጣልኩት፣ እና አርትዕ ለማድረግ እና እንደገና ለማስገባት ወደ Repeater አስጨንቀው።


አሁን በ ae04afe621864f569022347f1d1adcaa3f11bebec2116d49c4539ae1d2c825fc እሴት ምትክ ኤችኤምኤሲ SHA256 በ Hackvertor የተሰጡ መለያዎችን በመጠቀም ስልተ ቀመሩን መተካት አለብን።


Формула генерации у меня получилась следующая <@hmac_sha256('31754cff-be0f-446f-9067-4cd827ba8707')>10;1;6693a87bbd94061678473bfb;<@timestamp/>000;MDWpmNV9-j8tKbk-evbVLtwMsMjKwQy5YEs4<@/hmac_sha256> .


ሁሉንም መለኪያዎች ግምት ውስጥ ያስገቡ-

  • 10 - ውርርድ መጠን
  • 1 - የድራጎኖች ብዛት
  • 6693a87bbd94061678473bfb - ልዩ የተጠቃሚ መታወቂያ ከMongoDB ዳታቤዝ፣ ከአሳሹ ላይ ፊርማውን በመተንተን ላይ ሳየው አየሁት፣ ግን ያኔ አልጻፍኩም። በ Burp Suite ውስጥ ያሉትን የጥያቄዎች ይዘት በመፈለግ ላገኘው ችያለሁ፣ ከ /srv/api/v1/profile/me የመጨረሻ ነጥብ ጥያቄ ተመልሶ ይመጣል።


  • <@timestamp/>000 - የጊዜ ማህተም ማመንጨት፣ የመጨረሻዎቹ ሶስት ዜሮዎች ጊዜውን ወደ ሚሊሰከንዶች ያጠራዋል
  • MDWpmNV9-j8tKbk-evbVLtwMsMjKwQy5YEs4 - CSRF ማስመሰያ፣ ከ /srv/api/v1/csrf መጨረሻ ነጥብ የተመለሰ እና በእያንዳንዱ ጥያቄ የተተካ፣ በ X-Xsrf-Token ራስጌ።

  • <@hmac_sha256('31754cff-be0f-446f-9067-4cd827ba8707')> እና <@/hmac_sha256> - ከተተካው እሴት HMAC SHA256 ለማመንጨት መለያዎችን በመክፈት እና በመዝጊያ ሚስጥራዊነቱ ቋሚ ሆኖ 31754cff-be0f-446f-9067-4cd827ba8707


ትኩረት መስጠት አስፈላጊ ነው: መለኪያዎች በ በኩል እርስ በርስ መያያዝ አለባቸው ; በጥብቅ ቅደም ተከተል ፣ - አለበለዚያ ፊርማው በስህተት ይፈጠራል - ልክ በዚህ ቅጽበታዊ ገጽ እይታ ላይ መጠኑን እና የድራጎኖችን ብዛት ቀይሬያለሁ።



ይህ ሁሉ አስማት የሚዋሽበት ነው።


አሁን ትክክለኛ ጥያቄ አቀርባለሁ ፣ መለኪያዎችን በትክክለኛው ቅደም ተከተል የገለጽኩበት ፣ እና ሁሉም ነገር የተሳካ እንደነበረ እና ጨዋታው እንደጀመረ መረጃ አገኛለሁ - ይህ ማለት Hackvertor ከቀመር ይልቅ ፊርማ ፈጠረ ፣ በጥያቄው ውስጥ ተተካ እና ሁሉም ነገር ይሰራል ማለት ነው ። .



ይሁን እንጂ, ይህ ዘዴ ከፍተኛ ጉዳት አለው - የእጅ ሥራን ሙሉ በሙሉ ማስወገድ አይችሉም. በJSON ውስጥ የድራጎኖችን መጠን ወይም ቁጥር በቀየሩ ቁጥር፣ እንዲዛመዱ ለማድረግ በራሱ በፊርማው ውስጥ መቀየር አለብዎት።


እንዲሁም አዲስ ጥያቄ ከፕሮክሲ ታብ ወደ ኢንትሪደር ወይም ተደጋጋሚ ከላኩ ፎርሙላውን እንደገና መፃፍ አለቦት ይህም ለተለያዩ የፈተና ጉዳዮች ብዙ ትሮች ሲፈልጉ በጣም በጣም የማይመች ነው።


ይህ ቀመር ሌሎች መለኪያዎች ጥቅም ላይ በሚውሉባቸው ሌሎች መጠይቆች ላይም አይሳካም።


ስለዚህ እነዚህን ጉዳቶች ለማሸነፍ የራሴን ቅጥያ ለመጻፍ ወሰንኩ.

በቅጥያዎ ሁሉንም የ Burp አስማት ያግኙ

የመጀመሪያ ቅንብሮች

በJava እና Python ውስጥ ለ Burp Suite ቅጥያዎችን መጻፍ ይችላሉ። ሁለተኛውን የፕሮግራም አወጣጥ ቋንቋ ቀላል እና የበለጠ ምስላዊ ስለሆነ እጠቀማለሁ። ነገር ግን እራስዎን አስቀድመው ማዘጋጀት አለብዎት: በመጀመሪያ Jython Standalone ን ከኦፊሴላዊው ድር ጣቢያ ማውረድ ያስፈልግዎታል, እና በ Burp Suite ቅንብሮች ውስጥ ወደ ወረደው ፋይል የሚወስደውን መንገድ.



ከዚያ በኋላ, ከምንጩ ኮድ እራሱ እና ቅጥያው *.py ጋር ፋይል መፍጠር ያስፈልግዎታል.


መሰረታዊውን አመክንዮ የሚገልጽ ወረቀት አለኝ፣ ይዘቱ እነሆ፡-


ሁሉም ነገር ቀላል እና ቀላል ነው-

  • getActionName - ይህ ዘዴ በቅጥያው የሚደረገውን የእርምጃውን ስም ይመልሳል። ቅጥያው ራሱ በማናቸውም ጥያቄዎች ላይ በተለዋዋጭ ሊተገበር የሚችል የክፍለ ጊዜ አያያዝ ህግን ይጨምራል፣ ነገር ግን ከዚያ በኋላ ላይ ተጨማሪ። ይህ ስም ከቅጥያው ስም የተለየ ሊሆን እንደሚችል እና ከበይነገጽ ሊመረጥ እንደሚችል ማወቅ አስፈላጊ ነው።
  • performAction - በተመረጡት ጥያቄዎች ላይ የሚተገበረው የደንቡ ሎጂክ ራሱ እዚህ ይጻፋል


ሁለቱም ዘዴዎች በ ISessionHandlingAction በይነገጽ መሰረት ይታወቃሉ።


አሁን ወደ IBurpExtender በይነገጽ። ብቸኛው አስፈላጊ ዘዴን ያውጃል registerExtenderCallbacks , ይህም ቅጥያውን ከተጫነ በኋላ ወዲያውኑ ይፈጸማል, እና ሙሉ በሙሉ እንዲሰራ ያስፈልጋል.


መሰረታዊ ውቅር የሚከናወነው እዚህ ነው-

  • callbacks.setExtensionName(EXTENSION_NAME) - የአሁኑን ቅጥያ ክፍለ ጊዜዎችን ለማስተናገድ እንደ እርምጃ ይመዘግባል
  • sys.stdout = callbacks.getStdout() - መደበኛውን ውፅዓት (stdout) ወደ Burp Suite ውፅዓት መስኮት (የ"ቅጥያዎች" ፓነል) ያዛውራል።
  • self.stderr = PrintWriter(callbacks.getStdout(), True) - ስህተቶችን ለማውጣት ዥረት ይፈጥራል
  • self.stdout.println(EXTENSION_NAME) - የቅጥያውን ስም በ Burp Suite ያትማል።
  • self.callbacks = callbacks - የመመለሻ ጥሪዎችን እንደ ራስ ባህሪ ያስቀምጣቸዋል. ይህ በኋላ ላይ የ Burp Suite API በሌሎች የኤክስቴንሽን ኮድ ክፍሎች ለመጠቀም ያስፈልጋል።
  • self.helpers = callbacks.getHelpers() - እንዲሁም ቅጥያው ሲሰራ የሚያስፈልጉትን ጠቃሚ ዘዴዎችን ያገኛል


ቅድመ ዝግጅት ሲደረግ፣ ያ ነው። አሁን ቅጥያውን መጫን እና ሙሉ በሙሉ እንደሚሰራ ማረጋገጥ ይችላሉ. ይህንን ለማድረግ ወደ ቅጥያዎች ትር ይሂዱ እና አክል የሚለውን ጠቅ ያድርጉ.

በሚታየው መስኮት ውስጥ ይግለጹ

  • የኤክስቴንሽን አይነት - Python ወይም ቅጥያው የተጻፈበት የፕሮግራም ቋንቋ
  • የኤክስቴንሽን ፋይል - ወደ ቅጥያው ፋይል ራሱ የሚወስደው መንገድ።


እና ቀጣይ የሚለውን ጠቅ ያድርጉ.


የምንጭ ኮድ ፋይል በትክክል ከተቀረጸ ምንም ስህተቶች መከሰት የለባቸውም እና የውጤት ትር የቅጥያውን ስም ያሳያል። ይህ ማለት ሁሉም ነገር በትክክል እየሰራ ነው.

የብዕር ፈተና

ቅጥያው ይጫናል እና ይሰራል - ነገር ግን የተጫነው ምንም አይነት አመክንዮ የሌለበት መጠቅለያ ነበር, አሁን ጥያቄውን ለመፈረም ኮዱ እፈልጋለሁ. አስቀድሜ ጽፌዋለሁ እና ከታች ባለው ቅጽበታዊ ገጽ እይታ ላይ ይታያል.


አጠቃላይ ቅጥያው የሚሰራበት መንገድ ጥያቄው ወደ አገልጋዩ ከመላኩ በፊት በኔ ቅጥያ ይሻሻላል።


በመጀመሪያ ማራዘሚያው የተጠለፈውን ጥያቄ እወስዳለሁ, እና መጠኑን እና የድራጎኖችን ቁጥር, ከአካሉ አገኛለሁ

 json_body = json.loads(message_body) amount_currency = json_body["amountCurrency"] dragons = json_body["dragons"]


በመቀጠል፣ የአሁኑን የጊዜ ማህተም አንብቤ የCSRF ቶከን ከተዛማጅ ራስጌ አገኛለሁ።

 currentTime = str(time.time()).split('.')[0]+'100' xcsrf_token = None for header in headers: if header.startswith("X-Xsrf-Token"): xcsrf_token = header.split(":")[1].strip()


በመቀጠል፣ ጥያቄው ራሱ HMAC SHA256 በመጠቀም ተፈርሟል

 hmac_sign = hmac_sha256(key, message=";".join([str(amount_currency), str(dragons), user_id, currentTime, xcsrf_token]))


ተግባሩ ራሱ እና ምስጢሩን የሚያመለክቱ ቋሚዎች እና የተጠቃሚ መታወቂያ ከላይ አስቀድሞ ታውጇል።

 def hmac_sha256(key, message): return hmac.new( key.encode("utf-8"), message.encode("utf-8"), hashlib.sha256 ).hexdigest() key = "434528cb-662f-484d-bda9-1f080b861392" user_id = "zex2q6cyc4ba3gvkyex5f80m"


ከዚያ እሴቶቹ ወደ ጠያቂው አካል ይፃፉ እና ወደ JSON ይቀየራሉ

 json_body["sign"] = hmac_sign json_body["t"] = currentTime message_body = json.dumps(json_body)


የመጨረሻው እርምጃ የተፈረመ እና የተሻሻለ ጥያቄ ማመንጨት እና ወደ እሱ መላክ ነው።

 httpRequest = self.helpers.buildHttpMessage(get_final_headers, message_body) baseRequestResponse.setRequest(httpRequest)


ያ ብቻ ነው፣ የምንጭ ኮድ ተጽፏል። አሁን ቅጥያውን በ Burp Suite ውስጥ እንደገና መጫን ይችላሉ (ከእያንዳንዱ ስክሪፕት ማሻሻያ በኋላ መከናወን አለበት) እና ሁሉም ነገር መስራቱን ያረጋግጡ።

አዲሱን ህግ በተግባር መሞከር

ነገር ግን መጀመሪያ ጥያቄዎችን ለማስኬድ አዲስ ህግ ማከል ያስፈልግዎታል። ይህንን ለማድረግ ወደ ቅንጅቶች, ወደ ክፍለ-ጊዜዎች ክፍል ይሂዱ. ጥያቄዎችን በሚልኩበት ጊዜ የሚቀሰቀሱትን ሁሉንም የተለያዩ ህጎች እዚህ ያገኛሉ።


በተወሰኑ የጥያቄ ዓይነቶች ላይ የሚቀሰቅስ ቅጥያ ለመጨመር አክል የሚለውን ጠቅ ያድርጉ።


በሚታየው መስኮት ውስጥ ሁሉንም ነገር እንዳለ እተወዋለሁ እና በ Rule ድርጊቶች ውስጥ አክል የሚለውን ምረጥ



ተቆልቋይ ዝርዝር ይታያል. በውስጡ፣ Burp ቅጥያ ይጠይቁ የሚለውን ይምረጡ።


እና ጥያቄዎችን በሚልኩበት ጊዜ የሚጠራውን ቅጥያ ይግለጹ። አንድ አለኝ፣ እና እሱ Burp Extension ነው።

ቅጥያውን ከመረጥኩ በኋላ እሺን ጠቅ አደርጋለሁ። እና ወደ ወሰንኩበት ትር እሄዳለሁ፡

  • የመሳሪያዎች ወሰን - ተደጋጋሚ (በተደጋጋሚ ጥያቄዎችን በምልክበት ጊዜ ቅጥያው መቀስቀስ አለበት)

  • የዩአርኤል ወሰን - ሁሉንም ዩአርኤሎች ያካትቱ (በምልክላቸው ሁሉም ጥያቄዎች ላይ እንዲሰራ)።


ከታች ባለው ቅጽበታዊ ገጽ እይታ ውስጥ እንደ መስራት አለበት.


እሺን ጠቅ ካደረጉ በኋላ, የኤክስቴንሽን ደንቡ በአጠቃላይ ዝርዝር ውስጥ ታየ.


በመጨረሻም ሁሉንም ነገር በተግባር መሞከር ይችላሉ! አሁን አንዳንድ መጠይቅን መቀየር እና ፊርማው እንዴት በተለዋዋጭ እንደሚዘምን ማየት ይችላሉ። እና ምንም እንኳን ጥያቄው ባይሳካም, እኔ አሉታዊ ተመን ስለመረጥኩ ነው, በፊርማው ላይ የሆነ ችግር ስላለ አይደለም (ገንዘብ ማባከን አልፈልግም 😀). ቅጥያው ራሱ ይሠራል እና ፊርማው በትክክል ተፈጥሯል.


ወደ ፍጹምነት ማምጣት

ሁሉም ነገር ጥሩ ነው, ግን ሶስት ችግሮች አሉ.

  1. የCSRF ማስመሰያው ከራስጌው ተወስዷል። በአጠቃላይ ሊጣል የሚችል መሆን አለበት, ግን ምናልባት እዚህ የህይወት ዘመን አለው (ወይም አይደለም, የተሳሳተ ነው). ለማንኛውም፣ አዲስ ለማግኘት እና ለማዘመን ራሱን የተለየ ጥያቄ ማቅረብ የበለጠ ትክክል ነው። 2- አስቀድሞ የተወሰነ የተጠቃሚ መታወቂያ ጥቅም ላይ ይውላል። በዚህ አገልግሎት ላይ IDORን ማየት ከፈለግኩ፣ መታወቂያው ሃርድ ኮድ የተደረገ ስለሆነ የቀድሞ ስክሪፕቴ ለሌላ ተጠቃሚ ዋጋ የለውም።
  2. የተለያዩ መጠይቆች የተለያዩ መለኪያዎች ሊኖራቸው ይችላል። እና ለስክሪፕቱ መጀመሪያ ላይ የተገለጸው እቅድ የሚሰራው ለ Dungeon Dragons ብቻ ነው፣ እና ሌላም አይሆንም። እና ማንኛውንም ጥያቄ ማረም እና መላክ መቻል እፈልጋለሁ።


ይህንን ለመፍታት ሁለት ተጨማሪ ጥያቄዎችን ማከል አለብን, ይህም አብሮ በተሰራው Burp Suite ቤተ-መጽሐፍት, ከማንኛውም የሶስተኛ ወገን ይልቅ, requests ይልቅ.


ይህንን ለማድረግ፣ መጠይቆቹን የበለጠ ምቹ ለማድረግ አንዳንድ መደበኛ አመክንዮዎችን ጠቅልያለሁ። በቡርፕ መደበኛ ዘዴዎች፣ ከጥያቄዎች ጋር ያለው መስተጋብር በፕሌይንቴክስት ውስጥ ይከናወናል።

 def makeRequest(self, method="GET", path="/", headers=None, body=None): first_line = method + " " + path + " HTTP/1.1" headers[0] = first_line if body is None: body = "{}" http_message = self.helpers.buildHttpMessage(headers, body) return self.callbacks.makeHttpRequest(self.request_host, self.request_port, True, http_message)


እና የሚያስፈልገኝን ውሂብ የማውጣት ሁለት ተግባራት አክለዋል፣ CSRF token እና UserID።

 def get_csrf_token(self, headers): response = self.makeRequest("GET", "/srv/api/v1/csrf", headers) message = self.helpers.analyzeRequest(response) raw_headers = str(message.getHeaders()) match = re.search(r'XSRF-TOKEN=([a-zA-Z0-9_-]+)', raw_headers) return match.group(1) def get_user_id(self, headers): raw_response = self.makeRequest("POST", "/srv/api/v1/profile/me", headers) response = self.helpers.bytesToString(raw_response) match = re.search(r'"_id":"([a-f0-9]{24})"', response) return match.group(1)


እና በተላኩ ራስጌዎች ውስጥ ማስመሰያው እራሱን በማዘመን

 def update_csrf(self, headers, token): for i, header in enumerate(headers): if header.startswith("X-Xsrf-Token:"): headers[i] = "X-Xsrf-Token: " + token return headers


የፊርማው ተግባር ይህንን ይመስላል። እዚህ በጥያቄው ውስጥ የተላኩትን ሁሉንም ብጁ መመዘኛዎች እወስዳለሁ ፣ መደበኛውን user_idcurrentTimecsrf_token ወደ መጨረሻቸው እጨምራለሁ እና ሁሉንም በአንድ ላይ መፈረም እንዳለብኝ ልብ ሊባል ይገባል ; እንደ መለያየት.

 def sign_body(self, json_body, user_id, currentTime, csrf_token): values = [] for key, value in json_body.items(): if key == "sign": break values.append(str(value)) values.extend([str(user_id), str(currentTime), str(csrf_token)]) return hmac_sha256(hmac_secret, message=";".join(values))


ዋናው ጎርፍ ወደ ጥቂት መስመሮች ተቀነሰ፡-

  1. የCSRF token እና የተጠቃሚ መታወቂያ ማግኛ ተከናውኗል
  2. የጊዜ ማህተም ይሰላል እና በሁሉም መመዘኛዎች ላይ በመመስረት ፊርማ ይፈጠራል። እዚህ ጋር በመፈረም ጊዜ ማቆየት አስፈላጊ ስለሆነ መዝገበ ቃላቱን በጠንካራ ቅደም ተከተል የሚያመነጨውን OrderedDict እየተጠቀምኩ መሆኔን ልብ ማለት ያስፈልጋል።
  3. የጥያቄው የመጨረሻ አካል ተፈጥሯል እና ወደ ፊት ይላካል
 csrf_token = self.get_csrf_token(headers) final_headers = self.update_csrf(final_headers, csrf_token) user_id = self.get_user_id(headers) currentTime = str(time.time()).split('.')[0]+'100' json_body = json.loads(message_body, object_pairs_hook=OrderedDict) sign = self.sign_body(json_body, user_id, currentTime, csrf_token) json_body["sign"] = sign json_body["t"] = currentTime message_body = json.dumps(json_body) httpRequest = self.helpers.buildHttpMessage(final_headers, message_body) baseRequestResponse.setRequest(httpRequest)


ቅጽበታዊ ገጽ እይታ፣ እርግጠኛ ለመሆን ብቻ


አሁን፣ ብጁ መለኪያዎች ከ2 ይልቅ 3 ወደሆኑበት ሌላ ጨዋታ ከሄዱ እና ጥያቄ ከላኩ በተሳካ ሁኔታ እንደሚላክ ማየት ይችላሉ። ይህ ማለት የእኔ ቅጥያ አሁን ሁለንተናዊ ነው እና ለሁሉም ጥያቄዎች ይሰራል ማለት ነው።


የመለያ መሙላት ጥያቄን የመላክ ምሳሌ

ማጠቃለያ

ቅጥያዎች የ Burp Suite ዋና አካል ናቸው። ብዙ ጊዜ አገልግሎቶች እርስዎ ከማንም በቀር እርስዎ አስቀድመው የማይጽፉትን ብጁ ተግባር ይተገብራሉ። ለዚህም ነው ዝግጁ የሆኑ ቅጥያዎችን ማውረድ ብቻ ሳይሆን የራስዎን መጻፍም አስፈላጊ የሆነው በዚህ ጽሑፍ ውስጥ እርስዎን ለማስተማር የሞከርኩት ነው.


ለአሁን ያ ብቻ ነው፣ እራስህን አሻሽል እና አትታመም።

የቅጥያው ምንጭ ኮድ አገናኝ ፡ * ጠቅ አድርግ * .