首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XXE SSRF实践

XXE SSRF实践
EN

Security用户
提问于 2021-01-27 05:07:25
回答 1查看 208关注 0票数 1

我正在尝试实现一个简单的演示-以更好地理解XXE和SSRF技术。我在下面写了这两个文件,试图设置这两个文件。

目前,我拦截AJAX POST请求并通过附加以下方式修改数据(params):

代码语言:javascript
复制
 ]>
&xxe;

*我还尝试了另一个本地文件,而不是/etc/passwd;因为我不确定它由于www-data是否可以访问给定的文件

我已经读到PHP已经修复了内置解析器,默认情况下不允许外部实体。因此,我尝试添加以下内容;尽管我认为它是不可取的- libxml_disable_entity_loader(false);

尽管如此,我的XXE尝试似乎不起作用,我也不完全确定为什么?

xxe.php -

代码语言:javascript
复制
Post data






function postData(){
 var xHTTP = new XMLHttpRequest();
 var params = "<?xml version='1.0'?><entry><row>1</row><ex>a</ex><row>2</row><ex>b</ex></entry>";

 xHTTP.onreadystatechange = function(){
  if(this.readyState == 4){
   console.log(xHTTP.responseText);
  }
 };
 
 xHTTP.open("POST", '/xxe_post_handler.php', true);
 xHTTP.setRequestHeader("Content-Type", "application/xml");
 xHTTP.send(params);
}

xxe_post_handler.php -

代码语言:javascript
复制
children() as $child){
  printf("XML child: %s\n", $child);
 }

 $xmlDOM = new DOMDocument();
 $xmlDOM->loadXML($postData);

 $xD = $xmlDOM->documentElement;
 foreach($xD->childNodes AS $xN){
  print $xN->nodeName . " = " . $xN->nodeValue . "
";
 }
}
?>
EN

回答 1

Security用户

发布于 2021-01-27 21:18:19

我通过youtube的教程找到了我的问题https://youtu.be/JI0daBHq6fA?t=145的答案

唯一的修改就是将这些LIBXML_NOENT参数添加到loadXML函数(file - xxe_post_handler.php)中。https://www.php.net/manual/en/libxml.constants.php

例如- $xmlDOM->loadXML($postData,LIBXML_NOENT);

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/243890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档