iwebsec靶场 XXE关卡通关笔记

 iwebsec靶场xxe关卡通关笔记 iwebsec靶场 XXE关卡通关笔记_第1张图片     

XML外部实体注入简称XXE漏洞。XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义,文档元素。

内部声明是直接在XML文件内部声明的,对于安全人员来说基本没用。

外部声明是引用XML以外的文件,有风险。

外部实体注入可能导致任意文件读取,系统命令执行,内网端口探测,攻击内网网站等等。

iwebsec靶场 XXE关卡通关笔记_第2张图片

第一关

如下所示,通关docker查看xxe目录下的index.php源码,内容如下



	
		XXE漏洞
	
	

XXE漏洞

input xml

loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD); $creds = simplexml_import_dom($dom); $username = $creds->username; $password = $creds->password; } else{ exit(); } ?> "; ?>

在以上代码中,file_get_contents函数读取php://input传入的参数,但是参数没有经过过滤直接就被loadxml函数中调用并且输出了username值,从而导致XXE漏洞的产生。

iwebsec靶场 XXE关卡通关笔记_第3张图片

由于使用php://input协议传入,故而参数可通过post传递。

基于此利用file://伪协议读取本地文件来加载外部实体(entity),而代码中涉及到变量username和password需要定义在xml参数中,我们在xml中使用element元素声明,如下所示


 由于username最后输出,故而而我们想获取的实体变量使用entiey来加载

(1)获取敏感信息(密码文件)

如果我们想获取/etc/passwd文件,最后post的参数如下所示

iwebsec靶场 XXE关卡通关笔记_第4张图片

效果如下所示

iwebsec靶场 XXE关卡通关笔记_第5张图片

 使用post参数将xml传入后,可以获取到系统的/etc/passwd文件

(2)获取根目录源码文件

如果我们想获取当前网站根目录下index.php的源码文件,传入参数如下所示

iwebsec靶场 XXE关卡通关笔记_第6张图片

 我们可以获取到index.php在base64编码后的内容,效果如下iwebsec靶场 XXE关卡通关笔记_第7张图片

使用base64解码进行解码

iwebsec靶场 XXE关卡通关笔记_第8张图片效果如下所示



  
	
    iwebsec 靶场漏洞库
    
    
	
    
    

    
    

  

  

    

    

iwebsec

此网站中集合了SQL注入、文件包含、命令执行、XXE、反序列化、SSRF、XSS、文件上传等常见的web漏洞环境

 (3)获取当前xxe目录源码文件

post参数为

iwebsec靶场 XXE关卡通关笔记_第9张图片

访问后如下所示

iwebsec靶场 XXE关卡通关笔记_第10张图片

然后通过base64解码即可查看到源文件。

第二关

利用XXE漏洞进行内网探测,如果端口开启那么请求会很快返回,如果端口关闭那么请求会非常慢。

(1)探测22端口是否开启

payload如下所示

iwebsec靶场 XXE关卡通关笔记_第11张图片

如下所示

iwebsec靶场 XXE关卡通关笔记_第12张图片

我们登录到容器中,通过netstat -ano|grep 22也确认确实打开了22端口

(2)探测23端口是否开启

接下来使用一个不存在服务的端口号23来尝试,如下所示通过 netstat -ano|grep 23可以确认这个端口处于关闭状态

payload如下所示

iwebsec靶场 XXE关卡通关笔记_第13张图片

效果如下所示,提示拒绝连接

iwebsec靶场 XXE关卡通关笔记_第14张图片

 第三关

内网应用攻击,这里可以用PHP expect模块被加载到了易受攻击的系统或处理XML的内部应用程序上,就可以执行如下的命令:


   
   
]>

&xxe;
test

利用xxe漏洞可以调用except://伪协议调用系统命令,不过这种需要PHP环境支持except扩展模块被加载,这样就可以利用它执行系统命令了。然而这种情况现在已经比较少见了,更多还是要利用其他漏洞来实现命令或代码执行。

 由于 PHP 的 expect 并不是默认安装扩展,如果安装了这个expect 扩展我们就能直接利用 XXE 进行 RCE

iwebsec靶场 XXE关卡通关笔记_第15张图片

如上所示当前iwebsec服务器的except扩展模块这个可执行漏洞并不存在,故而无法通过此XXE漏洞执行命令。

这里要强调一下,XXE EXCEPT可执行漏洞这种情况很少发生,但极少数情况下攻击者能够通过XXE执行代码,这主要是由于配置不当/开发内部应用导致的。需要黑客足够幸运,并且PHP expect模块被加载到了易受攻击的系统或处理XML的内部应用程序上,那么才可以执行命令。虽然iwebsec靶场提供了xxe漏洞,但是他的环境中并不是一个幸运的环境,故无法使用xxe except漏洞进行渗透。

你可能感兴趣的:(iwebsec靶场,php,XXE,iwebsec靶场)