paint-brush
Pentester කෙනෙක් වෙබ් අඩවියේ කේතයක් වෙන්කර ගත්තේ එය සම්පූර්ණයෙන්ම තේරුමක් නැති බව ඔප්පු කිරීමටයි.විසින්@vognik
1,018 කියවීම්
1,018 කියවීම්

Pentester කෙනෙක් වෙබ් අඩවියේ කේතයක් වෙන්කර ගත්තේ එය සම්පූර්ණයෙන්ම තේරුමක් නැති බව ඔප්පු කිරීමටයි.

විසින් Maksim Rogov16m2024/12/06
Read on Terminal Reader

දිග වැඩියි; කියවීමට

නුහුරු නුපුරුදු කේතයක් ප්‍රතිලෝම ඉංජිනේරු කරන්නේ කෙසේද සහ Burp Suite සඳහා ඔබේම දිගුවක් ලියන්නේ කෙසේද යන්න මෙම ලිපියෙන් විස්තර කෙරේ.
featured image - Pentester කෙනෙක් වෙබ් අඩවියේ කේතයක් වෙන්කර ගත්තේ එය සම්පූර්ණයෙන්ම තේරුමක් නැති බව ඔප්පු කිරීමටයි.
Maksim Rogov HackerNoon profile picture
0-item
1-item
2-item

පහුගිය දවසක සර්වර් පැත්තේ රික්වෙස්ට් වල අත්සන වෙරිෆයි කරන සර්විස් එකක් හම්බුනා. එය කුඩා ඔන්ලයින් කැසිනෝවක් වූ අතර, එය සෑම ඉල්ලීමක් සඳහාම බ්‍රව්සරයෙන් පරිශීලකයා විසින් එවන ලද යම් අගයක් පරීක්ෂා කරන ලදී. ඔබ කැසිනෝ ශාලාවේ කුමක් කළත්: ඔට්ටුවක් තැබීම හෝ තැන්පතුවක් තැබීම, එක් එක් ඉල්ලීමෙහි අතිරේක පරාමිතියක් වූයේ අහඹු ලෙස පෙනෙන අක්ෂර කට්ටලයකින් සමන්විත "ලකුණ" අගයයි. එය නොමැතිව ඉල්ලීමක් යැවීමට නොහැකි විය - වෙබ් අඩවිය දෝෂයක් ලබා දුන් අතර, එය මගේම අභිරුචි ඉල්ලීම් යැවීමෙන් වලක්වන ලදී.


මේ වටිනාකම නොතිබුණා නම් මම ඒ මොහොතේම සයිට් එකෙන් අයින් වෙලා ආයේ කවදාවත් ඒ ගැන හිතන්නේ නැහැ. එහෙත්, සියලු ප්‍රතිවිපාකවලට එරෙහිව, එය මා උද්යෝගිමත් කළේ ඉක්මන් ලාභය පිළිබඳ හැඟීම නොව, කැසිනෝව එහි මෝඩ-සෝදනය සමඟ මට ලබා දුන් පර්යේෂණ උනන්දුව සහ අභියෝගයයි.


සංවර්ධකයින් මෙම පරාමිතිය එකතු කරන විට ඔවුන්ගේ මනසේ තිබූ අරමුණ කුමක් වුවත්, එය කාලය නාස්ති කිරීමක් බව මට පෙනේ. සියල්ලට පසු, අත්සනම සේවාලාභියාගේ පැත්තෙන් ජනනය වන අතර, ඕනෑම සේවාලාභියා-පාර්ශ්වික ක්රියාවක් ප්රතිලෝම-ඉංජිනේරුකරණයට යටත් විය හැක.


මෙම ලිපියෙන්, මම කළමනාකරණය කළ ආකාරය ගැන කතා කරමි:

  1. ඉල්ලීම් අත්සන් උත්පාදන ඇල්ගොරිතම විසඳන්න
  2. සියලුම අපිරිසිදු වැඩ ස්වයංක්‍රීය කරන Burp Suite සඳහා මගේම දිගුවක් ලියන්න


