复制代码

javaweb代码审计思路

信任边界:
    信任边界是不同主题汇聚的位置,也就是说,是实体与不同权限实体之间交叉的位置,信任边界勾勒出哥哥主体之间的攻击界面。
不可信数据
    不同实体之间相互交互的数据统称为不可信数据
 
思路
正向数据流分析法-根据业务推代码
逆向数据流分析法-根据缺陷推业务
代码审计工具辅助法
检查关键组件法
自定义框架审计法
 
常见的不可信数据入口
getParameter                    //request类获取参数方法
getParameterNames         //获取参数名
getParameterValues          //获取参数值
getParameterMap            //获取参数map类型
getQueryString                 //获取url的value值
getHeader                         //获取http的请求头
getHeaderNames            //获取请求头名
getRequestUrl                //获取请求url
getCookies                        //获取cookie
getRequestedSessionId       //获取sessionid
getInputStream            //获取输入数据
getReader                        //获取请求内容
getMethod                //获取请求方法
getProtocol            //获取请求协议
getServerName        //获取服务名
getRemoteUser        //获取当前缓存的用户
getUserPrincipal        //获取用户指纹
 
URL重定向
javax.servlet.http.HttpServletResponse.sendRedirect
javax.servlet.http.HttpServletResponse.setStatus
javax.servlet.http.HttpServletResponse.addHeader
 
文件访问
java.io.FileInputStream;    //文件输入
java.io.FileOutputStream;    //文件输出
java.io.FileReader;        //文件读取
java.io.FileWriter;        //文件写入
 
危险函数/关键字
XXE:
SAXReader,DocumentBuilder,XMLStreamReader
 
FILE:
MultipartFile,createNewFile,FileInputStream
 
SSRF:
HttpClient,URL,ImagelO,HttpURLConnection,OkHttpClient
 
SQL:
Statement,PrepareStatement,sql,$,hql
 
EXEC:
getRuntime.exec,processBuilder.start
 
其他自定义框架审计思路-如PE案例
科蓝的PE框架,该框架是目前国内网银使用比较多的,该框架的特点:
1.所有字段格式使用style样式表限制
2.数据库使用mybatis框架
3.程序使用spring等较为成熟的框架
 
正向数据流分析(可能会遗漏隐蔽接口
根据业务找漏洞
请求与业务逻辑的映射关系/可控变量
    SpringMVC:@RequestMapping("Login.do")
    Struts2:struts.xml中action与view的对应
业务功能跟踪审计
    /per/ptransfer.BookingTransferetailQry.do?jnlNo=131890
    搜索关键url,定位源码位置,分析源码
 
逆向数据流分析(可能会找到漏洞无法利用)
根据漏洞找业务(根据关键字找漏洞)
针对常规漏洞(指纹识别度高):如sqli,cmdi,线程安全等
    Ibatis、Mybatis:使用xml做sql映射,搜索$、${、"+"可以定位
    Hibernate:代码中的HQL,搜索字符串拼接的关键字Concat,append,+
通读全文,查看程序入口文件
web.xml是整个应用的配置文件
Application-context.xml是spring框架公共配置文件
struts.xml是struts框架公共配置文件
    Context-param上下文初始参数
    listener 监听器
    Filter 过滤器
    session-config 会话设置
    servlet 应用程序
 
检查关键组件
检查程序使用的第三方组件是否存在漏洞:如struts2等
posted @ 2020-09-14 22:03  BU羡  阅读(325)  评论(0)    收藏  举报