安全矩阵

 找回密码
 立即注册
搜索
查看: 973|回复: 0

实战|一次煎熬的HVV打点经历

[复制链接]

215

主题

215

帖子

701

积分

高级会员

Rank: 4

积分
701
发表于 2023-9-9 11:13:32 | 显示全部楼层 |阅读模式
免责声明

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号团队不为此承担任何责任。

文章正文
又到了一年一度的HW了,今天早早地看了攻防演练的目标列表和网段,然后挑了几个大的目标在看,我看我们队伍那些人都是跑去找小目标下手进内网,有些人为了拿分都是爱打小目标,进内网刷分!

大家都在想:“大目标那么好撸都搞了那么多年攻防演练了,容易搞别人早就搞了!”说的也是有那个理,但是哥就喜欢挑战有难度的东西,刷分有人去干就可以了,我现在比较喜欢撸些大的目标,内网复杂才有意思!继续找目标的信息,看了几个发现都没什么接口,而且waf栏得死死,用dirsearch扫都一片红,5分钟禁止访问,就算有shiro721又如何?


看了一会就它了,但是看了一会没发现存在什么太多有用的信息,匿名可以访问的接口就那两个,注册、忘记密码,这种大的公共事业单位的注册都是需要实名制,面容识别,真的恶心不行,而且还要各种信息一大堆,想直接注册估计是很麻烦了,身份证还得要是本地,又没有像样的社工库!现在想找一个本地的身份证都困难,注册这条路是不可行的,需要太多那些信息,而且还要人工审核通过才可以用,看来只能走下一条路了,忘记密码。

尝试通过忘记密码进行修改用户绑定的手机号码,先捉包看看接口的逻辑,猜一下代码的编写和后端代码类型及架构!有开发经验或者漏洞挖掘的白帽应该从路由中和包头等信息可以知道方法调用或者URL参数还是可以猜个大概,扫码直接跳到用户移动端登录页面!


跳转到移动端登录口。


通过官网扫描二维码获取到移动端登录地址,顺便找一下移动端的接口是否有其他问题,看了一遍,大概知道应该是java的weblogic+struts+sping组合,像这种的话,一般像top10那种真没sql注入可能很少或者基本没有,这么低级的问题如果有的话估计别人早就拿分了。

确实没有什么太多突破,然后看到忘记密码是否有逻辑问题,但是忘记密码好歹也得有个账号吧?那时候想起来目标有个教程视频,这里面是否可以提供点有用的信息呢?打开目标网站教程视频,看了好一会,果然可以获取到网站测试阶段的一些测试数据,这些数据估计是目标单位给新员工或者企业用户或者普通民众演示的测试账号,通过这方式收集到了某公司人员的敏感信息身份证和用户名(这个在护网期间信息收集的重要性就凸出来了,经验很重要,一般人去收集信息怎么会看这种视频)。



漫长3分钟的视频看的眼花缭乱,拉快进电脑又太卡,哎!认真看了一次新手上路如何操作的使用视频,还好有点收获,下面是边看演示视频边截图,收集用户的账号、姓名、单位名称、身份证等信息,咋没有密码?你还想密码?密码自己想办法。


通过获取到用户业务员介绍业务的视频中获取到用户信息如下:

姓名:马子
账号:2xx2xx881xx
身份证:xx080xxxx01xxx2

上面那个几个测试了发现不存在了,已经删除掉,这个我怎么知道的?其实通过注册或者忘记密码填写身份证和个人信息看看,他会进行后端的校验和返回json数据判断即可。1或0就知道存不存在了,他们忘记密码过程中,如果账号是不存在的直接跳到另一个注册页面。

填入我们收集到的姓名、身份证,然后下一步。


选择手机验证码。


进行捉包时,发现如果是存在的账号是直接返回来手机号码的,这个有点意思。


我们现在手机号码、账号、身份证、姓名、单位名称都有了,现在看是通过忘记密码去重置用户密码看看是否可行,这样可以获取更多的访问接口了。


拦截请求,把手机号码改成自己的,然后再提交获取验证码经过第一关验证。


点击确认后进行第二步,我们这里把拦截请求,把手机号码改成自己的手机号码后再在burp suit的proxy替换数据替换进行持续替换,然后看返回来的json判断,防止等一下请求包中的签名不一致的,导致无法继续下一步去验证身份。


这里回调到另一个页面进行重置密码,在这里就是已经显示是我的手机号码了,设置密码后,再点击验证获取。然后再捉包,我们从第二步的请求发现,前段可以进行手机号码的篡改,用户存在+身份证对上,手机号码没校验只是对验证码进行校验,这个逻辑大家应该看得懂吧?很开心发现了逻辑问题,那就是说应该可以混到一个普通的前台用户。


密码终于重置成功!这里的chgType是判断是请求是来自web端还是App端,他们的接口有些许差别,这个也是可以重置密码的主要原因,我们看上面可以篡改手机号码就知道了,这里的逻辑问题是只需要姓名、身份证然后返回用户的加密手机号,然后再通过用户点击发送短信,我们就可以修改返回来的那段手机号码,填写自己的手机号码去接受验证码,然后完成下面那几步,然后在输入新密码,直接设置新密码登录。这里虽然简单几行字说完了,但是过程是很心酸的,我们测试的时候手机端对请求包做了签名,手机5分钟发送一次验证码一分钟有效期、有时候点了半天没发过来,一发过来又好几条短信都不知哪条有效、waf会话超时限制和频发提交、web端和移动端鉴别认证不一致的问题,就是拿同一个密码和账号、身份证等,手机端可以登陆和认证通过并返回token,但是web端怎么都登陆不上去,刚开始是浏览器不兼容,换了火狐、IE、Google、极速360,毛用都没有,只能使用卑微的手机端测试,有人问android模拟区装apk不可以用吗?那个apk真是难用,试了一下模拟器都快卡死电脑了,而且没钱买好的电脑,电脑也很卡,用个烂iPhonex发送到burp慢慢测!