ඔබ ආරක්ෂිත ව්‍යාපෘති කිරීමට උනන්දුවක් දක්වන සංවර්ධකයෙකු නම් ඔබේ වටිනා කාලය ඉතිරි කර ගැනීම සහ නිෂ්ඵල විසඳුම් ප්‍රතික්ෂේප කරන්නේ කෙසේද යන්න මෙම ලිපියෙන් ඔබට කියා දෙනු ඇත. තවද ඔබ පෙන්ටෙස්ටර් කෙනෙක් නම්, මෙම ලිපිය කියවීමෙන් පසු, ඔබට දෝශ නිරාකරණය කිරීම මෙන්ම Swiss Knife of Security සඳහා ඔබේම දිගු ක්‍රමලේඛනය කිරීම පිළිබඳ ප්‍රයෝජනවත් පාඩම් කිහිපයක් ඉගෙන ගත හැකිය. කෙටියෙන් කිවහොත්, සෑම කෙනෙකුම ප්ලස් පැත්තේ ය.


අපි අවසාන වශයෙන් කාරණයට බහිමු.

Ariadne ගේ නූල්: අත්සන ඇල්ගොරිතම ලිහා


එබැවින්, සේවාව සම්භාව්‍ය ක්‍රීඩා කට්ටලයක් සහිත මාර්ගගත කැසිනෝවකි:

  • ප්ලින්කෝ - ක්‍රීඩකයන් ඇණ පිරවූ පුවරුවක මුදුනේ සිට බෝලයක් අතහරින ක්‍රීඩාවක්, එය ජයග්‍රහණයක් හෝ නැතිවීමක් සහිත ස්ලට් එකකට ගොඩබසින ආකාරය බලා සිටීම;
  • ප්‍රවේශපත්‍ර - ක්‍රීඩකයින් අංක කට්ටලයක් සහිත ලොතරැයි ටිකට්පත් මිල දී ගෙන ඔවුන්ගේ අංක අහඹු ලෙස අඳින ලද අංකවලට ගැලපේ නම් ජයග්‍රහණය කරයි;
  • LiveDealers - ක්‍රීඩකයින්ට වීඩියෝ ප්‍රවාහය හරහා නැරඹීමට සහ අන්තර් ක්‍රියා කිරීමට ඉඩ සලසමින් සැබෑ වෙළඳුන් විසින් තත්‍ය කාලීනව පවත්වනු ලබන මාර්ගගත කැසිනෝ ක්‍රීඩා.
  • ද්විත්ව — ඊළඟ කාඩ්පත වත්මන් කාඩ්පතට වඩා වැඩිද අඩුද යන්න පිළිබඳව ක්‍රීඩකයින් ඔට්ටු තබන සරල ක්‍රීඩාවකි.
  • ක්‍රෑෂ් - ක්‍රීඩකයන් ඔට්ටු අල්ලමින් ගුණකය කඩා වැටීමට පෙර මුදල් ඉපයීම ඉලක්ක කර ගනිමින් ගුණකය වැඩි වීම නරඹන්න;
  • Nvuti - ක්‍රීඩකයින් සංඛ්‍යාවක් නිශ්චිත කාල පරතරයකට වඩා පහළින් හෝ ඊට ඉහළින් වැටේ දැයි ඔට්ටු අල්ලයි;
  • Slots - ක්‍රීඩකයින් සංකේත සහිත රීල් කරකවන කැසිනෝ ක්‍රීඩා සහ තිරයේ යම් සංයෝජන දිස්වන්නේ නම් ජයග්‍රහණය කරයි.


සේවාදායකය සමඟ අන්තර්ක්‍රියා සම්පූර්ණයෙන්ම HTTP ඉල්ලීම් මත ක්‍රියා කරයි. ඔබ තෝරා ගන්නා ක්‍රීඩාව කුමක් වුවත්, සේවාදායකයට ලැබෙන සෑම POST ඉල්ලීමක්ම අත්සන් කළ යුතුය - එසේ නොමැතිනම් සේවාදායකය දෝෂයක් ජනනය කරයි. මෙම සෑම ක්‍රීඩාවකම ඉල්ලීම් අත්සන් කිරීම එකම මූලධර්මය මත ක්‍රියා කරයි - මම එකම කාර්යය දෙවරක් කිරීමට අවශ්‍ය නොවන පරිදි විමර්ශනය කිරීමට මම එක් ක්‍රීඩාවක් පමණක් ගන්නෙමි.


