এসকিউএল সার্ভার ইঞ্জেকশন - 26 টি অক্ষরে কত ক্ষতি?


21

আমি একটি এসকিউএল সার্ভার ডাটাবেসে ইনজেকশন আক্রমণগুলির বিরুদ্ধে স্থিতিস্থাপকতার জন্য পরীক্ষা করছি।

ডিবিতে থাকা সমস্ত সারণির নামগুলি ছোট হাতের অক্ষর , এবং কোলেশনটি কেস-সংবেদনশীল, লাতিন 1_ জেনারাল_সিএস_এএস

আমি যে স্ট্রিংটি প্রেরণ করতে পারি তা বড় হাতের অক্ষরে বাধ্য করা হয়, এবং দৈর্ঘ্যে সর্বাধিক 26 টি বর্ণ হতে পারে। সুতরাং আমি একটি ড্রপ টেবিলে পাঠাতে পারি না কারণ টেবিলের নামটি বড় হাতের অক্ষরে থাকবে এবং এইভাবে জোটের কারণে বিবৃতিটি ব্যর্থ হবে।

সুতরাং - আমি 26 টি অক্ষরে সর্বাধিক ক্ষতি করতে পারি?

সম্পাদনা

আমি প্যারামিটারাইজড কোয়েরি সম্পর্কে আরও জানি এবং আরও - এর আগে কল্পনা করুন যে যে ব্যক্তি যে প্রান্তটি প্রেরণ করার জন্য ক্যোয়ারী তৈরি করেছে তারা এই ক্ষেত্রে প্যারাম ব্যবহার করে নি।

আমি নিস্পৃহ কিছু করার চেষ্টাও করছি না, এটি একই সংস্থার অন্য কারও দ্বারা নির্মিত একটি সিস্টেম।


1
আমরা কি কল্পনা করছি বা আপনি কি আসলে কলমের পরীক্ষা করছেন এবং এমন প্রয়োজনীয়তা রয়েছে যা আপনাকে ইঞ্জেকশন এড়ানোর অনুমতি দেয় না? আপনি কি তার নিরাপত্তার অভাব ভাঙার উপায় খুঁজছেন?
লোলিডিবিএ

41
কেন এটি এমনকি একটি বিকল্প যে দরজাটি খোলা রেখে দেওয়া উচিত? দেখে মনে হচ্ছে আপনি দরজা বন্ধ করে দেওয়ার চেয়ে ব্যয় করার চেয়ে ইতিমধ্যে এটি নিয়ে আরও বেশি সময় ব্যয় করেছেন। আমি এটিকে একটি নিরর্থক অনুশীলন হিসাবে অনুধাবন করি - আপনি যদি 10 টি দুর্বলতা নিয়ে আসে তবে তারা বলবে, আমরা সেই 10 দুর্বলতাগুলি প্লাগ করব, এবং অবশ্যই 11 তম হবে না। এখানেই "ক্লিয়ারিং" স্ট্রিংগুলি পেয়েছে। / ফেসপালম
অ্যারন

5
এটি অত্যন্ত অস্পষ্ট এবং স্বেচ্ছাসেবী প্রশ্ন এবং এটি তাত্ত্বিকভাবেও সমাধান করা যায় না। এসকিউএল ইনজেকশনের অন্যান্য স্থানীয় নেত্রপাত বৈশিষ্ট্য (অনুমতি, স্যান্ডবক্স, ফায়ারওয়ালস ইত্যাদি) রয়েছে এবং এই প্রশ্নের উত্তর দেওয়ার জন্য আপনাকে এই সমস্ত কিছুর জন্য অ্যাকাউন্ট করতে হবে।
ইভান ক্যারল

2
26 টি চরিত্রের সীমাটি কী বলছে? দরখাস্ত?
জোনাথন ফাইট

7
বন্ধ কর. শুধু এটি বন্ধ করুন। যদি প্যারামিটারাইজড কোয়েরিগুলি দূর থেকে কোনও বিকল্প হয় তবে সেগুলি ব্যবহার করুন । যদি অন্য কেউ সেগুলি কীভাবে ব্যবহার করতে জানেন না, তবে একটি উপযুক্ত উত্স পান এবং তাদের এটি পড়তে বলুন have যদি তারা কান না দেয়, কোনও ম্যানেজার বা সুপারভাইজারকে জানান যে তারা গুরুতর সুরক্ষা দুর্বলতা তৈরি করছে (একটি উত্তরদাতাদের ডেমো ক্ষতি করবে না)) এবং শিক্ষিত হতে অস্বীকার করেছেন।
jpmc26

