原文链接:实战 | 记一次对某站点的渗透测试(bypass)
0x01、起因 某天A把我留下,想让我检测一下某站点的安全程度(有授权的,领导的任务罢了) 我想了没想就拒绝了,说,上次不是给你挖出过一个sql注入了吗 他说,不亏待你,有额外奖励的 不是因为奖励啊,只是单纯的喜欢渗透网站罢了 垃圾水文,轻喷 0x02、一战 先访问某站(原谅我不放图片,不然无法过审) 看样子是一个平平无奇的网站 看到.action后缀,立马想到java环境,多半是tomcat+struts2 直接掏出大宝贝一把嗦 很明显失败了 不慌,再看看别的啥的 扫了端口发现oa系统,通过信息收集手段获取账号密码 但我认为此处功能点没什么用,故暂时放弃(打脸了) 掏出lijiejie的神器一顿扫,也只发现了一处DS_Store文件泄露 棒极了,啥都没有 接下来还发现了一处反射xss 但这种漏洞要是交差,估计会被A骂死 身为聪明勇敢的读书人,怎么可能会放弃呢 备份文件,扫不到;目录爆破,啥都没有;中间件漏洞,不存在;端口服务开放,做梦呢 就连废弃系统都在嘲笑我 好在天无绝人之路,我在网站底部看到了一丝希望 此时我的思路是:fofa找相同系统站点------getshell------拖源码审计------再回到主站 直接fofa大宝贝一把梭 但站点少的可怜,拿lijiejie的神器跑了一轮,也没有啥泄露。。。 还是硬着头皮看了一眼 这次运气挺好,使用相同系统的站点存在struts2漏洞 果断上传拿shell 工具也有不准的时候,虽然显示上传失败了,但仍然能getshell 冰蝎连接成功!芜湖,起飞 但接下来这权限着实把我整吐了,systeminfo无法执行,rar也用不了,但我又懒得一个一个下载源码 因为本人太菜了,提权基本上不会 但身为聪明勇敢的读书人,怎么能放弃呢? 这里就去讨教了一下某前辈 对某前辈表示感谢 因为此处使用的windows环境,不太方便反弹shell,把木马换成了哥斯拉的马儿 哥斯拉下有个模块,方便操作shell 监听——nc直连——运行systeminfo文件。成功! 复制补丁号,然后找到了一下缺失的补丁 在此推荐某位师傅的网站:https://bugs.hacking8.com/tiquan/,方便查找 这里采用Potato提权 但生活总喜欢在为我关了一扇窗后,再用门狠狠的夹我的脑子 提权一直失败,换用了其它的方式也不行 后面才知道,原来SweetPotato源码中的默认路径与我的环境不符,要重新修改后再编译 编译完,再重新执行 成功提权! 然后就是源码打包,下载 (PS:用哥斯拉默认的源码打包,下载下来后文件会报错,而且缺失很多,也不知道为什么,但权限提升后用7z打包就好了,很奇怪。如果有知道的表哥,在下方留个联系方式) 接下来就是java源码审计了 大体目录是这样的。老规矩,先翻看一下配置文件,看一下它用了哪些框架 看样子是使用了Hibernate+Struts2+Spring框架 用jd-gui快速反编译class文件,获取java源码 将Hibernate和Struts2框架的相关配置文件、action对象、filter大体熟悉以后,就开始审计了 这里不得不吐槽一句,这个开发是真的懒,部分源码还留着与该站点相关的注释 既然是为了证明危害,那么基本是以getshell-sql-信息泄露为主 全文查找文件上传的地方 在搜索处发现了一处可以upload的地点 (此处图片找不到了,假装我是图片1) 查看对应java文件源码,发现无任何过滤 去掉注释,上传,不过不知道为什么会出现这种状况,查询了很多资料也没弄明白 直接构造接口上传,发现会有拦截,但本地源码审计无拦截,估计是某站点二次开发了 第一处水洞:账号密码可爆破 顺便看了一下oa系统 成熟的框架,也导致了sql注入和越权不存在 但是逻辑漏洞仍然存在,修改密码处未限制,能批量爆破账号改密码 后面因不可抗力,A也叫停了我,遂暂停了测试 0x03、二战 几个星期后的某天,A又提到了某站点,从它口中得知,该站点翻新了 那我上次的源码也约等于白费了。。。 果不其然,A又找到了我,我也是很《轻松》且《愉快》的接下了任务 第一处漏洞:弱口令 我想了想,既然翻新了,那多多少少会加点东西 更新后发现了部分文章页面泄露了某editor的组件信息 抱着尝试的心态,来到了登录页面 结果发现,admin/admin一发入魂 第二处漏洞:部分源码+密钥泄露 四处翻看目录,偶然间发现一个压缩包 看了看大小,感觉像是源码,下载下来了 果然,泄露了很多secret,有关aliyun、钉钉、wechat、云盘等等 其中部分还与其它公司资产相关联 oss也能成功接管,也涉及了很多的敏感信息(不敢多说,保命要紧) 但还是高兴早了,class相关文件没打包下来。。意味着只能看jsp的源码,也就只有对找接口来说,会方便一些 通过配置文件查看,发现学校改成SSM框架,晕,别想与sql注入相遇了 第三处漏洞:bool ssrf 上面下载下来的源码对接的是oa系统,而第一次的源码对应的是主站,所以我将重心又重新转回了oa系统 根据上方的源码可以看到增添了ueditor组件,1.4.3的jsp版本,相信大家都懂 第四处漏洞:bypass 多个waf--->getshell 又是通过新的源码,我找到了oa内一个极为隐蔽的上传点 话不多说,登录oa,找到页面开始上传 一开始我先传了个jpg,发现能正常解析 再传了个html,直接g了,显示Connection reset 我心里一惊,常规应该不会那么拦截,多半是有硬件waf 通过大小写上传SVG文件发现,此处应该采用了黑名单,心想,90%是稳了 然而后面的情况让我挺绝望的,光是后缀名这里我就绕过了很久 换行、多个等号、加点、脏数据、不常见后缀名、去掉引号绕过等组合手段,都无一例外的被干掉了 在这里苦苦绕了一晚上 也算是比较好玩吧,这里的开发有一个逻辑,你把content-type改成text/html,再把filename里改成xxx时(不加后缀,直接xxx),系统会自动帮你重命名成时间戳.xxx 于是乎,后缀名就成功绕过了 可内容拦截比较变态,出现一点java特征都不行,连赋值都会被干掉(el表达式除外) 既然是硬件waf,我想到了脏数据绕过,jsp内容中可以包含html的注释 最终经过测试,大约80w的脏数据可以成功绕过 可上传上去冰蝎马后,无法连接,估计是落地就被干掉了,怀疑存在AV,于是厚着脸皮向某前辈白嫖了免杀马 上传成功 这次连接成功,没有被杀掉 看了一眼,艹,全家桶啊简直 最后,象征性的whoami,结束战斗 (本来想进内网的,但想了想,不节外生枝了,如果有机会再说) 0x04、结尾 站在前辈们的肩膀上,结合实际情况,巧妙了绕过了waf,也是蛮开心的 最后也是从A手中拿到了应有的奖励 安全,狗都不学
|