අනික මම ඩ්‍රැගන් ඩන්ජියන් කියන ගේම් එකක් ගන්නයි යන්නේ.


මෙම ක්‍රීඩාවේ සාරය නම් නයිට්වරයෙකුගේ භූමිකාවේ අනුපිළිවෙලින් මාලිගාවේ දොරවල් තෝරා ගැනීමයි. සෑම දොරක් පිටුපසම නිධානයක් හෝ මකරෙකු සඟවයි. ක්රීඩකයා දොරක් පිටුපස මකරෙකු හමු වුවහොත්, ක්රීඩාව නතර වන අතර ඔහුට මුදල් අහිමි වේ. නිධානය හමු වුවහොත් - ආරම්භක ඔට්ටුවේ ප්‍රමාණය වැඩි වන අතර ක්‍රීඩකයා ජයග්‍රහණ ලබා ගන්නා තෙක්, පරාජය වන තුරු හෝ සියලු මට්ටම් සමත් වන තුරු ක්‍රීඩාව දිගටම පවතී.


ක්රීඩාව ආරම්භ කිරීමට පෙර, ක්රීඩකයා ඔට්ටුවේ ප්රමාණය සහ මකරුන් සංඛ්යාව සඳහන් කළ යුතුය.


මම එකතුව ලෙස අංක 10 ඇතුළත් කර, එක් මකරෙකු තබා යවන ඉල්ලීම දෙස බලන්න. මෙය ඕනෑම බ්‍රව්සරයක ඇති සංවර්ධක මෙවලම් වලින් කළ හැකිය, Chromium හි ජාල ටැබය මේ සඳහා වගකිව යුතුය.


ඉල්ලීම /srv/api/v1/dungeon endpoint වෙත යවා ඇති බවද මෙහිදී ඔබට දැක ගත හැක.


Payload ටැබය JSON ආකෘතියෙන් ඉල්ලීම් අන්තර්ගතය පෙන්වයි


පළමු පරාමිති දෙක පැහැදිලිය - මම ඒවා UI වෙතින් තෝරා ගත්තෙමි; අවසාන එක, ඔබ අනුමාන කළ හැකි පරිදි, timestamp හෝ 1970 ජනවාරි 1 සිට ගත වූ කාලය, සාමාන්‍ය ජාවාස්ක්‍රිප්ට් නිරවද්‍යතාවය මිලි තත්පර වේ.


එය එක් නොවිසඳුණු පරාමිතියක් ඉතිරි කරයි, - සහ එයම අත්සනයි. එය සෑදෙන්නේ කෙසේද යන්න තේරුම් ගැනීම සඳහා, මම මූලාශ්ර පටිත්ත වෙත යන්නෙමි - මෙම ස්ථානයේ බ්රවුසරය පටවා ඇති සේවාවේ සියලු සම්පත් අඩංගු වේ. ජාවාස්ක්‍රිප්ට් ඇතුළුව, එය වෙබ් අඩවියේ සේවාදායක කොටසෙහි සියලු තර්ක සඳහා වගකිව යුතුය.



මෙම කේතය තේරුම් ගැනීම එතරම් පහසු නැත - එය කුඩා කර ඇත. ඔබට ඒ සියල්ල ඉවත් කිරීමට උත්සාහ කළ හැකිය - නමුත් එය දිගු හා වෙහෙසකර ක්‍රියාවලියක් වන අතර එය බොහෝ කාලයක් ගතවනු ඇත (මූලාශ්‍ර කේතයේ ප්‍රමාණය සැලකිල්ලට ගනිමින්), මම එය කිරීමට සූදානම් නැත.


දෙවන සහ සරලම විකල්පය වන්නේ මූල පදයකින් කේතයේ අවශ්‍ය කොටස සොයා ගැනීම සහ නිදොස්කරණය භාවිතා කිරීමයි. ඒකයි මම කරන්නම්, මොකද මුලු සයිට් එකම වැඩ කරන හැටි දැනගන්න ඕන නැති නිසා මට දැනගන්න ඕන අත්සන හැදෙන හැටි විතරයි.


