代码审计-Java项目审计-SQL注入漏洞

281 篇文章 0 订阅
280 篇文章 2 订阅

代码审计必备知识点:

1、代码审计开始前准备:

环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。

2、代码审计前信息收集:

审计目标的程序名,版本,当前环境(系统,中间件,脚本语言等信息),各种插件等。

3、代码审计挖掘漏洞根本:

可控变量及特定函数,不存在过滤或过滤不严谨可以绕过导致的安全漏洞。

4、代码审计展开计划:

审计项目漏洞原理->审计思路->完整源码->应用框架->验证并利用漏洞。

代码审计两种方法:

功能点或关键字分析可能存在的漏洞

-抓包或搜索关键字找到代码出处及对应文件。

-追踪过滤或接收的数据函数,寻找触发此函数或代码的地方进行触发测试。

-常规或部分MVC模型源码可以采用关键字的搜索挖掘思路。

-框架 MVC 墨香源码一般会采用功能点分析抓包追踪挖掘思路。

1.搜索关键字找敏感函数

在这里插入图片描述

2.根据目标功能点判断可能存在的漏洞

在这里插入图片描述

常见漏洞关键字:

SQL注入:

select insert update mysql_query mysqli等

文件上传:

$_FILES,type=“file”,上传,move_uploaded_file()等

XSS跨站:

print print_r echo sprintf die var_dump var_export等

文件包含:

include include_once require require_once等

代码执行:

evalassert preg_replace call_user_func call_user_func_array等

命令执行:

systemexec shell_exec ` ` passthru pcntl_exec popen proc_open等

变量覆盖:

extract()parse_str() import_request_variables() $$ 等

反序列化:

serialize()unserialize() __construct __destruct等

文件读取:

fopen file_get_contents fread fgets fgetss file fpassthru parse_ini_file readfile等

文件删除:

unlink()remove()等

文件下载:

download() download_file()等

通用关键字:

_ G E T , \_GET, _GET,_POST, _ R E Q U E S T , \_REQUEST, _REQUEST,_FILES,$_SERVER等

在Java中SQL语句写法一般有以下几种方式:

一.JDBC 注入分析

安全写法: “select * from user where id = ?”;

不安全写法: “select * from user where id =”+req.getParameter(“id”);

二.Mybatis 注入分析

#号会对语句进行预编译

${ } 只是进行string 替换,动态解析SQL的时候会进行变量替换

安全写法:select * from user where name = #{name}

不安全写法:select * from user where name = ${name}

三.Hibernate 注入分析

安全写法:参数绑定预编译

Query.query=session.createNativeQuery(“select * from user where name=:name”);

query.setParameter(“name”,parameter) ;

不安全写法:

Query.query=session.createNativeQuery(“select * from user where name=”+req.getParameter(“id”));

java项目sql注入产生原理总结:

1、预编译使用不当:

sql=“select * from user where id = ?”;

sql+=“and username =”+req.getParameter(“username”);

2、直接动态拼接:

“select * from user where id =”+req.getParameter(“id”);

3、order by&like&in查询:

由于这三种关键字不能预编译(预编译失效),所以需要过滤器或自定义过滤

防御:

能预编译的情况都做预编译,一些特殊无法做预编译的,则过滤用户可控的参数。

案例:Javaweb-代码审计SQL注入-INXEDU在线网校

环境:MYSQL:5.X TomCat:8.X JDK:1.8 IntelliJ IDEA

1.将源码导入到IntelliJ IDEA ,部署好环境,启动服务器

在这里插入图片描述

2.搜索关键字:jdbc mybatis—>$ hibernate,判断源码使用的是哪种方式写的sql语句。

在这里插入图片描述

3.判断出源码使用的是mybatis方式写sql语句,我们就可以查找 如:${} 这样的不安全写法。

可以看到下图的 IN( v a l u e ) 不但使用了 {value}) 不但使用了 value)不但使用了()不安全写法,还使用了in关键字使预编译失效,极大概率会产生SQL注入漏洞。所以要知道是谁调用执行了这条SQL语句。

在这里插入图片描述

4.复制deleteArticleByIds 进行全局搜索

在这里插入图片描述

5.成功找到方法,选中——导航——调用层次结构,成功获取完整调用链

在这里插入图片描述

6.分析调用链,获取到路由地址:/admin/article/delete ,以post方式为articelId参数传递参数值

在这里插入图片描述

7.访问路由地址并且抓包,将数据包更改为post请求,增加post传参:articelId=1*

在这里插入图片描述

8.将数据包保存为1.txt,使用sqlmap检测sql注入。

cmd执行:python sqlmap.py -r 1.txt --dbs

成功获取数据库信息:

在这里插入图片描述

题外话

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

在这里插入图片描述

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源

3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源

4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

  • 16
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值