这一步是篡改为自己的手机号码进行重置。



我们开始继续完成登录,通过官网二维码下载App。



直接跳到了苹果商店去下载App,我们把它下载下来再继续。


我们在登录的时候发现App不需要手机验证码校对,直接使用重置的密码进行登录。

姓名:马子
账号:xx011xxxxxx2
密码:Lxxxxxx5


用户登录成功,但是在web端依然是登录不了,一直说验证码过期,没办法,只能继续通过捉包去看看移动端的接口!


搞完这段已经要吃午饭了,吃完午饭回来再从web端试一下现在居然又可以了,我估计是有人在爆破这个目标导致反应不过来,难道也有人看上这里了?想着想着,不行!还是吃完饭就不休息了,赶紧搞下来,要不是搞了大半天不就完犊子了?


进了这个页面终于可以有点权限访问接口了。现在就是先找找有什么可以获取敏感信息或者上传、写文件、注入、下载源码jar包口可以,看到很多地方可以提交数据和文件,心里暗想着应该可以搞下了吧?

在用户个人中心处的下载中心处发现存在任意文件下载,这个时候肯定是先想去读/etc/shadow看看中间件是否降权,但是burp suit返回空白,那就懂了,降权了!虽然是可以读取到站点的数据库账号密码但是连不了,/etc/passwd暂时没啥卵用、weblogic启动sh文件只能一个挨着一个去读,直到找到源码才能柳暗花明又一村!

大概思路:
高权限——挖个上传或任意跨目录写入文件(找写shell或者计划任务反弹,这个得有root)、命令执行(直接反弹——内网)、代码执行(直接反弹——内网)。

权限低——读weblogic部署路径和serializedSystemIni.dat进行解密——console写shell(这种后面发现不可行,后台限制在内网)或者命令执行漏洞反弹、代码执行、目录遍历组合任意下载其他的等等。

刚开始是想读一下/etc/shadow文件,但是发现降权了,如果没有降权的话,就直接上我们老铁最喜欢用的招式,写计划任务反弹shell,这样就快速进入内网了,但是现实总是残忍的!遇到的复杂度比我们想想蛋疼很多!现在只能先网上搜索weblogic的配置文件部署路径和常见部署路径,但是weblogic有一个恶心人的地方就是他解压war包的时候生成的路径是一段随机字符串路径!这样的话基本上是很难在这护网几天时间可以爆破出来的,而且还有waf等,突然间有点思路断了!对于不懂weblogc架构的人来说很多时候实战遇到weblogc写Shell都是一个问题,很多时候写完了访问不了,一般都依靠console控制台来解决部署shell(老铁们如果有好的思路可以私信一下,求分享)!



weblogic的部署路径:



看了一下/etc/crontab下面的文件,发现计划任务定时执行python的文件,等一下看看是否可以覆盖这个文件。


为找到备份源码了,真是废了老大劲,翻遍了日志文件和其他各种文件,如果有个目录遍历就没那么蛋疼了!这里忘记截图了,将就一下吧,一个人忙不过来,现在开始下载代码!


现在有源码了,JD这几天有点傻傻的,用其它工具直接反编译再用notepad搜一下,开始读源码,先通过FileOutputStream这个类查找写文件的点。看看是否有直接getshell的方法没有。


发现很多的写入点都和E:\Desktop\源码
\xx-common-frontend-1.0.0-SNAPSHOT.jar.src\com\xx\cn\com\common\action\MyBaseAction.java的upload这个方法有关,所以搜索这个。


这个是他们的公用类,很多controller都继承了MyBaseAction这个类,现在我们找继承他的,而且我们有权限可以访问的,我们审计一下这个地方。







因为我们之前忘记密码重置到的用户。

用户名:马子
身份证:xx0801xxx2xxxx2
手机号码:136xxxxxx
密码:Lxxxxxxx5

因为用户为个人用户,所以只能找per模块才有权限访问,发现这个贷款业务的模块有调用到,E:\Desktop\源码\classes.src\com\yinhai\hfisp\netface\action\loan\PerLoanApplyAction.java



洞已经挖到了,我们现在结合之前的任意下载文件和密码重置的用户,因为这个漏洞需要个人账号登录状态。

验证一下Exp是否可以写进去,我们验证一下,文件确实写进去了,而且这个洞也确实可以用。




利用我们上线任意文件下载读取一下写入的文件是否成功,确认文件确实写进去了!


我们现在开始开始写入/usr/sbin/qemu-qa_check.py进行反弹进入内网。首先我们还是用python的ide编辑好代码,然后把代码放进burp suit的decoder进行url编码,防止tab等空字符被替换或者写入格式不对,Python格式不对无法执行!


把urlencode贴进exp写入文件处进行覆盖/usr/sbin/qemu-qa_check.py,当然我们覆盖前先备份一下,然后再写进去。



现在坐等shell反弹回来,很快shell就反弹回来服务器了。


总结:
这次打点着实很蛋疼,当然也学到好很多东西,从前期信息收集、逻辑漏洞挖掘、代码漏洞快速挖掘、覆盖计划任务文件、反弹提权,由于这个目标内网好大,redis空口令、内网网络设备、安全设备弱口令、数据库通用口令、服务器通用口令等,拿了10几台设备和服务器,分数当然也就刷刷上去了!

文章来源:freebuf转载来源:黑白之道如有侵权,联系删除。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 09:37 , Processed in 0.013755 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表