Skip to content

Commit 5d6da75

Browse files
authored
Merge pull request #28 from fduraibi/patch-1
Update 0xa8-injection.md
2 parents 036c895 + 05e22db commit 5d6da75

File tree

1 file changed

+41
-36
lines changed

1 file changed

+41
-36
lines changed

2019/ar/src/0xa8-injection.md

Lines changed: 41 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,53 +3,57 @@
33

44
<table dir='rtl' align="right">
55
<tr>
6-
<th>عوامل التهديد/ الاستغلال </th>
7-
<th> نقاط الضعف </th>
8-
<th> التأثير </th>
9-
<tr>
10-
<td> خصائص API : قابلية الاستغلال 3 </td>
11-
<td> الانتشار : 2 قابلية الاكتشاف : 3 </td>
12-
<td> التأثر التقني و تأثر الاعمال: 3 </td>
13-
</tr>
14-
<td>يقوم المهاجمون بإرسال بيانات ضارة من خلال واجهة برمجة التطبيقاتAPI وذلك بهدف حقنها وارسالها الى المفسر ومن صور طرق ادخال البيانات ( الادخال المباشر، التعليمات البرمجية، طرق ربط الخدمات ..الخ) متوقعين ارسالها الى المفسر. </td>
15-
<td> تعد أساليب الحقن أسلوب شائع لدى المهاجمين وغالباً ما توجد استعلامات جاهزة لمختلف أنواع اللغات SQL,LDAP,NoSQL ,OS Command ,XML parsers. حيث انه من السهل الكشف عن الثغرات عند قراءة الشفرة المصدرية للاكواد البرمجية باستخدامات عمليات المسح الالية او اليدوية.</td>
16-
<td> يمكن ان يؤدي الحقن الى الكشف عن المعلومات الغير مصرح بها او مسح وفقدان البيانات وفي بعض الأحيان قد يودي الى هجمات حجب الخدمة DOS، او اختراق الكامل للنظام.</td>
6+
<th>عوامل التهديد/ الاستغلال</th>
7+
<th>نقاط الضعف</th>
8+
<th>التأثير</th>
179
</tr>
18-
</table>
10+
<tr>
11+
<td>خصائص API : قابلية الاستغلال 3</td>
12+
<td>الانتشار : 2 قابلية الاكتشاف : 3</td>
13+
<td>التأثر التقني و تأثر الأعمال: 3</td>
14+
</tr>
15+
<tr>
16+
<td>
17+
يقوم المهاجمون بإرسال بيانات ضارة من خلال واجهة برمجة التطبيقات API وذلك من خلال حقنها بأي طريقة ممكنة ( مثل الإدخال المباشر و التعليمات البرمجية و طرق ربط الخدمات ...الخ) على أمل إرسالها إلى المفسر.</td>
18+
<td>تعتبر ثغرات الحقن منشرة وشائعة في استعلامات SQL و LDAP و NoSQL وأوامر أنظمة التشغيل و XML parsers و ORM. واكتشاف هذه الثغرات يعتبر سهل عن مراجعة الشفرة المصدرية. بإمكان المهاجمين استخدام أدوات الفحص.</td>
19+
<td>يمكن أن يؤدي الحقن إلى إفشاء المعلومات أو مسح وفقدان البيانات. كما يمكن أن يودي إلى حجب الخدمة DoS، أو اختراق كامل للنظام.</td>
20+
</tr>
21+
</table>
1922

2023
<h3 dir='rtl' align='right'>هل أنا معرض لهذه الثغرة؟</h3>
2124

22-
<p dir='rtl' align='right'> قد يكون واجهة برمجة التطبيقات API معرض للاستغلال بمثل هذه الهجمات عندما :
25+
<p dir='rtl' align='right'>قد تكون واجهة برمجة التطبيقات API معرضة للاستغلال بمثل هذه الهجمات عندما :
2326

24-
<p dir='rtl' align='right'>▪️ لا يتم تصفية البيانات او التحقق منها في حال كانت مقدمة من المستخدمين من طريق واجهة برمجة التطبيقات
27+
<p dir='rtl' align='right'>▪️ لا يتم تصفية البيانات أو التحقق منها في حال كانت مقدمة من المستخدمين من طريق واجهة برمجة التطبيقات.
2528
<p dir='rtl' align='right'>▪️ يتم استخدام البيانات بشكل مباشر مع SQL/NoSQL/LDAP queries, OS commands, XML parsers.
26-
<p dir='rtl' align='right'>▪️ لا يتم التحقق من صحة البيانات الواردة من أنظمة خارجية مثل (الأنظمة المرتبطة بالخادم) او تصفيتها او التحقق منها من قبل واجهة برمجة التطبيقات API قبل عملية استخدامها
27-
28-
<h3 dir='rtl' align='right'> امثلة على سيناريوهات الهجوم: </h3>
29+
<p dir='rtl' align='right'>▪️ لا يتم التحقق من صحة البيانات الواردة من أنظمة خارجية مثل (الأنظمة المرتبطة بالخادم) أو تصفيتها أو التحقق منها من قبل واجهة برمجة التطبيقات API قبل عملية استخدامها
30+
31+
<h3 dir='rtl' align='right'>أمثلة على سيناريوهات الهجوم:</h3>
2932

