【愚公系列】2023年06月 攻防世界-Web(wife_wife)

文章目录

  • 前言
  • 一、wife_wife
    • 1.题目
    • 2.答题


前言

JavaScript原型链污染是一种黑客攻击方式,利用JavaScript中的原型继承链来污染一个对象的原型继承链,从而影响整个应用程序的执行逻辑。攻击者会利用一些漏洞或者不恰当的代码实现,将恶意代码注入到原型对象中,然后通过继承链的方式将恶意代码传递给整个应用程序。

攻击者通常将恶意代码注入到全局对象或者重要对象的原型中,例如Object.prototypeArray.prototype等,从而污染整个应用程序。JavaScript原型链污染攻击常见的案例有:

  1. jQuery Prototype Pollution漏洞:攻击者通过修改jQuery的jQuery.fn.extend方法来污染Object.prototype,使得在后续的代码中,可以在任何位置调用Object.prototype中的方法,从而导致安全漏洞。
  2. npm原型链污染漏洞:攻击者通过在package.json中设置恶意依赖包的__proto__属性,或者通过在依赖包的代码中利用Object.assign()函数来污染原型链,从而实现攻击。例如,攻击者可以通过在依赖包中注入getset方法来盗取用户的敏感信息。
  3. AngularJS c o n t r o l l e r P r o v i d e r 漏洞:攻击者可以利用 controllerProvider漏洞:攻击者可以利用 controllerProvider漏洞:攻击者可以利用controllerProvider来动态加载控制器,从而污染原型链,并实现XSS攻击、跨站请求伪造(CSRF)和其他安全漏洞。攻击者可以通过注入恶意代码来改变原型链,从而实现攻击。

JavaScript原型链污染攻击是一种非常危险的黑客攻击方式,开发者应该注意代码的安全性,并尽可能避免使用全局对象或者原型链的方式来定义函数或者变量。

JavaScript原型链污染案例

baseUser = {
    a:1
}
user = {
    a:2,
    b:1,
    __proto__:{
        c:3
    }
}
 
// 这个函数的作用:浅复制一个对象,第一个参数位是对象的内容,后面的参数位是多个对象内容叠加进去,进行复制出一个全新的对象
let newUser = Object.assign({}, baseUser, user)  
// 无污染,结果正常
console.log(newUser)  // {a: 2, b: 1}  
// 无污染,结果正常
console.log(newUser.__proto__)  // {constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ,}

后端服务器是JavaScript,我们通过post发送过去的 json是字符串,JavaScript需要通过JSON.parse()函数才能把 json字符串转成对象

baseUser = {
    a:1
}
 
// 这次使用函数把json字符串转成对象,就出问题了,
user = JSON.parse('  {"a" : 2 , "b" : 3 , "__proto__" : { "c" : 4 }}  ')
// 这个函数的作用:浅复制一个对象,第一个参数位是对象的内容,后面的参数位是多个对象内容叠加进去,进行复制出一个全新的对象
let newUser = Object.assign({}, baseUser, user)
 
 
console.log(newUser)  // {a: 2, b: 1}  ,__proto__是隐藏属性,是不会直接显示的
console.log(newUser.__proto__) // {c: 4}  ,但是一打印就出来了
console.log(newUser.c) // 4  ,已经被污染了,这个属性是一直存在的

一、wife_wife

1.题目

【愚公系列】2023年06月 攻防世界-Web(wife_wife)_第1张图片

2.答题

打开题目看到以下页面

【愚公系列】2023年06月 攻防世界-Web(wife_wife)_第2张图片
进行原型链污染测试
【愚公系列】2023年06月 攻防世界-Web(wife_wife)_第3张图片

注册了管理员账号后,进去之后

【愚公系列】2023年06月 攻防世界-Web(wife_wife)_第4张图片

得到flag:CatCTF{test_flag_h0w_c@n_I_l1ve_w1th0ut_nilou}

你可能感兴趣的:(#,CTF-攻防世界-WEB,前端,javascript,开发语言,网络安全,安全)