هێرشی (SQL Injection) – بەشی دووەم: هێرشی (SQL Injection) چییە؟

ناوه‌ڕۆكی ئه‌م وتاره‌
ئه‌نجامدانی هێرشكه‌:
نموونه‌:
یه‌که‌م هه‌نگاو
دووه‌م هه‌نگاو
دیتنه‌وه‌ی ناوی خشته‌که‌
ئاشکراكردنی تێپه‌ڕه‌وشه‌

ئه‌نجامدانی هێرشكه‌:
ئه‌و نموونانه‌ وه‌رگیراون له‌و بابه‌ته‌ له‌گه‌ڵ که‌مێک ده‌ستکاری SQL Injection Attacks by Example :
(تێبینی: لێره‌دا ئێمه‌ مه‌به‌ستمان ئه‌وه‌ نییه‌ چۆنێتیی هێرشکردن له‌سه‌ر وێبگه‌یه‌ک فێر بین، ته‌نها بۆ ئه‌وه‌مانه‌ که‌ له‌ مه‌ترسییه‌كانی تێ بگه‌ین و، بزانین چۆن خۆمانی لێ ده‌پارێزین، هه‌ر چۆنێك بێت، سه‌رکه‌وتن له‌ هێرشکردن به‌و شێوه‌ی که‌ له‌ خواره‌وه‌ باس کراوه‌ ئه‌سته‌مه‌، ته‌نها ئه‌گه‌ر وێبگه‌یه‌ک بێت که‌ هیچ پاراستنێکی بۆ نه‌کرابێت).

نموونه‌:
بۆ نموونه‌ وێبگه‌یه‌ک بۆ چوونه‌ناوی داوای ناوی به‌کارهێنه‌ر و وشه‌ی نهێنی ده‌کات، هه‌روه‌ها ڕێگه‌ ده‌دات به‌هۆی پۆستی ئه‌لکترۆنی (email) وشه‌ی نهێنی بنێریت بۆ خاوه‌نه‌که‌ی ئه‌گه‌ر له‌بیری کردبوو، ئێمه‌ هه‌وڵ ده‌ده‌ین هێرشی (SQL injection) له‌ خانه‌ی پۆستی ئه‌لکترۆنی (email) ئه‌نجام بده‌ین، هه‌روه‌ها ده‌توانین له‌ ڕێگه‌ی خانه‌ی ناوی به‌کارهێنه‌ر ئه‌نجامی بده‌ین.

له‌ سه‌ره‌تادا پێشبینی ده‌کرێت کۆدی وه‌رگرتنی زانیاریی به‌کارهێنه‌ر له‌ ڕێگه‌ی ئیمێل به‌و شێوه‌یه‌ بێت:

SELECT fieldlist
FROM table
WHERE field = ‘$EMAIL’;

لێره‌دا ئێمه‌ نازانین ناوی خشته (table)كه‌ چییه‌، هه‌روه‌ها نازانین ناوی خانه‌کانی (fields)که‌ تێیدایه‌ چییه‌.

یه‌که‌م هه‌نگاو
یه‌که‌م هه‌نگاو له‌ خانه‌ی ئیمێل ته‌نها که‌وانه‌یه‌ک له‌و شێوه‌یه‌ ده‌نووسین ‘ ، بێگومان ئه‌وه‌ ده‌بێته‌ هۆی ڕوودانی هه‌ڵه‌ له‌ بنکه‌دراوه‌، ئه‌گه‌ر له‌ به‌رنامه‌که‌ حیسابی بۆ نه‌کرابێت، ڕوودانی هه‌ڵه‌ ئه‌وه‌ ده‌گه‌یێنێت که‌ ئه‌وه‌ی له‌ خانه‌ی ئیمێل ده‌نووسرێت وه‌کوو خۆی وه‌رده‌گیرێت به‌بێ هه‌بوونی هیچ ڕاستکردنه‌وه‌یه‌ک، جاریش وا هه‌یه‌ هه‌ڵه‌ ڕووده‌دات به‌ڵام به‌رامبه‌ر به‌کارهێنه‌ر (ئه‌نجامده‌ری هێرشه‌که‌) هیچ نامه‌یه‌کی هه‌ڵه‌ نیشان نادرێت، لێره‌دا ڕێگه‌ی تر به‌کار دێت پێی ده‌ڵێن هێرشی کۆره‌ (Blind SQL injection attack).

دووه‌م هه‌نگاو
دووه‌م هه‌نگاو هه‌وڵ ده‌ده‌ین بزانین ناوی یه‌ک یان زیاتر له‌ خانه‌کانی ناو خشته‌که‌دا چییه‌ (schema field mapping) به‌و شێوه‌یه‌ی خواره‌وه‌:

SELECT fieldlist
FROM table
WEHRE field = ‘x’ AND email IS NULL; --‘