30-
<h4 dir='rtl' align='right'>السيناريو الاول: </h4>
33+
<h4 dir='rtl' align='right'>السيناريو الأول:</h4>
3134

32-
<p dir='rtl' align='right'> يتم استخدام الكاميرات للمراقبة في المنازل مصدر بيانات للإعدادات في المسار التالي /api/CONFIG/restore و من المتوقع ان يتم استقبال معرف فريد في أجزاء متعددة، فباستخدام برنامج فك وتحويل الشفرات البرمجية(decompile)، تمكن المهاجم من إيجاد طريقة لتعامل مع النظام بشكل مباشر ومن غير عوامل التصفية المقترحة.
35+
<p dir='rtl' align='right'>يقوم نظام جهاز التحكم الأبوي باستخدام المسار <code dir='ltr'>/api/CONFIG/restore</code> والذي يتوقع أن يستقبل معرف التطبيق appId في أجزاء متعددة.
36+
فباستخدام برنامج فك وتحويل الشفرات البرمجية(decompile)، يجد المهاجم أن المعرف appId يتم تمريره مباشرة للنظام ومن غير عوامل التصفية المقترحة:
3337

3438
```c
3539
snprintf(cmd, 128, "%srestore_backup.sh /tmp/postfile.bin %s %d",
3640
"/mnt/shares/usr/bin/scripts/", appid, 66);
3741
system(cmd);
3842
```
3943
40-
<p dir='rtl' align='right'> يسمح الامر التالي للمهاجم بإغلاق أي جهاز مصاب بتلك الثغرة البرمجية
44+
<p dir='rtl' align='right'> يسمح الأمر التالي للمهاجم بإغلاق أي جهاز مصاب بتلك الثغرة البرمجية
4145
4246
```
4347
$ curl -k "https://${deviceIP}:4567/api/CONFIG/restore" -F 'appid=$(/etc/pod/power_down.sh)'
4448
```
4549
46-
<h4 dir='rtl' align='right'>السيناريو الثاني : </h4>
50+
<h4 dir='rtl' align='right'>السيناريو الثاني :</h4>
51+
4752
53+
<p dir='rtl' align='right'>لدينا تطبيق قائم على وظائف CRUD للتعامل مع الحجوزات، تمكن مهاجم من التعرف على إمكانية حقن NoSQL من خلال الاستعلام بالمعرف الفريد للحجوزات <code>bookingId</code> وطلب الحذف بأمر كالتالي: <code dir='ltr'>DELETE /api/bookings?bookingId=678</code>
4854
49-
<p dir='rtl' align='right'> تطبيق للحجوزات قائم على وظائف CRUD، حيث قام المهاجم بالعديد من محاولات الفحص التي مكنته من معرفة اللغة المستخدمة في المفسر وهي NoSQL والتي استطاع من خلالها حقن المعرف الفريد للحجوزات bookingid باوامر من اجل مسح وحذف الحجوزات من خلال استخدام المسار التالي: DELETE /api/bookings?bookingId=678
55+
<p dir='rtl' align='right'>خادم واجهة برمجة التطبيقات (API Server) يستخدم الدالة التالية للتعامل مع طلبات الحذف:
5056
51-
<p dir='rtl' align='right'> حيث قام المهاجم بإرسال الطلب من خلال واجهة برمجة التطبيقات API للتعامل مع طلب الحذف الامر التالي:
52-
5357
```javascript
5458
router.delete('/bookings', async function (req, res, next) {
5559
try {
@@ -61,34 +65,35 @@ router.delete('/bookings', async function (req, res, next) {
6165
});
6266
```
6367

64-
<p dir='rtl' align='right'> قام المهاجم باعتراض الطلبات الخاصة بالمعرف الفريد bookinigid وقام بتغير طريقة الاستعلام والتي أدت الى حذف حجز مستخدم اخر.
68+
<p dir='rtl' align='right'>قام المهاجم باعتراض الطلبات الخاصة بالمعرف الفريد <code>bookingId</code> وقام بتغير أمر الاستعلام كما هو معروض بالأسفل مما أدى إلى حذف حجز يعود لمستخدم آخر:
6569

