- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 地理七上.doc VIP
- 麦克维尔自然冷却风冷螺杆冷水机组 安装使用手册(1).pdf VIP
- 《职业生涯规划与就业指导》高职大学生就业指导全套教学课件.pptx
- 竣工图绘制合同协议.docx VIP
- 浙江省温州市2022-2023学年高一上学期期末教学质量统一检测政治试题.pdf VIP
- 匹克球理论考试试题库及答案.docx VIP
- 2024年福建省龙岩市新罗区西城街道招聘社区工作者真题带答案详解.docx VIP
- 北京市东城区东直门中学2024-2025学年七年级上学期分班考数学试卷.docx VIP
- 2024-2025学年人教版初中体育与健康九年级(全一册)教学设计.docx
- 冬季防寒防冻培训.pptx VIP
原创力文档


文档评论(0)