ئه‌و مه‌رجه‌ی سه‌ره‌وه‌ (WHERE field = ‘x’ AND email IS NULL) قه‌ت ڕوونادات، ئه‌وه‌ش مه‌به‌سته‌که‌یه‌ چونکه‌ ئێمه‌ ته‌نها ده‌مانه‌وێت بزانین ئه‌و فه‌رمانه‌ی سه‌ره‌وه‌ دروسته‌ یان دروست نییه‌، هه‌ر بۆیه‌ کرداری – و (AND)- مان به‌کار هێنا نه‌ک – یان (OR)-
ئه‌و تاقیکردنه‌وه‌یه‌مان ئه‌نجام دا به‌ پێشبینیکردنی ناوی خانه‌ (field)ی ئیمێل له‌ناو خشته‌که‌دا، چه‌ند جارێک ئه‌و تاقیکردنه‌وه‌یه‌ دووباره‌ ده‌که‌ینه‌وه‌ به‌ به‌کارهێنانی ناوه‌ پێشبینیکراوه‌کان وه‌ک (email, email_address, …) تا ده‌گه‌ینه‌ ده‌ره‌نجامێک و ناوی خانه‌ی ئیمێل ده‌بینینه‌وه‌.
هه‌مان تاقیکردنه‌وه‌ی سه‌ره‌وه‌ ئه‌نجام ده‌ده‌ین بۆ دۆزینه‌وه‌ی ناوی خانه‌ی تێپه‌ڕه‌وشه‌ (password) و ناوی به‌کارهێنه‌ر هه‌روه‌ها پێناسه‌ی به‌کارهێنه‌ر (user id) با بڵێین (پاش چه‌ند كاژێرێك له‌ تاقیکردنه‌وه‌) ده‌ره‌نجامه‌که‌ به‌و شێوه‌یه‌ی خواره‌وه‌ ده‌رچوو:
– email
– passwd
– login_id
– full_name
تا ئێره‌ گه‌یشتینه‌ ده‌ره‌نجامێکی باش، به‌ڵام هێشتا ناوی خشته‌که‌ نازانین که‌ ئه‌و خانانه‌ی تێدایه‌.

دیتنه‌وه‌ی ناوی خشته‌که‌
بۆ مه‌به‌ستی دیتنه‌وه‌ی ناوی خشته‌که‌ ئه‌و شێوه‌یه‌ی خواره‌وه‌ به‌کار ده‌هێنین:

SELECT email, passwd, login_id, full_name
FROM table
WEHRE email = ‘x’ AND 1 = (SELECT COUNT(*) FROM tablename); --‘

به‌ به‌کارهێنانی فه‌رمانی (SELECT COUNT(*) FROM tablename) ته‌نها مه‌به‌ستمان زانینی ناوی خشته‌که‌یه‌، گرنگ نییه‌ ئه‌و فه‌رمانه‌ی سه‌ره‌وه‌ ئه‌نجامێکمان پێ بدات یان نا، ته‌نها گرنگ ئه‌وه‌یه‌ بزانین ئه‌و فه‌رمانه‌ی سه‌ره‌وه‌ دروسته‌ یان نا، به‌ هه‌مان شێوه‌ پێشبینیی ناوی خشته‌که‌ ده‌که‌ین، به‌ چه‌ند تاقیکردنه‌وه‌یه‌کی له‌و جۆره‌ ده‌توانین بگه‌ینه‌ ئه‌نجام.
لێره‌دا هه‌روه‌ها ده‌کرێت سکریپتێک دروست بکرێت بۆ تاقیکردنه‌وه‌ی هه‌موو ئه‌گه‌رێک (brute force attack) بۆ دۆزینه‌وه‌ی ناوی خشته‌که ‌و ناوی خانه‌کانی، ئه‌گه‌ر هه‌ر تووڕه‌ی کردیت ‌و هیچ ناوێکت پێ نه‌دیتراوه‌ ئه‌و فه‌رمانه‌ ئه‌نجام بده:‌ (‘; SHUTDOWN;–) به‌ یه‌کجاری وێبگه‌که‌ له‌کار ده‌که‌وێت.

