文章来源|MS08067 红队培训班 第5期
本文作者:山(红队培训班5期学员)
目录
步骤一 获取源码
1. F12-开发者工具
2. 源码网站
3. 网站找盗版源码
4. 简单粗暴法
5. 家里有矿
6. dirsearch
步骤二 快速审计
1. 傻瓜式工具
2. 组件入手
步骤一 获取源码
1. F12-开发者工具
1.1 思路一
看是不是一个CMS。
1.2 思路二
js代码里面可能有些注释直接标注了username和password,或者账号密码配对是在前端验证而不是后端验证,也就是说直接能在js里看到if username=xxx, password=xxx:
1.3 思路三
title在FOFA搜,有很多结果就说明搜出了对的CMS名称,搜索格式:body:"XXX" XXX就是js代码,或者URL里面 ?后面的部分
2. 源码网站
https://github.com/
或者
https://gitee.com/
搜索扫出的CMS名称
3. 网站找盗版源码
3.1 https://down.chinaz.com/
3.2 https://bbs.52jscn.com/
4. 简单粗暴法
渗透过程中获取目标权限后,直接拖源码下来
5. 家里有矿
官网买
6. dirsearch
工具下载地址:https://github.com/maurosoria/dirsearch
FOFA搜一个CMS,扫出一堆URL,创建并放到url.txt中,将url.txt放到dirsearch目录下,用 dirsearch -l 指令去扫。哪个运维把备份文件压缩包放到web目录下的,就可以被扫出来,备份文件压缩包里就是CMS源码。拖出来就可
步骤二 快速审计
1. 傻瓜式工具
veraCode: https://download.csdn.net/download/hkaco2012/4116970
fortify: https://github.com/laravel/fortify
2. 组件入手
2.1 新模式:maven
pom.xml就是目标的弱点图谱!第三方的包最可以导致RCE
尤其是见到commons-collections commons-beautils 就可能有反序列化漏洞
或者dependency的每一项都可以在搜索引擎搜“XXX漏洞”
rabbitmq或者什么mq,一般是4369端口,weblogic是7001端口。不只局限于80端口
2.2 旧模式
project有lib文件夹,里面会有组件列表(一堆jar包)。而不是都会有pom.xml的。lib是静态引入,pom.xml是动态引入
2.3 SQL注入
框架发展史
第一阶段 SSH: Spring Hibernate struts
第二阶段 SSM: spring mybatis-持久层 springmvc
springboot(是SSM的封装) springcloud(多个springboot)
不存在注入的情况:
mybatisplus, #{}: ”SQL注入,我们是你的破壁人“
mybatisplus jar包:自动编写SQL语句,不会存在用户编写SQL语句的情景,所以不会有SQL注入的问题
存在注入的情况:
但如果是mybatis写SQL,还是存在SQL注入的可能,情景如下:
1、 xml:folder/.xml,程序员所有的SQL语句全部放到xml文件中
2、 源代码
#{} :预编译解决了SQL注入问题,用这方式来接参数:例:#{id},不存在SQL注入漏洞
{}:存在SQL注入问题,例:{id'} 可能就会报错了
挖漏思路
所以IDEA全局搜索 ${ 找到就说明有SQL注入
但是处于表名处,则不一定:
select * from ${表名},往上查,如果是是用户可控的,则存在SQL注入;如果是写死的,就不存在SQL注入
情景:往上查,参数--方法,到头了就双shift继续往上找,比如下面这样到头了,这算是MVC 用户输入,可控,所以存在漏洞
2.4 文件上传漏洞
SpringBoot: "文件上传,我是你的破壁人"
不存在漏洞的情况:
白盒角度:如果是springboot的jar包或者pom.xml里面有springboot:
黑盒角度:如果web指纹识别看到springboot:
则不存在文件上传的漏洞,因为springboot不解析.jsp文件,你上传上去之后,URL访问这个jsp的时候,浏览器会把jsp内容直接打印出在页面上
存在漏洞的情况:
双shift:搜upload或者filename 找.jsp结尾的。(.js的不行,js是前端代码)
案例
不对后缀名进行校验
2.5 XSS
框架发展过史
前端框架演进过程:js-->jquery-->layui-->bootstrap-->vue(VUE作为新型前端框架,采用预编译的技术解决了XSS的问题)
不存在漏洞的情况:
VUE, XSSfilter: "XSS,我们是你的破壁人"
前端采用VUE 或者 react, angular框架,抑或是后端代码对输入采用了XSSFilter机制过滤的话,就不存在XSS注入漏洞
数据运转流程:
前端--> -后端(这个步骤中也可以拦截,双shift搜索xssfilter,java官方给的解决方案)->数据库 数据完成存储 后端请求数据库,数据库响应,值返回前端(这个阶段可以拦截,VUE执行预编译,防止浏览器渲染XSS)