今天写一个关于vulnhub上的关于XXE漏洞利用的一个靶场练习

0x01

概述:

XXE(XML External Entity)是指xml外部实体攻击漏洞。XML外部实体攻击是针对解析XML输入的应用程序的一种攻击。当包含对外部实体的引用的XML输入被弱配置XML解析器处理时,就会发生这种攻击。这种攻击通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。

首先肯定得先下载啊,这里我就不多说了,自己到vulnhub官网下载即可(百度搜官网),然后进去后搜索XXE,下载第一个。解压,安装,靶场布置完成。

0x02


首先我们发现,靶机开启以后是要登录,但是本题并没有给我们登录的账号和密码,所以,别想着去登录了(哈哈哈),那怎么办?
你可能会有疑问,我连靶场IP地址都不知道!
那就扫呗。。。
所以第一步,nmap扫描所在网段,我扫描结果如下:

首先有4个IP地址,你不可能一眼就看出来,去找开放80端口的主机,因为XXE要通过网站利用,我找到了192.168.1.72,试着登录一下,结果如下:

所以,到这里,我们就锁定了目标,接下来就是要利用XXE了。

0x03

接下来就要从网站入手了,首先扫描探针目录。


有猫腻!试着去查看一下相关目录,看有没有新的发现

这个没有,下一个。

这个有东西~~~,你可能又有疑问,那接下来做什么呢?你看看这个网页有什么东西?能够提交数据啊,那账号密码不是输入然后提交吗?所以啊,你接下来抓包分析一下,看它提交的数据有什么特点。burpsuite上场。
你瞧瞧这是什么?这就是提示信息啊,不用多说,直接xxe代码利用,这里代码我不多解释,如果想了解,去网上搜XXE漏洞利用,好好看一下原理,我这里主要复现靶场夺取flag的思路和过程。

下面这个图是我改完之后的图。


接下来base64解码。得到下面的代码内容:

<?phpsession_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>


这句话就是告诉你,flag在这里,哪里?这个目录下面去找找。好,那我们就去这个目录看看。

果然!base64解码,别我怎么知道base64解码,一般像这种有大小写的加密后的很多都是base64加密,做多了就有经验了。

它说,flag在这里,这啥啊?你会猜是不是又是base64加密了,我告诉你,不是,base64加密通常是都大写字母和小写字母,而这个里面只有大写字母,所以不是base64,那是什么呢?是base32,所以这里我们需要先将base32转换为base64,然后再解密base64,可得到我们能读懂的代码。



原来在这里,直接访问,看看有什么惊喜没有

接下来继续解码

$_[]++;$_[]=$_._;$_____=$_[(++$__[])][(++$__[])+(++$__[])+(++$__[])];$_=$_[$_[+_]];$___=$__=$_[++$__[]];$____=$_=$_[+_];$_++;$_++;$_++;$_=$____.++$___.$___.++$_.$__.++$___;$__=$_;$_=$_____;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$___=+_;$___.=$__;$___=++$_^$___[+_];$À=+_;$Á=$Â=$Ã=$Ä=$Æ=$È=$É=$Ê=$Ë=++$Á[];$Â++;$Ã++;$Ã++;$Ä++;$Ä++;$Ä++;$Æ++;$Æ++;$Æ++;$Æ++;$È++;$È++;$È++;$È++;$È++;$É++;$É++;$É++;$É++;$É++;$É++;$Ê++;$Ê++;$Ê++;$Ê++;$Ê++;$Ê++;$Ê++;$Ë++;$Ë++;$Ë++;$Ë++;$Ë++;$Ë++;$Ë++;$__('$_="'.$___.$Á.$Â.$Ã.$___.$Á.$À.$Á.$___.$Á.$À.$È.$___.$Á.$À.$Ã.$___.$Á.$Â.$Ã.$___.$Á.$Â.$À.$___.$Á.$É.$Ã.$___.$Á.$É.$À.$___.$Á.$É.$À.$___.$Á.$Ä.$Æ.$___.$Á.$Ã.$É.$___.$Á.$Æ.$Á.$___.$Á.$È.$Ã.$___.$Á.$Ã.$É.$___.$Á.$È.$Ã.$___.$Á.$Æ.$É.$___.$Á.$Ã.$É.$___.$Á.$Ä.$Æ.$___.$Á.$Ä.$Á.$___.$Á.$È.$Ã.$___.$Á.$É.$Á.$___.$Á.$É.$Æ.'"');$__($_);

这啥东西?其实这是PHP代码,接下来网上找个php在线工具,运行一下,看看有什么惊喜没。
结果如下:

PHP Notice:  Undefined variable: _ in /box/main.php on line 2
PHP Notice:  Use of undefined constant _ - assumed '_' in /box/main.php on line 2
PHP Notice:  Array to string conversion in /box/main.php on line 2
PHP Notice:  Undefined variable: __ in /box/main.php on line 2
PHP Notice:  Use of undefined constant _ - assumed '_' in /box/main.php on line 2
PHP Notice:  Use of undefined constant _ - assumed '_' in /box/main.php on line 2
PHP Notice:  Use of undefined constant _ - assumed '_' in /box/main.php on line 2
PHP Notice:  Use of undefined constant _ - assumed '_' in /box/main.php on line 2
PHP Notice:  Use of undefined constant _ - assumed '_' in /box/main.php on line 2
PHP Notice:  Undefined variable: Á in /box/main.php on line 2
PHP Parse error:  syntax error, unexpected '{', expecting ';' in /box/main.php(2) : assert code on line 1
PHP Catchable fatal error:  assert(): Failure evaluating code:
SAFCSP{xxe_is_so_easy} in /box/main.php on line 2


