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
来源地址:https://blog.csdn.net/weixin_40228200/article/details/128417430
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341