- Hook 函数列表
- Java 版本
- 攻击检测
- 基线检查
- 服务器启动检测点
- Tomcat/Jetty/JBoss/Resin/WebSphere 通用
- Resin 服务器
- Jetty 服务器
- WebSphere 服务器
- PHP 版本
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 版本
攻击检测
| 检查内容 | 方法名称 |
|---|
| webshell callable | array_walk |
| array_map |
| array_filter |
| ReflectionFunction::__construct |
| 命令执行 | passthru |
| system |
| exec |
| shell_exec |
| proc_open |
| popen |
| pcntl_exec |
| 命令执行(webshell) | passthru |
| system |
| exec |
| shell_exec |
| proc_open |
| popen |
| pcntl_exec |
| 目录遍历 | dir |
| scandir |
| opendir |
| XSS(echo) | echo |
| 文件读取 | file |
| readfile |
| file_get_contents |
| fopen |
| SplFileObject::__construct |
| 文件写入 | file_put_contents |
| fopen |
| SplFileObject::__construct |
| 文件写入(webshell) | file_put_contents |
| 文件拷贝 | copy |
| 文件移动 | rename |
| 文件上传 | move_uploaded_file |
| 文件包含 | include |
| 文件运行(webshell) | eval |
| assert(仅PHP5) |
| SQL注入 | mysql_query(仅PHP5) |
| mysqli_query |
| mysqli::query |
| mysqli_real_query |
| mysqli::real_query |
| mysqli_prepare |
| mysqli::prepare |
| PDO::query |
| PDO::exec |
| PDO::prepare |
| pg_query |
| pg_send_query |
| pg_prepare |
| SQLite3::query |
| SQLite3::exec |
| SQLite3::querySingle |
| SSRF | curl_exec |
基线检查
| 检查内容 | 方法名称 |
|---|
| 数据库连接账号 | mysql_connect (仅PHP5) |
| mysql_pconnect (仅PHP5) |
| mysqli::__construct |
| mysqli::connect |
| mysqli_connect |
| mysqli::real_connect |
| mysqli_real_connect |
| PDO::__construct |
| pg_connect |
| pg_pconnect |