6670
```
6771
DELETE /api/bookings?bookingId[$ne]=678
6872
```
6973

70-
<h4 dir='rtl' align='right'>كيف أمنع هذه الثغرة؟ </h4>
74+
<h3 dir='rtl' align='right'>كيف أمنع هذه الثغرة؟ </h3>
7175

72-
<p dir='rtl' align='right'> لمنع عمليات الحقن انت بحاجة الى فصل الأوامر والتعليمات البرمجية عن الاستعلامات بشكل صحيح و امن.
76+
<p dir='rtl' align='right'> لمنع عمليات الحقن انت بحاجة إلى فصل الأوامر والتعليمات البرمجية عن الاستعلامات بشكل صحيح و امن.
7377

74-
<p dir='rtl' align='right'>▪️ قم بإجراء التحقق من صحة البيانات المدخلة باستخدام مكتبة موحدة وامنه وموثوقة ويتم صيانتها بشكل دوري.
75-
<p dir='rtl' align='right'>▪️ التحقق من صحة جميع البيانات المقدمة من المستخدم أو غيرها من البيانات الواردة من الأنظمة المتكاملة وتصفيتها.
76-
<p dir='rtl' align='right'>▪️ يجب تخطي الأحرف الخاصة باستخدام الصيغة المحددة للمفسر المستهدف.
77-
<p dir='rtl' align='right'>▪️ قم بتوفير بيئة امنه لواجهة برمجة التطبيقات API ذات استعلامات واضحة.
78-
<p dir='rtl' align='right'>▪️ حدد دائمًا عدد السجلات التي يتم إرجاعها لمنع تسريب البيانات للجميع في حالة نجاح عملية الحقن.
78+
<p dir='rtl' align='right'>▪️ قم بإجراء التحقق من صحة البيانات المدخلة باستخدام مكتبة موحدة وامنه وموثوقة ويتم صيانتها بشكل دوري.
79+
<p dir='rtl' align='right'>▪️ تحقق من صحة جميع البيانات المقدمة من المستخدم أو غيرها من البيانات الواردة من الأنظمة المتكاملة وتصفيتها.
80+
<p dir='rtl' align='right'>▪️ يجب التعامل مع الأحرف والرموز الخاصة باستخدام الصيغة المحددة للمفسر المستهدف.
81+
<p dir='rtl' align='right'>▪️ استخدم واجهة برمجة تطبيقات آمنة (safe API) ذات استعلامات واضحة.
82+
<p dir='rtl' align='right'>▪️ ضع حداً لعدد السجلات التي يتم إرجاعها لمنع تسريب البيانات بشكل كبير في حالة نجاح عملية الحقن.
7983
<p dir='rtl' align='right'>▪️ تحقق من صحة البيانات الواردة باستخدام عوامل تصفية كافية للسماح فقط بالقيم الصالحة لكل استعلام تم إدخاله.
80-
<p dir='rtl' align='right'>▪️ تعريف بشكل واضح ومحدد ماهي الانماط و انواع البيانات المستخدمة في الاستعلامات
84+
<p dir='rtl' align='right'>▪️ عرف بشكل واضح ومحدد الانماط و أنواع البيانات المستخدمة في الاستعلامات
8185

8286

83-
<h4 dir='rtl' align='right'>المراجع : </h4>
87+
<h3 dir='rtl' align='right'>المراجع :</h3>
8488

89+
<h4 dir='rtl' align='right'>OWASP :</h4>
8590

86-
[<p dir='rtl' align='right'>▪️ OWASP Injection Flaws </p>](https://www.owasp.org/index.php/Injection_Flaws)
91+
[<p dir='rtl' align='right'>▪️ OWASP Injection Flaws</p>](https://www.owasp.org/index.php/Injection_Flaws)
8792
[<p dir='rtl' align='right'>▪️ SQL Injection </p>](https://www.owasp.org/index.php/SQL_Injection)
8893
[<p dir='rtl' align='right'>▪️ NoSQL Injection Fun with Objects and Arrays </p>](https://www.owasp.org/images/e/ed/GOD16-NOSQL.pdf)
8994
[<p dir='rtl' align='right'>▪️ Command Injection </p>]( https://www.owasp.org/index.php/Command_Injection)
9095

91-
<h4 dir='rtl' align='right'>المصادر الخارجية : </h4>
96+
<h4 dir='rtl' align='right'>مصادر خارجية :</h4>
9297

9398
[<p dir='rtl' align='right'>▪️ CWE-77: Command Injection </p>](https://cwe.mitre.org/data/definitions/77.html)
9499
[<p dir='rtl' align='right'>▪️ CWE-89: SQL Injection </p>](https://cwe.mitre.org/data/definitions/89.html)

0 commit comments

Comments
 (0)