某天A把我留下,想让我检测一下某站点的安全程度(有授权的,领导的任务罢了)
我想了没想就拒绝了,说,上次不是给你挖出过一个sql注入了吗
他说,不亏待你,有额外奖励的
不是因为奖励啊,只是单纯的喜欢渗透网站罢了
垃圾水文,轻喷
先访问某站(原谅我不放图片,不然无法过审)
看样子是一个平平无奇的网站
看到.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也叫停了我,遂暂停了测试
几个星期后的某天,A又提到了某站点,从它口中得知,该站点翻新了
那我上次的源码也约等于白费了。。。
果不其然,A又找到了我,我也是很《轻松》且《愉快》的接下了任务
我想了想,既然翻新了,那多多少少会加点东西
更新后发现了部分文章页面泄露了某editor的组件信息
抱着尝试的心态,来到了登录页面
结果发现,admin/admin一发入魂
四处翻看目录,偶然间发现一个压缩包
看了看大小,感觉像是源码,下载下来了
果然,泄露了很多secret,有关aliyun、钉钉、wechat、云盘等等
其中部分还与其它公司资产相关联
oss也能成功接管,也涉及了很多的敏感信息(不敢多说,保命要紧)
但还是高兴早了,class相关文件没打包下来。。意味着只能看jsp的源码,也就只有对找接口来说,会方便一些
通过配置文件查看,发现站点改成SSM框架,晕,别想与sql注入相遇了
上面下载下来的源码对接的是oa系统,而第一次的源码对应的是主站,所以我将重心又重新转回了oa系统
根据上方的源码可以看到增添了ueditor组件,1.4.3的jsp版本,相信大家都懂
又是通过新的源码,我找到了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,结束战斗
(本来想进内网的,但想了想,不节外生枝了,如果有机会再说)
站在前辈们的肩膀上,结合实际情况,巧妙了绕过了waf,也是蛮开心的
最后也是从A手中拿到了应有的奖励
安全,狗都不学