记一次对某站点的渗透测试(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手中拿到了应有的奖励

安全,狗都不学

点击收藏 | 11 关注 | 5
登录 后跟帖