উত্তর:


38

সহজ:

GRANT EXECUTE TO LowlyDBA

অথবা, আমি অনুমান করি এই ক্ষেত্রে এটি হবে

grant execute to lowlydba 

এটিতে আপনার বিভিন্নতার চয়ন করুন।

সমস্ত সম্ভাবনায় আপনি এখন আপনার বর্তমান সিস্টেমের বিপরীতে এটি পরীক্ষা করতে সক্ষম হতে পারেন, তবে সময়ের সাথে সাথে ডাটাবেসে যে কোনও সংখ্যক ছোটখাটো পরিবর্তন আপনার পরীক্ষাকে অকার্যকর করতে পারে। চরিত্রের স্ট্রিং বদলে যেতে পারে, কেউ ক্ষুদ্র ক্ষুদ্রতর একটি সঞ্চিত প্রক্রিয়া তৈরি করতে পারে যার মধ্যে ধ্বংসাত্মক সম্ভাবনা রয়েছে - যে কোনও কিছুই। আপনি কখনই 100% আত্মবিশ্বাসের সাথে বলতে পারবেন না যে ধ্বংসাত্মক 26 টি চরিত্রের আক্রমণ কেউ তৈরি করতে পারে না।

আমি আপনাকে পরামর্শ দিচ্ছি যে বিকাশকারীকে বেসিক শিল্পের মানক সর্বোত্তম সুরক্ষা অনুশীলনগুলি অনুসরণ করতে পারেন, তবে যদি কেবলমাত্র আমি মনে করি যে কেউ যদি আমার ধারণা ধরে নেয় তবে সুরক্ষা লঙ্ঘন ঘটলে কমপক্ষে আংশিকভাবে দায়বদ্ধ।

সম্পাদনা:

এবং দূষিততা / মজাদার জন্য, আপনি প্রতিটি ট্রেস পতাকা সক্ষম করার চেষ্টা করতে পারেন । এটি পর্যবেক্ষণ করা আকর্ষণীয় হবে। ব্রেন্ট ওজার ব্লগ পোস্টের মতো মনে হয় ...

DBCC TRACEON(xxxx, -1)

1
ট্রেস পতাকা সক্রিয় এছাড়া: বিভিন্ন র্যান্ডম সেটিংস পরিবর্তন: SET LOCK_TIMEOUT 0;, SET LANGUAGE Malaysian;, SET ANSI_NULLS OFF:...
ypercubeᵀᴹ

2
@ ইয়পারক्यूब ᵀᴹ এগুলি কেবলমাত্র আপনার নিজের অধিবেশনকেই প্রভাবিত করবে।
মার্টিন স্মিথ

2
নিবন্ধন করুন যদি SETকেবল সেশন সেটিংগুলিকেই প্রভাবিত করে, কীভাবে স্যাটাবেস এবং সার্ভার সেটিংস পরিবর্তন করা হয় ( ALTER DATABASE ...;?) DROP DATABASE ..;যদি এটি সফল হয় তবে আরও বেশি ক্ষতি করতে পারে;)
ypercubeᵀᴹ

1
বেশিরভাগ ডিবি এবং সার্ভার স্তরের সেটিংসের জন্য ডাটাবেস এবং sp_configure পরিবর্তন করুন। যদিও আপনি এগুলি দিয়ে 26 টি চরিত্রের সীমাটি হিট করতে পারেন। এছাড়াও ডাটাবেস স্তরের এই নির্দিষ্ট সেটিংসটি কেবল তখনই ব্যবহার করা হয় যখন ক্লায়েন্ট সংযোগ সেগুলি সেট করে না। এবং ডিফল্টরূপে বেশিরভাগ বা সমস্ত কিছু করে।
মার্টিন স্মিথ

7
আমি সেই মন্তব্যটির সাথে সাদৃশ্যপূর্ণ।
ব্রেন্ট ওজার

22

SHUTDOWNআদেশ বা KILLযদিও অ্যাকাউন্ট আবেদন প্রশ্নের নির্বাহ আশা এই চালানোর জন্য যথেষ্ট অনুমতি দেওয়া হয় নি কমান্ড (50 একটি র্যান্ডম সংখ্যা বাছাই) উভয় 26 অক্ষরের চেয়ে উল্লেখযোগ্যভাবে কম গ্রহণ।


