渗透测试是一项吃经验、吃心性的工作,优秀的渗透测试人员需要在一线岗位不断作战、不断提升,对于各类应用的漏洞了然于心,这至少需要数年的积累才算是"入门"。人员也要有正确的三观,巨大的黑产、泄密利益是对人性的考验,从工作上来讲,碰到过很多大神,他们共同的特点就是拥有常人难有的耐心、细心,很多影响严重的漏洞都是从细枝末节进行展开的!
PART1从一个授权项目开始
前段时间接到授权的合法渗透测试任务,时间紧、任务重,速度开工!
初步分析后发现网站的图片路径存储在三级域名上:
http://p.xxx.*****.com/upload/***/****/**4615.jpg
URI 直接访问根路径发现title是“某某管理平台”但是由于丢失js文件导致页面无法加载,故对目录进行扫描
![40b5cb34ddcd407a6ae80e6d3874913e.png](https://i-blog.csdnimg.cn/blog_migrate/cf74180f37d1da56f46e7cf7d78e084c.jpeg)
PART2扫描一下并不是什么坏事
常规扫描后得到后台地址和一份后台 js 压缩包:
![0ea96457e224c3fc48c2a0d7d87cb9d0.png](https://i-blog.csdnimg.cn/blog_migrate/6839f12e2d5b8f784d8939529bb07267.jpeg)
优秀的扫描器加优秀的网站目录字典,是通往渗透测试项目成功的关键一步。
![format,png](https://i-blog.csdnimg.cn/blog_migrate/8720e81654644d8c937c1fe1ab296d0c.png)
访问后台页面,尝试登陆提示账号为11位手机号码,看到账号是11位手机号码,直接放弃了识别验证码爆破的想法,因为动作太大,可能性太小。
渗透测试是一项争分夺秒的工作,应以最有效、最快速的思路进行授权测试,太长的耽误及打草惊蛇反而引起管理员及时发现并隐藏问题(拔网线是流氓的手段!)。最后导致安全人员无法提出有效缺陷,渗透测试项目效果令客户难以满意。
PART3细心、耐心加经验的组合拳
只能通过别的思路进行下一步渗透,这种前端使用webpack打包的站点,每个功能基本都是以接口的形式调用,而且很多权限都控制不严,搞不好能找到后台接口,直接操作一些功能,于是先通过F2查看加载的所有js代码,果不其然在某处JS代码中发现泄露了329 多个可登录的账号。
![8e8fb862c719aa278e6450ad0fed93eb.png](https://i-blog.csdnimg.cn/blog_migrate/92f74868e7cf2bc17b4f08ccdcd76155.jpeg)
尝试多个弱口令无果,于是尝试从扫描到下载的js压缩包查找密码规则:
![b1b7cc59eea0a1e7c5aa1653e3c71094.png](https://i-blog.csdnimg.cn/blog_migrate/744ca2446e0ed7bded79493b46704605.jpeg)
密码为账号后四位数字+ *******
使用账号 1******1234 登陆后发现权限并不大,然后通过 js 获取到了别的接口地址,发现存在越权漏洞,通过JS接口越权访问到活动管理页面获取到管理员的登陆账号
![7c44391a1fe8a979d468ddf8ee416dd7.png](https://i-blog.csdnimg.cn/blog_migrate/b6a34445c9468f797a8344a1e8c68a3f.jpeg)
PART3安全皆为表象
利用网站资料管理功能直接上传webshell文件:
![d88c3d3cff2cc4def72952c6bbfc367d.png](https://i-blog.csdnimg.cn/blog_migrate/1bed51dcd83bb7305dcac1495bb513a4.jpeg)
任何系统的安全都是表面的安全,登入系统后获取webshell权限就是这么简单。
看起来很复杂的事情,可能只需要你以耐心、细心为基础进行经验积累,你可能会发现… 被注释的账号密码、接口、token、真实IP、开发环境…. 永远不知道程序员在JS中给你留下了什么样的惊喜~