箭头标的地方就是flag
这个靶场从开始到发现flag就是这么多。

总结

总结一下这个靶场的整个过程

1:扫描端口,发现主机

2:扫描探针目录

3:burpsuite抓包分析

4:加密解密的对抗

5:跟着作者的提示,一步步走

vulnhub——XXE练习相关推荐

  1. vulnhub靶场-Hacker_Kid-v1.0.1

    1.靶机信息 靶机名称:Hacker_Kid-v1.0.1 靶机难度:中等 虚拟机环境:此靶机推荐使用Virtualbox搭建 目标:取得root权限 靶机地址:https://download.vu ...

  2. Hacker_kid-v1.0.1(vulnhub)

    中等难度的靶机,取得权限即可(提示:信息收集,不需要爆破) 此靶机存在的都是新兴的漏洞类型. 地址如下: https://download.vulnhub.com/hackerkid/Hacker_K ...

  3. VulnHub日记(八):Hacker Kid

    靶机介绍 参考链接:Hacker Kid Walkthrough - Vulnhub - Security - NepCodeX 虚拟机链接:Hacker kid: 1.0.1 ~ VulnHub 开 ...

  4. vulnhub靶场——Hacker-Kid-v1-0-1

    准备 攻击机: kali/win11 靶机: Hacker_Kid-v1.0.1 192.168.91.0 网段 NAT 下载链接: https://download.vulnhub.com/hack ...

  5. Vulnhub靶场——Hacker_Kid-v1.0.1

    1.概要 靶机下载地址:https://download.vulnhub.com/hackerkid/Hacker_Kid-v1.0.1.ova 攻击机地址:192.168.60.148 靶机地址:1 ...

  6. Vulnhub靶机:HACKER KID_ 1.0.1

    目录 介绍 信息收集 主机发现 主机信息探测 53 端口 网站探测 页面源代码 DIG信息收集 经典XXE漏洞 探测9999端口 SSTI模板注入 Capabilities 提权 发现具有Capabi ...

  7. java中xxe漏洞修复方法

    java中禁止外部实体引用的设置方法不止一种,这样就导致有些开发者修复的时候采用的错误的方法 之所以写这篇文章是有原因的!最早是有朋友在群里发了如下一个pdf, 而当时已经是2019年1月末了,应该不 ...

  8. java SAX 防xml注入,如何防止XML注入像XML Bomb和XXE攻击

    您是否尝试过 OWASP page的以下代码段? import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.P ...

  9. XXE漏洞检测及代码执行过程

    这两天看了xxe漏洞,写一下自己的理解,xxe漏洞主要针对webservice危险的引用的外部实体并且未对外部实体进行敏感字符的过滤,从而可以造成命令执行,目录遍历等.首先存在漏洞的web服务一定是存 ...

  10. switchyomega插件_CTF|你所关注的CTFer都在用的插件合集【附:XXE补给+CTF训练集】...

    不看后悔系列,建议收藏 相信大家对 CTF 都不陌生了,今天为大家带来了一系列 CTF 必备 Chrome 插件. CTF 可能很多人想学 CTF,但又怕零基础学不懂.其实,CTF 并没有那么难. C ...

最新文章

  1. 又双叒叕出事?微信 PC 版被曝扫描用户浏览器 cookies
  2. Examples_06_02(android)DDMS的data文件中没有显示文件。
  3. 冒泡排序算法_PHP冒泡排序算法(一)
  4. python合并excel文件关键字_python合并多个excel文件的示例
  5. HTML5调用redis,redis实现从数据库获取数据添加到html页面上
  6. 计算机组装维护文献,组装计算机论文,关于《计算机组装维护》课程教学相关参考文献资料-免费论文范文...
  7. 广州测试沙龙的问题。
  8. 【java】深入分析Java反射-动态代理 proxy
  9. nginx与IIS服务器搭建集群实现负载均衡(一)
  10. 如何安装和使用纯文本编辑器 vi/vim
  11. 802.11ax速览
  12. MyEclipse出现红色感叹号解决办法
  13. Linux进阶 | 万字详解Docker镜像的制作,手把手学会!
  14. python 爬网页通知_用Python实现一个爬取XX大学电费通知的小脚本
  15. java实现 mysql导入数据库_Java实现MySQL数据库导入
  16. 基于javaweb+mysql的个人日记管理系统
  17. 【译文】利用STAN做贝叶斯回归分析:Part 1 正态回归
  18. 30个HTML+CSS前端开发案例(二)
  19. 陌陌宣布改名“挚文集团”:旗下现有 App 名称保持不变
  20. 【滴滴出行】真题-地下迷宫

热门文章

  1. Tools-06 WinDbg快速入门使用——查找蓝屏原因,解决蓝屏!
  2. aspcms转php,aspcms转phpcms方法
  3. esp分区创建 linux_怎样向esp分区添加引导文件?
  4. Arduino ESP8266利用SPIFFS上传文件和查看文件
  5. 小程序源码:图片秒加水印制作生成
  6. electron安装报错: Electron failed to install correctly…的解决方案
  7. C++函数参数中的省略号
  8. 人大金仓(Kingbase)数据库配置注意事项
  9. lint-staged 自动修复格式错误
  10. 大表哥在csdn的第一篇博客