Hook 函数列表

本文档列出了我们挂钩的函数列表

Java 版本

攻击检测

其中,SQL注入检测点为 execute/executeUpdate/executeQuery/executeBatch/executeBatchInternal/addBatch 方法之一,具体请看我们在github的源代码,这里不在赘述

检查内容
方法名称

文件上传

org.apache.commons.fileupload.disk.DiskFileItem.setHeaders()

org.apache.commons.fileupload.FileUploadBase.parseRequest()

文件读取

java.io.FileInputStream(File file)

文件写入

java.io.FileOutputStream()

java.io.FileOutputStream(String name, boolean append)

文件重命名

java.io.File.renameTo()

文件遍历

java.io.File.list()

SSRF

org.apache.commons.httpclient.URI.parseUriReference()

org.apache.http.client.methods.HttpRequestBase.setURI()

com.squareup.okhttp3.HttpUrl.parse(String)

com.squareup.okhttp.HttpUrl.parse(String)

sun.net.www.protocol.http.HttpURLConnection.connect()

反序列化

java.io.ObjectInputStream.resolveClass

命令执行

java.lang.UNIXProcess.<init>

java.lang.ProcessImpl.<init>

OGNL 表达式执行

ognl.OgnlParser.topLevelExpression()

XXE

com.sun.org.apache.xerces.internal.util.XMLResourceIdentifierImpl()

org.apache.xerces.util.XMLResourceIdentifierImpl的setValues()

JSTL import

org.apache.taglibs.standard.tag.common.core.ImportSupport.targetUrl()

DubboRPC

com.alibaba.dubbo.rpc.filter.ContextFilter.invoke()

com.alibaba.dubbo.rpc.filter.GenericFilter.invoke()

SQL 注入

com.mysql.jdbc.StatementImpl

com.mysql.jdbc.PreparedStatement

com.mysql.cj.jdbc.PreparedStatement

org.sqlite.Stmt

org.sqlite.PrepStmt

org.sqlite.jdbc3.JDBC3Statement

org.sqlite.jdbc3.JDBC3PreparedStatement

oracle.jdbc.driver.OracleStatement

oracle.jdbc.driver.OraclePreparedStatement

com.microsoft.sqlserver.jdbc.SQLServerStatement

com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement

org.postgresql.jdbc.PgStatement

org.postgresql.jdbc1.AbstractJdbc1Statement

org.postgresql.jdbc2.AbstractJdbc2Statement

org.postgresql.jdbc3.AbstractJdbc3Statement

org.postgresql.jdbc3g.AbstractJdbc3gStatement

org.postgresql.jdbc4.AbstractJdbc4Statement

com.ibm.db2.jcc.am

com.ibm.db2.jcc.am.Connection

基线检查

检查内容
方法名称

数据库连接账号

com.mysql.jdbc.NonRegisteringDriver.connect()

com.mysql.cj.jdbc.NonRegisteringDriver.connect()

org.sqlite.JDBC.connect()

com.microsoft.sqlserver.jdbc.SQLServerDriver.connect()

org.postgresql.Driver.connect()

oracle.jdbc.driver.OracleDriver.connect()

com.ibm.db2.jcc.DB2Driver.connect()

服务器启动检测点

用途
方法名称

Tomcat

org.apache.catalina.startup.Catalina.start()

Jetty

org.eclipse.jetty.server.Server.doStart()

JBoss 4

org.jboss.system.server.ServerImpl.start()

JBoss 5

org.jboss.bootstrap.AbstractServerImpl.start()

JBoss 6

org.jboss.bootstrap.impl.base.server.AbstractServer.start()

Resin

com.caucho.server.resin.Resin.initMain()

WebSphere

org.eclipse.core.launcher.Main.run()

Tomcat/Jetty/JBoss/Resin/WebSphere 通用

用途
方法名称

preRequest

apache.catalina.connector.CoyoteAdapter.service()

request

apache.catalina.core.ApplicationFilterChain.doFilter()

缓存body

org.apache.catalina.connector.InputBuffer.readByte(int)

org.apache.catalina.connector.InputBuffer.read(byte[],int ,int)

HTML 注入

org.apache.catalina.connector.OutputBuffer.close()

Resin 服务器

用途
方法名称

preRequest

com.caucho.server.http.HttpRequest.handleRequest()

com.caucho.server.http.HttpRequest.handleResume()

request

com.caucho.server.dispatch.ServletInvocation.service()

com.caucho.server.dispatch.ServletInvocation.doResume()

缓存body

com.caucho.server.connection.ServletInputStreamImpl.read(int)

com.caucho.server.connection.ServletInputStreamImpl.read(byte[],int ,int)

com.caucho.server.http.ServletInputStreamImpl.read(int)

com.caucho.server.http.ServletInputStreamImpl.read(byte[],int ,int)

HTML注入

com.caucho.server.connection.AbstractHttpResponse.finish()

com.caucho.server.connection.AbstractHttpResponse.finishInvocation()

com.caucho.server.http.AbstractHttpResponse.finish()

com.caucho.server.http.AbstractHttpResponse.finishInvocation()

Jetty 服务器

用途
方法名称

preRequest

org.eclipse.jetty.server.Server.handle()

request

org.eclipse.jetty.server.handler.HandlerWrapper.handle()

缓存body

org.eclipse.jetty.server.HttpInput.read(int)

org.eclipse.jetty.server.HttpInput.read(byte[],int ,int)

HTML注入

org.eclipse.jetty.server.HttpOutput.close()

WebSphere 服务器

用途
方法名称

preRequest

com.ibm.ws.webcontainer.WebContainer.handleRequest()

request

com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters()

缓存body

com.ibm.ws.webcontainer.srt.http.HttpInputStream.read(int)

com.ibm.ws.webcontainer.srt.http.HttpInputStream.read(byte[],int ,int)

HTML注入

com.ibm.ws.webcontainer.srt.SRTServletResponse.finish()

PHP 版本

攻击检测

基线检查

Last updated