ئاشکراكردنی تێپه‌ڕه‌وشه‌
پاش زانینی ناوی خشته‌که‌ و ناوی خانه‌کانی ئه‌و خشته‌یه‌، کاتی ئه‌وه‌ هاتووه‌ تێپه‌ڕه‌وشه‌ی چه‌ند به‌کارهێنه‌رێک ئاشکرا بکه‌ین، بۆ ئه‌نجامدانی ئه‌وه‌ وشه‌ی (LIKE) به‌کار ده‌هێنین له‌ دروستکردنی فه‌رمانی (SQL)، به‌ڵام پێشتر ده‌بێ هه‌ندێک زانیاری کۆ بکه‌ینه‌وه‌ ده‌رباره‌ی چه‌ند به‌کارهێنه‌رێک به‌ تایبه‌تی به‌ڕێوه‌به‌ره‌کان، ئه‌و زانیارییانه‌ی ده‌ست ده‌که‌ون به‌ زۆری له‌ لاپه‌ڕه‌ی په‌یوه‌ندیپێکردن (Contact)، یان لاپه‌ڕه‌ی ده‌رباره‌ی ئێمه ‌(About us)، ده‌توانین به‌و ڕێگایه‌ ئیمێل ‌و ناوی چه‌ند به‌کارهێنه‌رێک بزانین.
پاشان به‌و شێوه‌یه‌ی خواره‌وه‌ هه‌وڵ ده‌ده‌ین تێپه‌ڕه‌وشه‌ ئاشکرا بکه‌ین:

SELECT email, passwd, login_id, full_name
FROM table
WHERE  email = ‘[email protected]' AND passwd = 'hello32’

و بۆ زانینی ناوی به‌کارهێنه‌ر ئه‌وه‌ به‌کار ده‌به‌ین:

SELECT email, passwd, login_id, full_name
FROM table
WHERE  email = ‘[email protected]’ AND full_name LIKE ‘%bob%’

ده‌توانین ئه‌و کرداره‌ دووباره‌ بکه‌ینه‌وه‌ به‌ شێوه‌یه‌کی خێرا تا ناوی به‌کارهێنه‌ر و تێپه‌ڕه‌وشه‌ی ببینینه‌وه‌ به‌ به‌کارهێنانی سکریپتی پێرل.

جاریش وا هه‌یه‌ ئه‌و هه‌ژماره‌ی که‌ وێبگه‌که‌ به‌کاری ده‌هێنێت ده‌توانێ گۆڕانکاری به‌سه‌ر زانیارییه‌كان بکات یان بیانسڕێته‌وه‌، به‌ زانینی ناوی خشته‌که‌ یان زانینی ناوی خانه‌کانی ناو خشته‌که‌ ده‌توانین ئه‌و کردارانه‌ی خواره‌وه‌ ئه‌نجام بده‌ین:

ده‌توانین خشته‌که‌ به‌ ته‌واوی بسڕینه‌وه‌:

SELECT email, passwd, login_id, full_name
FROM table
WHERE  email = ‘x’; DROP TABLE table; --‘

هه‌روه‌ها ده‌توانین به‌کارهێنه‌ر بۆ خۆمان دروست بکه‌ین:

SELECT email, passwd, login_id, full_name
FROM table
WHERE  email = ‘x’;
INSERT INTO table (email, passwd, login_id, full_name)
VALUES (‘[email protected]’, ‘hello’, ‘me’, ‘my name’); --‘

ئه‌گه‌ر ئه‌و کرداره‌ی سه‌ره‌وه‌ بۆ دروستکردنی به‌کارهێنه‌رێک بۆ خۆمان سه‌ری نه‌گرت ده‌توانین به‌ گۆڕینی ئیمێلی یه‌ک له‌ به‌کارهێنه‌ره‌کان زانیاریی ئه‌و به‌کارهێنه‌ره‌ بۆ ئیمێلی خۆمان بنێرین به‌و شێوه‌ی خواره‌وه‌:

SELECT email, passwd, login_id, full_name
FROM table
WHERE  email = ‘x’;
UPDATE table
SET email=’[email protected]’
WHERE email=’[email protected]

پاشان به‌ به‌کارهێنانی ئیمێلی تازه‌ ([email protected]) زانیاریی ئه‌و به‌کارهێنه‌ره‌ بۆ ئیمێله‌که‌مان ده‌نێرین.

تا ئێره‌ زانیارییه‌کی زۆرمان وه‌رگرت ده‌رباره‌ی چۆنێتیی ئه‌نجامدانی ئه‌و جۆره‌ هێرشه‌ و مه‌ترسیی گه‌وره‌ی ئه‌و ڕێگه‌ ئاسانه‌ بۆ تێکدانی بنکه‌دراوه‌ی وێبگه‌که‌ت یان به‌رنامه‌که‌ت.

هێرشی (SQL injection) ڕێگه‌ و شێوازی زۆری هه‌یه ‌و، بۆ زانیاریی زیاتر سه‌ر له‌و به‌سته‌رانه‌ی خواره‌وه‌ بده‌ به‌ زمانی ئینگلیزی:

SQL Injection Attack by Example
Advanced SQL Injection
SQL Injection Cheat Sheet
SQL Injection

وەڵامێک بنووسە

پۆستی ئەلیکترۆنییەکەت بڵاوناکرێتەوە. خانە پێویستەکان دەستنیشانکراون بە *