එබැවින්, කේතය ජනනය කිරීම සඳහා වගකිව යුතු කේතයේ කොටස සොයා ගැනීමට, ඔබට CTRL+SHIFT+F යතුරු සංයෝජනය භාවිතයෙන් සියලුම මූලාශ්‍ර හරහා සෙවුමක් විවෘත කර යවන ලද sign යතුරට අගයක් පැවරීම සොයන්න. ඉල්ලීම තුළ.


වාසනාවකට ඇත්තේ එකම තරගයක් පමණි, එයින් අදහස් වන්නේ මම නිවැරදි මාර්ගයේ සිටින බවයි.


ඔබ ගැලපීමක් මත ක්ලික් කළහොත්, ඔබට අත්සනම ජනනය වන කේත කොටස වෙත යා හැක. කේතය පෙර පරිදිම අපැහැදිලි වී ඇත, එබැවින් එය තවමත් කියවීමට අපහසුය.


කේත රේඛාවට ප්‍රතිවිරුද්ධව මම බ්‍රේක්පොයින්ට් එකක් දමා, පිටුව නැවුම් කර “ඩ්‍රැගන්” හි නව ලංසුවක් තබමි - දැන් ස්ක්‍රිප්ට් එක අත්සන සෑදීමේ මොහොතේම එහි ක්‍රියාකාරිත්වය නතර කර ඇති අතර ඔබට සමහර විචල්‍යවල තත්වය දැකිය හැකිය.


හැඳින්වෙන ශ්‍රිතය එක් අකුරකින් සමන්විත වේ, විචල්‍ය ද - නමුත් ගැටලුවක් නැත. ඔබට කොන්සෝලය වෙත ගොස් එක් එක් ඒවායේ අගයන් පෙන්විය හැක. තත්වය වඩාත් පැහැදිලි වීමට පටන් ගනී.


I ප්‍රතිදානය කරන පළමු අගය වන්නේ ශ්‍රිතයක් වන H විචල්‍යයේ අගයයි. ඔබට එය කොන්සෝලයෙන් ක්ලික් කර එය කේතයේ ප්‍රකාශ කර ඇති ස්ථානයට යා හැකිය, පහත ලැයිස්තුගත කර ඇත.


මෙය ඉතා විශාල කේත කොටසකි, එහිදී මා හෝඩුවාවක් දුටුවෙමි - SHA256. මේක hashing algorithm එකක්. ශ්‍රිතයට පරාමිති දෙකක් ලබා දී ඇති බව ද ඔබට දැක ගත හැක, මෙය හුදෙක් SHA256 පමණක් නොව රහසක් සහිත HMAC SHA256 විය හැකි බවට ඉඟි කරයි.


බොහෝ විට මෙහි සම්මත කර ඇති විචල්‍යයන් (කොන්සෝලය වෙත ප්‍රතිදානය ද වේ):

  • string 10;1;6693a87bbd94061678473bfb;1732817300080;gRdVWfmU-YR_RCuSkWFLCUTly_GZfDx3KEM8 - සෘජුවම HMAC SHA256 මෙහෙයුම යොදන අගය.
  • 31754cff-be0f-446f-9067-4cd827ba8707 යනු රහසක් ලෙස ක්‍රියා කරන ස්ථිතික නියතයකි.


මෙය තහවුරු කර ගැනීම සඳහා, මම කාර්යය අමතා උපකල්පිත අත්සන ලබා ගන්නෙමි


දැන් මම HMAC SHA256 ගණන් කරන වෙබ් අඩවියට ගොස් එහි අගයන් ලබා දෙන්නෙමි.


අනික මම bid එක දාපු වෙලාවේ request එකේ එවපු එකත් එක්ක සසඳනවා.


ප්‍රති result ලය සමාන වේ, එයින් අදහස් කරන්නේ මගේ අනුමාන නිවැරදි බවයි - එය ඇත්ත වශයෙන්ම ස්ථිතික රහසක් සමඟ HMAC SHA256 භාවිතා කරයි, එය අනුපාතය, මකරුන් ගණන සහ වෙනත් පරාමිතීන් සමඟ විශේෂයෙන් සාදන ලද තන්තුවක් සම්මත කරයි, එය මම ඔබට තවදුරටත් කියන්නම්. ලිපියේ පාඨමාලාවේ.


