Java Web 工程源代码安全审计实战,第 2 部分: SQL 注入

访客5年前黑客资讯665

前语

本文是 Java Web 工程源代码安全审计实战的第 2 部分,首要解说 WebGoat 工程的 SQL 注入源码审计思路和攻防演练。包含一般的 SQL 字符注入和 SQL 盲注两个事例,并扩展评论了 NoSQL 注入的审计思路。

图 1.WebGoat 源代码中存在多个 SQL 注入问题

 

回页首

Web 运用要挟之 SQL 注入

技能原理

SQL 注入过错发作的必要条件有两个,首要是程序运用来自不行信赖的数据源的数据,其次是程序中动态拼接字符串结构 SQL 查询句子。

例如以下代码,榜首句动态结构,第二句履行了一个 SQL 查询,搜索和指定用户名相匹配的用户数据条目。

String query = "SELECT * FROM user_data WHERE last_name = '" + accountName + "'";

ResultSet results = statement.executeQuery(query);

动态结构的查询句子拼接了用户输入的字符串 accountName。假如进犯者输入字符串"anyName' OR 'a'='a",那么结构的查询句子就会变成:

SELECT * FROM user_data WHERE last_name = 'anyName' OR 'a'='a';

附加条件 OR 'a'='a' 使 WHERE 从句永真,逻辑上等同于:

SELECT * FROM user_data;

这样进犯者绕过用户名验证,查询成果能回来表格一切用户条目。

问题剖析之 SQL 字符注入 SqlStringInjection.java:101

源代码审计发现 SqlStringInjection.java 第 101 行 injectableQuery() 办法运用动态拼接字符串进行 SQL 查询。进犯者能够结构歹意字符串。本例中,完结一次完好的污染传达 source-path-sink 三过程如下:

图 2. 污染数据来自不行信赖的数据源 (Source)

图 3. 污染数据在程序体内部沿途径传达(Path)

上图来自 Fortify 剖析东西,赤色箭头指示传达途径,右紫色框代表 Source,左赤色框代表 Sink。

SqlStringInjection.java 第 101 行 injectableQuery() 办法,运用了来自不行信数据源的污染数据,代码片段如下:

图 4. 污染数据被用来结构 SQL 履行言语 (Sink)

进犯场景

在已布置的 WebGoat 工程,翻开出产环境,在左边导航目录下点选"Injection Flaws -> String SQL Inject", 在右侧页面文本框输入字符串"anyName' OR 'a'='a",点击’Go’提交页面。

图 5.SQL 字符注入进犯场景

WebGoat 工程本例页面规划为服务器回来履行成果搜索内容,由浏览器改写页面显现表格。进犯者能够从页面越权直接获取后台数据库信息。实际工程中,即使浏览器不直接显现 SQL 注入查询的内容,进犯者也能够经过 SQL 盲注,猜想感兴趣的内容。这将鄙人一个审计事例中演示。

问题剖析之 SQL 盲注 BlindNumericSqlInjection.java:114

源代码静态扫描发现 BlindNumericSqlInjection.java 第 114 行 createContent() 办法运用动态拼接字符串进行 SQL 查询。进犯者能够结构歹意字符串。

本例中完结一次完好的污染传达 Source-Path-Sink 三过程。

首要 ParameterParser.java 第 615 行运用 getParameterValues() 从网页用户恳求 request 获取数据,代码片段:

图 6. 污染数据来自不行信赖的数据源 (Source)

ParameterParser.java 第 597 行运用 getRawParameter() 传达污染数据,代码段如下:

图 7. 传递污染数据

BlindNumericSqlInjection.java 第 80 行运用污染数据对 accountNumber 赋值,并用 accountNumber 拼接 query 字符串,代码段如下:

图 8. 拼接字符串代码片段

下图来自 Fortify 剖析东西,赤色箭头指示传达途径,右紫色框代表 Source,左赤色框代表 Sink。

图 9. 污染数据在程序体内部沿途径传达(Path)

[1] [2] [3]  黑客接单网

相关文章

黑客接单后说一天等于多少时间,兰州市黑客高手联系方式,找黑客删帖子多钱

0x02 抽丝剥茧:精灵系列遥控原理全解析 $1$X8cVMw5v$AH0aUHVNix7Tx6wmHAXsf1 后续就又是提权的进程,具体操作可参阅之前的博文$db = new...

黑客采取什么方式获取密码

④使用getSP.py脚本,通过-impersonate参数模拟用户admin请求其票证,保存为ccache,admin用户为Domain Admins组的成员,具有对辅助域控制器(SDC)的管理与访...

王者荣耀的号和密码_哪里可以联系黑客-看门狗1找黑客

root(hd0,0)#本次grub查找stage2及其kernel文件地点设备分区,指定grub的根http://xyb.acfun.tv五、装备外网主机写一个apache 反向署理别的,如果把UN...

域浸透TIPS:获取LAPS管理员暗码

假如你之前有对启用LAPS机制的主机进行浸透测验,那么你应该能体会到该机制的随机化本地管理员暗码是有多么令人苦楚。 LAPS将其信息存储在活动目录: 存储暗码过期时刻:ms-Mcs-AdmPwdEx...

Gozi银行木马再现,针对高新制造业、进出口企业的“鱼叉式攻击”-黑客接单平台

近来,深服气安全团队监测到针对进出口贸易企业、国内大型高新制造业的鱼叉式网络垂钓进犯活动再次开端活泼。进犯者经过假造政府部分邮件、企业内部邮件等方法向方针组织特定部分(如:收购部分、财务部分等)建议进...

破解相册密码,手机黑客联系电话,找黑客解封滴滴

安卓手机一枚Zhu在10月底向谷歌安全团队陈述了这个缝隙,可是这个团队不认可她的缝隙陈述,回应说这个缝隙并不是安全问题。 POST: username=admin&password=,' do...