Java代码审计关键点
2023-1-12 08:33:45 Author: HACK之道(查看原文) 阅读量:25 收藏

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

接口调用可能的参数/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系列考证备考群

请备注进群


文章来源: http://mp.weixin.qq.com/s?__biz=MzIwMzIyMjYzNA==&mid=2247507426&idx=2&sn=0799777e4f4b7c6e64b552a0f3f0e284&chksm=96d026e7a1a7aff1f1abb826b073c41d19046b5a13bc604bf4b083eed38a4e5a6075735c43d6#rd
如有侵权请联系:admin#unsafe.sh