ඇල්ගොරිතම තරමක් සරල හා සරල ය. නමුත් එය තවමත් ප්‍රමාණවත් නොවේ - එය පෙන්ටෙස්ට් සඳහා වැඩ ව්‍යාපෘතියක් තුළ ඉලක්කයක් වූයේ දුර්වලතා සොයා ගැනීමට නම්, මට Burp Suite භාවිතයෙන් මගේම විමසුම් යැවීමට ඉගෙන ගැනීමට අවශ්‍ය වනු ඇත.


අනික මේකට අනිවාර්යෙන්ම automation අවශ්‍යයි, ඒක තමයි මම දැන් කතා කරන්න යන්නේ.

ඔබේම දිගුවක් ලිවීමට පවා අවශ්‍යද?

අත්සන උත්පාදනය කිරීමේ ඇල්ගොරිතම මම හදුනා ගත්තෙමි. ඉල්ලීම් යැවීමේදී අනවශ්‍ය දේවල් සියල්ල ඉවත් කිරීම සඳහා එය ස්වයංක්‍රීයව උත්පාදනය කරන්නේ කෙසේදැයි ඉගෙන ගැනීමට දැන් කාලයයි.


ඔබට ZAP, Caido, Burp Suite, සහ අනෙකුත් pentest මෙවලම් භාවිතයෙන් ඉල්ලීම් යැවිය හැක. මෙම ලිපිය Burp Suite වෙත අවධානය යොමු කරනු ඇත, එය වඩාත් පරිශීලක-හිතකාමී සහ පාහේ පරිපූර්ණ බව මට පෙනී යයි. ප්‍රජා සංස්කරණය නිල වෙබ් අඩවියෙන් නොමිලේ බාගත හැකිය, එය සියලු අත්හදා බැලීම් සඳහා ප්‍රමාණවත් වේ.


කොටුවෙන් පිටත Burp Suite HMAC SHA256 ජනනය කරන්නේ කෙසේදැයි නොදනී. එබැවින්, මෙය සිදු කිරීම සඳහා, ඔබට Burp Suite හි ක්‍රියාකාරීත්වයට අනුපූරක වන දිගු භාවිතා කළ හැක.


දිගු නිර්මාණය කරනු ලබන්නේ ප්‍රජා සාමාජිකයින් විසින් සහ සංවර්ධකයින් විසින්මය. ඒවා නොමිලේ BApp Store, Github හෝ වෙනත් මූලාශ්‍ර කේත ගබඩාවන් හරහා බෙදා හරිනු ලැබේ.


ඔබට ගත හැකි මාර්ග දෙකක් තිබේ:

  1. BApp වෙළඳසැලෙන් පිටත දිගුවක් භාවිතා කරන්න
  2. ඔබේම දිගුවක් ලියන්න


මෙම සෑම මාර්ගයකටම එහි වාසි සහ අවාසි ඇත, මම ඔබට දෙකම පෙන්වන්නම්.

Hackvertor දැන හඳුනා ගැනීම

සූදානම් කළ දිගුවක් සහිත ක්රමය පහසුම වේ. එය BApp Store වෙතින් බාගත කර එහි ලක්ෂණ භාවිතා කර sign පරාමිතිය සඳහා අගයක් ජනනය කිරීමයි.


මම භාවිතා කළ දිගුව Hackvertor ලෙස හැඳින්වේ. එය ඔබට සින්ටැක්ස් වැනි XML භාවිතා කිරීමට ඉඩ සලසයි, එවිට ඔබට ගතිකව කේතනය / විකේතනය, සංකේතනය / විකේතනය, විවිධ දත්ත හැෂ් කළ හැකිය.


එය ස්ථාපනය කිරීම සඳහා, Burp අවශ්ය වන්නේ:

  1. දිගු පටිත්ත වෙත යන්න

  2. සෙවුමේ Hackvertor ටයිප් කරන්න

  3. ලැයිස්තුවේ සොයාගත් දිගුව තෝරන්න

  4. ස්ථාපනය ක්ලික් කරන්න



