2018先知白帽大会(敏信科技)演讲课件.pptxVIP

2018先知白帽大会(敏信科技)演讲课件.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
代码审计点线面实战 2018 ID :jkgh006 姓名:石肖雄 公司:杭州敏信科技 前 言 随着各个企业对安全的重视程度越来越深,安全思维已经从原来的表面工程逐渐转变为“开膛破肚”的内部工程,特别是在金融领域受重视的成都比较高,不区分语言,工程化的人工审计是未来几年 的趋势,代码审计的分解和实战成为安全工作者必须掌握的一种能力。 目录 01 安全代码审计 02 框架流程分析 03 三方应用笔记 04 接口滥用要记 01 安全代码审计 实战类型的代码审计,我们必须对语言安全的基础要有所要了解,每一种语言会有少许的差别。工欲善其事必先利其器,所以搭建自己的审计工具也是重中之重。 安全代码审计 SQL注入 反序列化 XML实体 SQL注入是指原始SQL查询被动态更改成一个与程序预期完全不同的查询。执行这样 一个更改后的查询可能导致信息泄露或者数据被篡改。 反序列化就是把字节序列恢复成对象的过程,这里,在恢复的过程中,可能会涉及调用一些类似内置函数或者析构函数之类的方法,由于编写不当造成了漏洞 使用不可信数据来构造XML会导致XML注入漏洞。 XML 实体可动态包含来自给定资源的数据。外部实体允许 XML 文档包含来自外部 URI 的数据。 代码安全审计–SQL注入 普通的注入 当nodeid为1 完整的语句是: select * from typestruct where nodeid in(1) 当nodeid为1) union select 1,2,3…….from table where 1=(1 完整的语句是: select * from typestruct where nodeid in(1) union select 1,2,3…….from table where 1=(1) 通常是没有走框架调用,通过字符串拼接的方式编写的查询语句,这样就会造成注入 代码安全审计–框架注入 框架注入 假设id为1234,当orgCode为1 完整的语句是: select ar.role_id, ar.role_name, ar.role_desc,1 as co_code, 1 as org_code, CREATOR from as_role ar where ar.role_id = 1 当nodeid为1||(case when 1=1 then else a end)|| 完整的语句是: select ar.role_id, ar.role_name, ar.role_desc,1 as co_code, 1||(case when 1=1 then else a end)|| as org_code, CREATOR from as_role ar where ar.role_id = 1 通常是没有明白框架调用的用法,错误的造成了字符串拼接,导致了注入 代码安全审计–ORM注入 ORM注入 数字类型( JPQL ): SELECT e FROM user e WHERE e.id = SQL((select 1 from dual where 1=1)’) and SQL((SELECT 1)=1’) 字符类型(JPQL): 通常指的是类似hibernate一类具有安全语法检测的注入 ORM注入 数字类型( Hibernate ORM ): test\ or 1length((select version())) – 翻译成为HQL语句就变为: SELECT p FROM pl.btbw.persistent.Post p where =test\ or 1length((select version())) – 最后转变为真正的SQL语句: select post0_.id as id1_0_, post0_.name as name2_0_ from post post0_ where post0_.name=‘test\ or 1length((select version())) -- 这样我们就会逃逸出来一个语句或者方法 通常指的是类似hibernate一类具有安全语法检测的注入 代码安全审计–ORM注入 代码安全审计–反序列化 public void init() throws ServletException { if(connections == null) { connections = new Vector(); } if(server_socket == null) { ServletConfig config = super.getS

文档评论(0)

js1180 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档