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

xxe-lab靶场安装和简单php代码审计

今天继续给大家介绍渗透测试相关知识,本文主要内容是xxe-lab靶场安装和简单php代码审计。

一、xxe-lab靶场简介

xxe-lab是一个使用java、python、php和C#四种编程语言开发的存在xxe漏洞的web小型靶场。利用该靶场可以简单研究xxe漏洞,并且对于这四种编程语言的xml解析器差异进行研究。
xxe-lab靶场代码托管在GitHub平台上,URL为:https://github.com/c0ny1/xxe-lab。页面如下所示:
在这里插入图片描述

二、php xxe-lab靶场安装

我们在GitHub上下载完成xxe-lab后,接下来直接将该靶场的php_xxe部分复制到本地搭建好的PHP环境下,就可以进行研究了。进入该目录后效果如下所示:
在这里插入图片描述

三、xxe-lab靶场PHP代码审计

接下来,我们简单来看一下xxe-lab靶场的靶场逻辑。
打开该目录下默认的index.html文件后,查看该文件源代码,可以看到在Login按钮下会触发javascript脚本的doLogin()函数,如下所示:
在这里插入图片描述
而JavaScript脚本的doLogin()函数如下所示:
在这里插入图片描述
从上图中可以看出,JavaScirpt脚本会将用户输入的username和password转化成xml格式的数据,并且利用ajax的方法提交,提交时xml格式的数据被当作Post数据包的内容进行提交。
来到ajax的目标doLogin.php文件,该文件源码如下所示:
在这里插入图片描述
在该PHP文件中,主要是接收POST请求的内容,并将其转化为XML对象,然后提取XML对象中的username和password字段。然后比对username和password是否相等。注意,在这个靶场中if else语句逻辑似乎出现了错误,相等时result返回的结果应该是0,而不相等时result返回的结果应该是1。
在上述代码中,关键函数如下:
1、libxml_disable_entity_loader(False)
这段代码意思是设置允许PHP加载外部实体,这也是本靶场的漏洞产生主要原因。在生产环境下,需要将这里的False改为True,即可避免产生XXE漏洞。
2、loadXML()
该函数可以将一个输入的字符串转化为DOMDocument对象。
3、simplexml_import_dom
该函数可以把DOM节点转化为SimpleXMLElement对象。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

相关文章:

  • Kibana:圣诞老人使用 Kibana Dashboards 驾驶他的雪橇!
  • 离线下载NLTK依赖包([WinError 10061] 由于目标计算机积极拒绝,无法连接)的解决方案
  • 基于matlab的MIMO-OFDM无线信道模型距离与路径损耗的仿真
  • 0.96寸OLED显示屏介绍续
  • 90后,27岁转行软件测试,从月入3000+到月薪过万,打开了人生新篇章~
  • 2022年安徽最新交安安全员考试模拟题及答案
  • C++【图】
  • 【信号与系统】傅里叶级数和周期信号过系统及MATLAB仿真
  • [洛谷]【深基15.习9】验证栈序列
  • NanoDet 源码解读(inference)
  • 面试必备:从常见的存储引擎到混淆的锁分类,请上车
  • SAP ABAP——SAP简介(二)【SAP主要产品时间线】
  • JavaScript 入门基础 / 概念介绍(一)
  • [2]MQTT基础知识
  • 基于ACO蚁群优化实现VRPTW问题求解matlab仿真
  • Zabbix与乐维监控对比分析(五)——可视化篇
  • 陈都灵现身海南国际电影节,新片《关索岭》票房有望超《阿凡达》
  • 【经典设计】构建业务架构的3大视图
  • leetcode997. 找到小镇的法官,同样的思路,被佬的操作秀到了_图篇
  • 基于FPGA的 TMDS 编码 及 HDMI 显示