එය ස්ථාපනය කළ පසු, එම නමින්ම ටැබ් එකක් බර්ප් හි දිස්වනු ඇත. ඔබට එය වෙත ගොස් දිගුවේ හැකියාවන් සහ පවතින ටැග් ගණන ඇගයීමට ලක් කළ හැකිය, ඒ සෑම එකක්ම එකිනෙකා සමඟ ඒකාබද්ධ කළ හැකිය.


උදාහරණයක් දීමට, ඔබට <@aes_encrypt('supersecret12356','AES/ECB/PKCS5PADDING')>MySuperSecretText<@/aes_encrypt> ටැගය භාවිතයෙන් සමමිතික AES සමඟ යමක් සංකේතනය කළ හැක.


රහස් සහ ඇල්ගොරිතම වරහන් තුළ ඇති අතර, ටැග් අතර සංකේතනය කළ යුතු පෙළ වේ. රිපීටර්, ඉන්ට්‍රඩර් සහ අනෙකුත් බිල්ට් බර්ප් සූට් මෙවලම්වල ඕනෑම ටැග් භාවිතා කළ හැක.



Hackvertor දිගුව ආධාරයෙන් ඔබට ටැග් මට්ටමින් අත්සනක් උත්පාදනය කළ යුතු ආකාරය විස්තර කළ හැක. මම එය කරන්න යන්නේ සැබෑ ඉල්ලීමක උදාහරණයක් මතයි.

සටන් වලදී Hackvertor භාවිතා කිරීම

එබැවින්, මම ඩ්‍රැගන් ඩන්ජියන් හි ඔට්ටුවක් තබමි, මෙම ලිපියේ ආරම්භයේ දී මම ඉන්ටර්සෙප්ට් ප්‍රොක්සි සමඟ බාධා කළ එම ඉල්ලීමම අත්හිටුවා, එය සංස්කරණය කර නැවත ඉදිරිපත් කිරීමට හැකි වන ලෙස රිපීටරයට අවධාරණය කරමි.


දැන් ae04afe621864f569022347f1d1adcaa3f11bebec2116d49c4539ae1d2c825fc අගය වෙනුවට, අපි Hack vertor මඟින් සපයන HMAC SHA256 ජනනය කිරීමට ඇල්ගොරිතම ආදේශ කළ යුතුය.


ෆොර්මූලා ජෙනරල් <@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 endpoint විමසුමෙනි.


  • <@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 හි ඩ්‍රැගන් අනුපාතය හෝ සංඛ්‍යාව වෙනස් කරන සෑම අවස්ථාවකම, ඔබ ඒවා ගැලපෙන පරිදි අත්සනින්ම වෙනස් කළ යුතුය.


එසේම, ඔබ Proxy ටැබ් එකෙන් Intruder හෝ Repeater වෙත නව ඉල්ලීමක් යවන්නේ නම්, ඔබට සූත්‍රය නැවත ලිවීමට සිදුවේ, ඔබට විවිධ පරීක්ෂණ අවස්ථා සඳහා බොහෝ ටැබ් අවශ්‍ය වූ විට එය ඉතා අපහසු වේ.


මෙම සූත්‍රය වෙනත් පරාමිති භාවිතා කරන වෙනත් විමසුම් වලදීද අසාර්ථක වනු ඇත.


එබැවින් මෙම අවාසි මඟහරවා ගැනීම සඳහා මගේම දිගුවක් ලිවීමට මම තීරණය කළෙමි.

ඔබේ දිගුව සමඟ බර්ප් හි සියලු මැජික් සොයා ගන්න

මූලික සැකසුම්

ඔබට බර්ප් සූට් සඳහා දිගු ලිවිය හැකිය ජාවා සහ පයිතන්. මම දෙවන ක්‍රමලේඛන භාෂාව භාවිතා කරන්නම් එය සරල සහ වඩාත් දෘශ්‍යමාන වේ. නමුත් ඔබ කලින් සූදානම් විය යුතුය: පළමුව ඔබ නිල වෙබ් අඩවියෙන් 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 - Callbacks object එක self attribute ලෙස සුරකියි. දිගු කේතයේ අනෙකුත් කොටස්වල Burp Suite API පසුකාලීන භාවිතය සඳහා මෙය අවශ්‍ය වේ.
  • self.helpers = callbacks.getHelpers() - දිගුව ක්‍රියාත්මක වන විට අවශ්‍ය වන ප්‍රයෝජනවත් ක්‍රම ද ලබා ගනී.


