实战中的快速代码审计

2022-02-10 09:01:51 浏览数 (1)

文章来源|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)

0 人点赞