সাধারণত অ্যাকাউন্টে ড্রপ টেবিলের দরকার হয় না ...
গ্রেগ

3
@ গ্রেগ হ্যাঁ যদিও আপনি এমন একটি পরিবেশকে গুরুত্ব দিতে পারেন যা দৈর্ঘ্য কম হ'ল এসকিউএল ইঞ্জেকশনটিকে অনুমতি দেওয়ার বিষয়ে বিবেচনা করছে যা সুরক্ষা সেরা অভ্যাস অনুসরণ করে না এবং অ্যাকাউন্টগুলি ন্যূনতম অনুমতি দিয়ে কনফিগার করা যায় না।
মার্টিন স্মিথ

14

আপনি এমন একটি টেবিল তৈরি করতে পারেন যা আপনি তারপরে পূরণ করতে পারবেন যতক্ষণ না সময় বা ডিস্কের স্পেস শেষ হয় যতক্ষণ না আগে আসে।

declare @S char(26);

set @S = 'create table t(c char(99))';
exec (@S);

set @S = 'insert t values('''')'
exec (@S);

set @S = 'insert t select c from t'
exec (@S);
exec (@S);
exec (@S);
exec (@S);
-- etc

19
@ অ্যালানবি ওয়েল, আপনার তখন এমন কিছু দরকার যা আমাকে দুর্বলতার শোষণ থেকে একবারে বাধা দেয়।
মিকেল এরিকসন

1
tarnations ... while 1=1 insert t values('')is 30 ... create table x(i int)=> while 1=1 insert t select 027
WernerCD

1
আপনি কি অক্ষরের সীমা চেয়ে লম্বা কমান্ড তৈরি করতে এটি ব্যবহার করতে পারেন এবং তারপরে এটি কার্যকর করতে পারেন?
Lawtonfogle

1
@ মার্টিনস্মিত আমি ভেবেছিলাম আমি এইভাবেই চলে যাব তবে এখন আমার এটি চেষ্টা করতে হবে :)। আমি যদি তা খুঁজে বের করি আপনাকে জানাতে হবে।
মিকেল এরিকসন

7
@ ওয়ার্ননার সিডি x:insert t select 0 GOTO xযদিও ঠিক ২ is।
মার্টিন স্মিথ

4

আপনার ক্ষতির সংজ্ঞা অনুসারে আপনি এটি চালিয়ে যেতে পারেন: ওয়েটফর বিলম্ব '23: 59 'সত্যই খারাপ হতে পারে, আপনি 32,768 ক্লায়েন্টের কাছ থেকে চালনার জন্য লোড-পরীক্ষার সরঞ্জামটি ব্যবহার করতে পারেন।



1
যদি স্ট্রিংটি এমএড-হক ব্যাচে অন্তর্ভুক্ত থাকে যা তালা ধরে রাখে, তবে এটি থ্রেড অনাহার সৃষ্টি করার প্রয়োজন ছাড়াই একক কল হিসাবে পরিষেবাটির একটি व्यवहार্য অস্বীকার সরবরাহ করতে পারে।
ডেভিড স্পিলিট

3

@ মিকায়েল এরিকসনের উত্তর এবং আমার প্রথম মন্তব্যে @ মার্টিনস্মিতের জবাবের ভিত্তিতে পার্থক্য:

declare @S char(26);

set @S = 'create table x(i int)';
exec (@S);

প্রথমদিকে আমি WHIL স্টেটমেন্টটি করার চেষ্টা করেছি, তবে আমি সবচেয়ে ভাল করতে পারি 27 টি চরিত্র:

set @S = 'while 1=1 insert t select 0'; -- fails at 27 characters
exec (@S);

তবে মার্টিন গোটোকে নির্দেশ করেছেন:

set @S = 'x:insert t select 0 GOTO x';
exec (@S);

গোটো ... সমস্ত অনিষ্টের মূল এবং 26 টি অক্ষরে একটি অসীম লুপ statementোকানো বিবৃতিটির স্রষ্টা।

যা বলেছে ... এটি আরও বেশি জায়গা ব্যবহার করার কারণে ইন্টার এর পরিবর্তে CHAR (99) এর সাথে লেগে থাকা সুবিধাজনক হতে পারে। অন্যান্য বিকল্পগুলি হয় দীর্ঘ নাম ব্যবহার করে এবং 26 টি অক্ষরের সীমাটি ভেঙে দেয় ... বা সারি প্রতি কম স্টোরেজ স্পেস ব্যবহার করবে।

সম্পূর্ণ পরীক্ষার কোড:

declare @S char(26);
set @S = 'drop table t;';
exec (@S);
GO

declare @S char(26);

set @S = 'create table t(c CHAR(99))';
exec (@S);

set @S = 'x:insert t select 0 GOTO x';
exec (@S);
GO

1
set @S = 'x:insert t;select 0;GOTO x';আপনার ইঞ্জেকশন আক্রমণ ভবিষ্যতের সামঞ্জস্যের জন্য;)
ypercubeᵀᴹ

@ ইয়পারক्यूब ᵀᴹ আপনি দু'টি যুক্ত করেছেন ;... দ্বিতীয়টি ভাল - একটি স্থান প্রতিস্থাপন এবং প্রয়োজন না হলে ক্রিয়ামূলক is প্রথমটি ক্যোয়ারীটি ভেঙে দেয় - নির্বাচনের বিবৃতি থেকে INSERT বিবৃতি পৃথক করে।
WernerCD

অই হ্যাঁ. যখন কেউ বিভাজক ব্যবহার না করে তখনই ঘটে! আমরা জানি না যে প্রতিটি কোয়েরিটি শেষ হয় এবং কখন পরবর্তী শুরু হয়!
ypercubeᵀᴹ

1
@ ওয়ার্নারসিডি আমি জানি। এটি এসকিউএল সার্ভারে হ্রাসকারী পদ্ধতির উপর আরও রসিকতা ছিল। চিরকালের জন্য মনে হয়। তবুও, বিবৃতিগুলির মধ্যে সেমিকোলনগুলি ব্যবহার করা ঠিক যেখানে এটি প্রয়োজন সেখানেই নয় এটি অনুশীলন।
ypercubeᵀᴹ

2
@ পাইপার আমি সন্দেহ করি যে এটি কখনও কার্যকর করা হবে। সম্ভবত এখানে একটি টন লিগ্যাসি কোড রয়েছে যার জন্য অনুপস্থিত আধা কলোনগুলির প্রয়োজন নেই যা করার কোনও নির্দিষ্ট ব্যবসায়িক মূল্য নেই। এবং এটি অ্যাপ্লিকেশনগুলিতে এম্বেড হতে পারে এবং আপডেট করা সম্ভব নয়।
মার্টিন স্মিথ

0
XP_CMDSHELL 'SHUTDOWN -PF'

আপনি পাওয়ার-ডাউনকে কী পরিমাণ ক্ষতিকারক মনে করছেন তার উপর নির্ভরশীল ending :-)

এটির জন্য সার্ভারে এক্সপি_সিএমডিএসেল সক্ষম করা দরকার যা এসকিউএল সার্ভারের শেষ কয়েকটি সংস্করণের ক্ষেত্রে নয়। এটিরও প্রয়োজন যে পরিষেবা অ্যাকাউন্টটির ডানদিকে শাটডাউন রয়েছে যা এটি থাকতে পারে এবং নাও পারে।

এক্সপি_সিএমডি শেল সক্ষম করা সম্ভবত আপনার 26 অক্ষরের সীমা ছাড়িয়ে যাবে। আপনি একাধিক ইনজেকশন অনুমতি দেবেন?

SP_CONFIGURE 'SHOW ADV',1

RECONFIGURE

SP_CONFIGURE 'XP', 1

RECONFIGURE

1
এটি ব্যাচের প্রথম বিবৃতি হলে কেবলমাত্র এক্সইসিই .চ্ছিক। যা সম্ভবত এখানে হবে না।
মার্টিন স্মিথ

@ মার্টিন স্মিথ, ভাল মন্তব্য। এক্সইসি প্রতিটি প্রক্রিয়া কল লাইনে 5 টি অক্ষর যুক্ত করে, যার মধ্যে বেশিরভাগকে 26 টিরও বেশি অক্ষরের উপরে চাপ দেয়। আমি ভাবছি যদি ক্রিট এলিয়াস এখানে সহায়তা করবে?
গ্রীনস্টোন ওয়াকার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.