මූලික සූදානමත් එක්ක එච්චරයි. දැන් ඔබට දිගුව පූරණය කර එය කිසිසේත්ම ක්‍රියා කරන බවට වග බලා ගත හැක. මෙය සිදු කිරීම සඳහා, දිගු ටැබයට ගොස් එකතු කරන්න ක්ලික් කරන්න.

දිස්වන කවුළුවෙහි, සඳහන් කරන්න

  • දිගු වර්ගය - පයිතන්, හෝ දිගුව ලියා ඇති ක්‍රමලේඛන භාෂාව
  • දිගු ගොනුව - දිගු ගොනුවටම මාර්ගය.


සහ Next ක්ලික් කරන්න.


ප්‍රභව කේත ගොනුව නිවැරදිව හැඩගස්වා ඇත්නම්, කිසිදු දෝෂයක් සිදු නොවිය යුතු අතර, ප්‍රතිදාන ටැබය දිගුවේ නම පෙන්වනු ඇත. මෙයින් අදහස් කරන්නේ සෑම දෙයක්ම හොඳින් ක්‍රියාත්මක වන බවයි.

පෑන පරීක්ෂණයක්

Extension එක load වෙලා වැඩ කරනවා - ඒත් load උන ඔක්කොම logic නැති wrapper එකක්, දැන් මට request එක අත්සන් කරන්න කෙලින්ම code එක ඕනේ. මම දැනටමත් එය ලියා ඇති අතර එය පහත තිර පිටුවේ දැක්වේ.


සම්පූර්ණ දිගුව ක්‍රියා කරන ආකාරය නම්, ඉල්ලීම සේවාදායකයට යැවීමට පෙර, එය මගේ දිගුව මඟින් වෙනස් කරනු ලැබේ.


මම මුලින්ම දිගුව බාධා කළ ඉල්ලීම භාරගෙන එහි ශරීරයෙන් අනුපාතය සහ මකරුන් සංඛ්‍යාව ලබා ගන්නෙමි.

 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 හි දිගුව නැවත පූරණය කළ හැකිය (එය එක් එක් ස්ක්‍රිප්ට් වෙනස් කිරීමෙන් පසුව සිදු කළ යුතුය), සහ සියල්ල ක්‍රියාත්මක වන බවට වග බලා ගන්න.

නව රීතිය ක්‍රියාවෙන් පරීක්ෂා කිරීම

නමුත් පළමුව ඔබ ඉල්ලීම් සැකසීම සඳහා නව රීතියක් එක් කළ යුතුය. මෙය සිදු කිරීම සඳහා, සැකසීම් වෙත, සැසි කොටස වෙත යන්න. ඉල්ලීම් යැවීමේදී ක්‍රියාත්මක වන සියලුම විවිධ නීති මෙහිදී ඔබට හමුවනු ඇත.


ඇතැම් ආකාරයේ ඉල්ලීම් මත ක්‍රියාරම්භ කරන දිගුවක් එක් කිරීමට Add ක්ලික් කරන්න.


එන Window එකේ මම ඔක්කොම තියෙන විදියට දාලා Add in Rule action කියන එක තෝරන්න



පතන ලැයිස්තුවක් දිස්වනු ඇත. එහි, Invoke a Burp දිගුව තෝරන්න.


ඒ සඳහා ඉල්ලීම් යැවීමේදී කැඳවනු ලබන දිගුව සඳහන් කරන්න. මට එකක් තියෙනවා, ඒක තමයි Burp Extension.

දිගුව තේරීමෙන් පසු, මම හරි ක්ලික් කරන්න. තවද මම Scope පටිත්ත වෙත යන්නෙමි, එහිදී මා සඳහන් කරන්නේ:

  • මෙවලම් විෂය පථය - පුනරාවර්තකය (මම රිපීටර් හරහා අතින් ඉල්ලීම් යවන විට දිගුව ක්‍රියාරම්භ කළ යුතුය)

  • URL විෂය පථය - සියලුම URL ඇතුළත් කරන්න (එමගින් එය මා යවන සියලුම ඉල්ලීම් මත ක්‍රියා කරයි).


