0%

66WEB攻防-JAVA安全1

思维导图

41WEB攻防

知识点:

  • 75、Java安全-SQL注入-JDBC&MyBatis
  • 76、Java安全-XXE注入-Reader&Builder
  • 77、Java安全-SSTI模版-Thymeleaf&URL
  • 78、Java安全-SPEL表达式-SpringBoot框架

章节点:

Web层面:Web2.0 & Web3.0
语言安全:JS,ASP,PHP,NET,Java,Python等(包含框架类)
OWTOP10:注入,文件安全,XSS,RCE,XXE,CSRF,SSRF,反序列化,未授权访问等
业务逻辑:水平垂直越权,支付签约&购买充值,找回机制,数据并发,验证码&弱口令等
特殊漏洞:JWT,CRLF,CORS,重定向,JSONP回调,域名接管,DDOS,接口枚举等
关键技术:POP链构造,JS逆向调试,NET反编译,JAVA反编译,代码解密,数据解密等
Web3.0:未待完续筹备中….

JAVA安全

https://github.com/bewhale/JavaSec
https://github.com/j3ers3/Hello-Java-Sec
https://mp.weixin.qq.com/s/ZO4tpz9ys6kCIryNhA5nYw

Java安全-SQL注入-JDBC&MyBatis

JDBC

  • 1、采用Statement方法拼接SQL语句
  • 2、PrepareStatement会对SQL语句进行预编译,但如果直接采取拼接的方式构造SQL,此时进行预编译也无用。
  • 3、JDBCTemplate是Spring对JDBC的封装,如果使用拼接语句便会产生注入
    安全写法:SQL语句占位符(?) + PrepareStatement预编译

MyBatis

        MyBatis支持两种参数符号,一种是#,另一种是$,#使用预编译,$使用拼接SQL。

  • 1、order by注入:由于使用#{}会将对象转成字符串,形成order by “user” desc造成错误,因此很多研发会采用${}来解决,从而造成注入.
  • 2、like 注入:模糊搜索时,直接使用’%#{q}%’ 会报错,部分研发图方便直接改成’%${q}%’从而造成注入.
  • 3、in注入:in之后多个id查询时使用 # 同样会报错,从而造成注入.

代码审计案例:inxedu后台MyBatis注入

Java安全-XXE注入-Reader&Builder

        XXE (XML External Entity Injection), XML外部实体注入,当开发人员配置其XML解析功能允许外部实体引用时,攻击者可利用这一可引发安全问题的配置方式,实施任意文件读取、内网端口探测、命令执行、拒绝服务等攻击。
-XMLReader
-SAXReader
-SAXBuilder
-Unmarshaller
-DocumentBuilder

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* 审计的函数
* 1. XMLReader
* 2. SAXReader
* 3. DocumentBuilder
* 4. XMLStreamReader
* 5. SAXBuilder
* 6. SAXParser
* 7. SAXSource
* 8. TransformerFactory
* 9. SAXTransformerFactory
* 10. SchemaFactory
* 11. Unmarshaller
* 12. XPathExpression
*/

Java安全-SSTI模版-Thymeleaf&URL

        SSTI(Server Side Template Injection) 服务器模板注入, 服务端接收了用户的输入,将其作为 Web 应用模板内容的一部分,在进行目标编译渲染的过程中,执行了用户插入的恶意内容。

Java安全-SPEL表达式-SpringBoot框架

        SpEL(Spring Expression Language)表达式注入, 是一种功能强大的表达式语言、用于在运行时查询和操作对象图,由于未对参数做过滤可造成任意命令执行。

欢迎关注我的其它发布渠道

-------------本文结束感谢您的阅读-------------