JAVA攻防-常规漏洞&SQL注入四类型&XXE引用点&RCE原生&框架URL跳转&URL处理类

Ethan医生3周前WEB安全39

 Java攻防-常规漏洞-注入&RCE&XXE

 Java攻防-常规漏洞-跳转&SSRF&FILE

#相关靶场:

https://github.com/bewhale/JavaSec

https://github.com/whgojp/JavaSecLab


image.png

https://github.com/j3ers3/Hello-Java-Sec

 

SQL注入:

-JDBC

1、采用Statement方法拼接SQL语句

2PrepareStatement会对SQL语句进行预编译,但如果直接采取拼接的方式构造SQL,此时进行预编译也无用。

3JDBCTemplateSpring对JDBC的封装,如果使用拼接语句便会产生注入

4、自定义过滤(黑白名单)

安全写法:SQL语句占位符(?+ PrepareStatement预编译

 

-MyBatis

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

1、order by注入:由于使用#{}会将对象转成字符串,形成order by "user" desc造成错误,因此很多研发会采用${}来解决,从而造成注入.

2、like 注入:模糊搜索时,直接使用'%#{q}%' 会报错,部分研发图方便直接改成'%${q}%'从而造成注入.

3、in注入:in之后多个id查询时使用#同样会报错,从而造成注入.

 

-Hibernate

1、setParameter:预编译

2、username=:username 预编译

 

-JPA

1、username=:username 预编译

总结

黑盒:正常发现和利用即可

白盒:

1、确定数据库通讯技术

2、确定类型后找调用写法

3、确定写法是否安全(预编译

 

XXE注入:

1XMLReader parse

2SAXParser parse

/**

* 审计的函数

* 1. XMLReader

* 2. SAXReader

* 3. DocumentBuilder

* 4. XMLStreamReader

* 5. SAXBuilder

* 6. SAXParser

* 7. SAXSource

* 8. TransformerFactory

* 9. SAXTransformerFactory

* 10. SchemaFactory

* 11. Unmarshaller

* 12. XPathExpression

*/

总结:获取适用以上12种类函数实现,parse后续的可控变量

 

RCE执行:

1ProcessBuilder

2Runtime.getRuntime().exec()

3ProcessImpl

4GroovyShell

 

SSRF

1、URL

 

URL跳转

1Spring MVC-redirect ModelAndView

2HttpServlet-setHeader sendRedirect

3Spring-ResponseEntity setHeader 总结:关注什么技术栈实现源码,看类函数触发可控变量

 

#其他

XSS,CSRF,文件安全,业务逻辑,冷门漏洞等与其他相似


标签: JAVA攻防

相关文章

JAVA攻防-专题漏洞&SPEL表达式&SSTI模版&Swagger接口&Actuator泄露&Spring特检

➢ Java攻防-常规漏洞-注入&RCE&XXE➢ Java攻防-常规漏洞-跳转&SSRF&FILE➢ Java攻防-专题漏洞-SPEL&...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。