එය පහත තිර පිටපතේ මෙන් ක්‍රියා කළ යුතුය.


හරි ක්ලික් කිරීමෙන් පසුව, දිගු රීතිය පොදු ලැයිස්තුවේ දිස් විය.


අවසාන වශයෙන්, ඔබට සෑම දෙයක්ම ක්‍රියාවෙන් පරීක්ෂා කළ හැකිය! දැන් ඔබට යම් විමසුමක් වෙනස් කර අත්සන ගතිකව යාවත්කාලීන වන්නේ කෙසේදැයි බලන්න. අනික query එක fail උනත් එහෙම වෙන්නේ මම ඍණ අගයක් තෝරගත්ත නිසා මිසක් අත්සනේ මොකක් හරි අවුලක් තියෙන නිසා නෙවෙයි (මට සල්ලි නාස්ති කරන්න ඕනේ නෑ 😀). දිගුව ම ක්‍රියා කරන අතර අත්සන නිවැරදිව ජනනය වේ.


එය පරිපූර්ණත්වයට ගෙන ඒම

සෑම දෙයක්ම විශිෂ්ටයි, නමුත් ගැටළු තුනක් තිබේ:

  1. CSRF ටෝකනය ශීර්ෂයෙන් ලබා ගනී. සාමාන්යයෙන් එය ඉවත දැමිය හැකි විය යුතුය, නමුත් බොහෝ විට මෙහි එය ජීවිත කාලය ඇත (නැතහොත් එය වැරදියි). කොහොමත් අලුත් එකක් අරන් අප්ඩේට් කරන්න කියලා වෙනමම ඉල්ලීමක් කරන එක තමයි වඩා නිවැරදි. 2- පූර්ව නිශ්චිත පරිශීලක හැඳුනුම්පතක් භාවිතා වේ. මට මෙම සේවාවෙහි IDOR පරීක්ෂා කිරීමට අවශ්‍ය නම්, මගේ පෙර ස්ක්‍රිප්ට් වෙනත් පරිශීලකයෙකුට අවලංගු වනු ඇත, මන්ද ID දෘඪ කේත කර ඇත.
  2. විවිධ විමසුම්වලට විවිධ පරාමිති තිබිය හැක. පිටපත සඳහා මුලින් විස්තර කරන ලද යෝජනා ක්‍රමය වලංගු වන්නේ Dungeon Dragons සඳහා වන අතර වෙනත් කිසිවක් නැත. තවද ඕනෑම ඉල්ලීමක් සංස්කරණය කර යැවීමට මම කැමතියි.


මෙය විසඳීමට, අපි requests වෙනුවට ඕනෑම තෙවන පාර්ශ්වයක් වෙනුවට, ගොඩනඟන ලද Burp Suite පුස්තකාලය මඟින් සිදු කළ හැකි අමතර ඉල්ලීම් දෙකක් එකතු කළ යුතුය.


මෙය සිදු කිරීම සඳහා, විමසුම් වඩාත් පහසු කිරීම සඳහා මම සම්මත තර්ක කිහිපයක් ඔතා ඇත. Burp හි සම්මත ක්‍රම හරහා, විමසුම් සමඟ අන්තර්ක්‍රියා pleintext වලින් සිදු කෙරේ.

 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 ටෝකනය සහ 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_id , currentTime , csrf_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 ටෝකනය සහ UserID අත්පත් කර ගැනීම සිදු කෙරේ
  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 හි අනිවාර්ය අංගයකි. බොහෝ විට සේවාවන් ඔබ හැර වෙන කිසිවෙකු නොවන අභිරුචි ක්‍රියාකාරිත්වය ක්‍රියාත්මක කරයි. සූදානම් කළ දිගු බාගත කිරීම පමණක් නොව, ඔබේම දෑ ලිවීමටද වැදගත් වන්නේ එබැවිනි, මෙම ලිපියෙන් මම ඔබට ඉගැන්වීමට උත්සාහ කළ දේ.


දැනට එච්චරයි, ඔයා දියුණු වෙන්න, අසනීප වෙන්න එපා.

දිගුවේ මූල කේතය වෙත සබැඳිය: *ක්ලික් කරන්න* .