Java代码审计关键点

admin 2022年11月9日12:44:34评论92 views字数 2567阅读8分33秒阅读模式

01

输入和输出流

这些用于将数据读入应用程序。它们可能是应用程序的潜在入口点。进入点可能来自外部来源,必须进行调查。这些也可以用于路径遍历攻击或DoS 攻击。

要搜索的字符串:

FilelnputStream

ObjectinputStream

FilterinputStream

PipedinputStream

SequencelnputStream

StringBufferinputStream

BufferedReader

ByteArrayinputStrean

javaio.FileOutputStream

File

OblectinputStream

PipedinputStream

StreamTokenizer

getResourceAsStream

java.io.FileReader

ava.io.FileWriter

java.io.RandomAccessFile

java.io.File

renameTo

Mkdir

02

Servlets

接口调用可能的参数/header/URL/cookie 篡改, HTTP 响应拆分和信息泄漏的途径。审计Http请求中获取的参数。

要搜索的字符串:

favax.servlet.

getParameterNames

qetParameterValues

qetParameter

getParameterMap

aetScheme

getProtocol

getContentType

getServerName

getRemoteAddr

getRemoteHost

getRealPath

getLocalName

getAttribute

getAttributeNames

getLocalAddr

getAuthType

getRemoteUser

getCookies

Secure

HttpServletRequest

getQueryString

getHeaderNames

getheaders

getPrincipal

getUserPrincipal

isUserinRole

getinputStream

getOutputStream

getWriter

addCookie

addHeader

setHeader

setAttribute

putValue

javax.servlet.http.Cookie

getName

getPath

getDomain

getComment

getMethod

getPath

getReader

getRealPath

getRequestURi

getRequestURL

getServerName

getValue

getValueNames

getRequestedSessionld

qetParameterValues

qetParameter

favax.servlet.

getParameterNames




03


跨站脚本

要搜索的字符串:

Javax.servlet. ServletOutputStream.print

strcpy


04

响应拆分

响应拆分允许攻击者通过在报头中添加额外的 CRLF来控制响应体。在 HTTP 中,报头和正文由 2 个 CRLF 字符分隔,因此,如果攻击者的输入用于响应报头,并且该输入包含2 个 CRLF字符,则 CRLF 之后的任何内容都将被解释为响应正文。在代码审计中,确保系统过滤任何被放入标头的信息。

要搜索的字符串:

javax.servlet.http.HttpServletResponsesendRedire

strcpy

setHeader


05

重定向

每当应用程序发送重定向响应时,都要确保所涉及的逻辑不会被攻击者的输入所操纵。尤其是当使用输入来确定重定向的目的地时。

要搜索的字符串:

sendRedirect

setStatus

addHeader

etHeader


06

SQL和数据库

搜索与  Java 数据库相关的代码应该有助于查明被审计的应用程序的持久层中涉及的类/方法。

要搜索的字符串:

java.sql.Connection.prepareStatement

java.sql.ResultSetgetObject

select

insert

java.sal.Statement.executeUpdate

java.sqLStatementaddBatch

execute

executestatement

createStatement

java.sal.ResultSet.getString

executeQuery

fdbc

java.sql.Statement.executeQuery

java.sql.Statement.execute

delete

update

java.sql.Connection.prepareCall





07

SSL

寻找利用  SSL 作为点对点加密媒介的代码。下面的片段应该指出  SSL 功能是在哪里开发的。

要搜索的字符串:

com.sun.net.ssl

SSLContext

SSLSocketFactory

TrustManagerFactory

HttosURLConnection

KeyManagerFactory



08

会话管理

要搜索的字符串:

getSession

invalidate

getId


09

命令交互

可能容易受到命令注入攻击或操作系统注入攻击。Java 连接到本机操作系统可能会导致严重问题,并可能导致服务器整体受损。

要搜索的字符串:

java.lang.Runtime.exec

java.lang.Runtime.getRuntime

getId


10

日志记录

通过审计应用程序中包含的以下代码,可能会遇到一些信息泄漏。

要搜索的字符串:

java.io.PrintStream.write

log4j

iLo

Lumberiack

MonoLog

qflog

just4loa

log4Ant

JDLabAgent




11


Ajax和JavaScript


查找 Ajax 的用法和可能的JavaScript 问题

要搜索的字符串:

document.write

eval

document.cookie

window.location

document.URL

document.URL




参考资料

《OWASP CODE REVIEW GUIDE 2.0 应用软件安全代码审查指南》

扫码加个好友进

cisp系列考证备考群

请备注进群

Java代码审计关键点

原文始发于微信公众号(HACK之道):Java代码审计关键点

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月9日12:44:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Java代码审计关键点http://cn-sec.com/archives/1399873.html

发表评论

匿名网友 填写信息