记某hw中通过佛站技巧拿下标靶的全过程
记一次某HW中的渗透测试
Author:远海@米斯特安全
0x01:
目标站点大致如下:
主页只有一个登录框。没有其他功能(找回密码,注册用户)等。
对于这类系统,开局肯定是跑一波弱口令。
熟悉的开局。。。但是这里根据请求包发现了某处敏感信息。XXCMS.config???
既然是CMS,那么可以根据github等相关网站查找其敏感信息。
根据相关信息,找到了某博主所发的一个文章,证明此系统内部功能是存在SQL注入漏洞的。这也使我更有把握拿下这个系统。
但是文章并没有写明POC。那么只好自己动手了
确定了该系统由XX公司开发且处于闭源状态。且上图说明是存在弱口令的。那么就可以根据以下流程尝试攻击。
大概思路如下:
既然目标系统无法登录,探测不了内部功能,那么可以从其他相同系统的站点入手,挖掘未授权漏洞等。
参考文章:https://xz.aliyun.com/t/8375 (本人所写)
0x02:
根据ICO图标查询,找到了一个俄罗斯站点。
从文件结构来看,确实是使用的相同系统。那么开始测试。
由于主页只有登录,还是先尝试了爆破弱口令账户的方法。
最终,成功得到一个弱口令账户
user 123456
但是这里需要注意的是。根据返回包来看。目标系统并未采用Session的机制来效验账户信息。而是采用了获取Cookie中的某个值(可能是加密的)来确认当前账户。
如果挖掘出了需要登录的漏洞,那么迂回至目标系统时,可以尝试通过Cookie来伪造身份信息。
本以为得到了账户就可以直接开始测试了。
但是登录过后的功能点几乎没有。。。
除了修改密码和退出登录。就没有其他可以测试的功能呢。。。这就非常头疼。
但是在Burp的history 页面中,发现了一处敏感AJAX请求
该接口文件返回了部分路径地址。那么可以直接访问这些路径进一步测试。
最终在某处发现了一处文件上传功能。
初步测试,确定存在为任意文件上传。
但返回包里并没有附带文件的路径。但是当我再次尝试上传时,系统弹出了一个提示
"File name already exists, please re-upload" = "文件名已存在,请重新上传"
那么可以很明确的确定。上传的文件并没有进行重命名的操作。尝试进行../跨目录
跨了4个目录,成功跳到根目录。
那么这就是一个CMS的通用漏洞。现在就可以直接使用该POC迂回到目标系统了。
但是目标系统得到的返回结果确是204
这里不知道是不是未登录的问题。想起刚刚测试的时候可以根据Cookie来伪造用户信息。将俄罗斯站点用户的Cookie复制了一份过来。再次上传
GG。还是204.那么可以说明这里存在用户效验了
0x03:
既然没办法上传,又不想搞SQL(麻烦)。干脆直接在俄罗斯站点上打了一个shell。尝试将代码下载下来审计。
追踪到刚刚可以上传shell的位置。
这里就可以直接看出,后端是获取Cookie中的某键取值来进行判断的。
当UserID和RoleID都为空时,返回204(也就是目标靶标所返回的值)
第40,41行可以看出,UserID和RoleID时进行过加密的,这里进行了解密操作。
this.UserID = CommonFunction.DESDec(this.UserID);
this.RoleID = CommonFunction.DESDec(this.RoleID);
这里追踪过去,得到加解密的方法
由于后端会将UserID进行判断,是否存在该用户。那么只需要刚俄罗斯站点上的UserId的值解密出来,根据其结构在目标站点上Fuzz一下就可以了。
UserID=Uhe4q0dwPJk=
解密结果为2
之所以在目标标靶上显示204可能是没有2这个用户。应该是有id为1的账户的
那么只需要将 1 加密一下就可以了。
为:
34dc0AHJKqA=
替换加密值尝试在目标站点上传。
成功拿下靶标
文章至此结束
看大佬帖子,看一次懊恼一次,为什么自己不会代码审计
tql
申请海神拿站路子为:方圆渗透。φ( ̄∇ ̄o)