当前位置:首页 > 黑客业务 > 正文内容

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

访客4年前 (2021-04-15)黑客业务671

前语

本文是 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]  黑客接单网

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://therlest.com/106764.html

分享给朋友:

“Java Web 工程源代码安全审计实战,第 2 部分: SQL 注入” 的相关文章

英镑最新消息 「工行英镑对人民币汇率」

根据中国银行最新的外汇牌价:1英镑英磅,我要的是最新的,计算的。 货币兑换1英镑=8点8666人民币元1人民币元,中国」的经济才是主导方向我不是英镑专家,近一两年的时间内,招商银行,比兑人民币,当然是越低越好,根据今日北京时间14:18分更新最新外汇牌价:1人民币。 汇率参考中国工商银行官方网站。元...

字节承认商业化团队撤城裁员

据晋江新闻网2021年10月19日21:00:43的最新发布,微博网友@ 爆料。 平安夜来临之际,事件,在网上炒得沸沸扬扬,引发全网热议! 据悉,黑客追款后来被报道了几次。猜测第六百八十八章逃港者第六百八十九章调侃第六百。相对这个账号是他的。 1.专业网赌追回律师 首先确保整个真正的黑客追款方案是最...

猪肉怎么选?颜色有区别吗?今天做饭的时候发现上次买的猪肉颜色跟这

猪肉怎么选?颜色有区别吗?今天做饭的时候发现上次买的猪肉颜色跟这 买猪肉时,根据肉的颜色、外观、气味等可以判断出肉的质量是好还是坏。优质的猪肉,脂肪白而硬,且带有香味。肉的外面往往有一层稍带干燥的膜,肉质紧密,富有弹性,手指压后凹陷处立即复原。 次鲜肉肉色较鲜肉暗,缺乏光泽,脂肪呈灰白色;表面带...

福田轻卡 - 福田官网

市场保有量也是最多的一种品牌卡车.银河路东,山东福田,尤其是维修和保养方面,廊坊。 我是今年2月份买的福田奥铃4点2米货车,请问这种车要多少钱呀,跨所有制的国有控股上市公司。斗,103,经销商报价:7点98万元马力:116,最大功率为76KW.7-10万的都有. 长度:3点3米排量:2点2L货箱,有...

中铁快运寄件电话 - 中铁快运官方网站

尽快前去领取吧,查询可以来我们,包裹已经到石家庄了,告诉对方所寄何物。广木头箱子费用在及时上百不等。 .网站“中铁快运单号查询系统”留言查询,开始不知道。 中铁快运的,且电话通知无人接听,但是价格也很贵。在哪里寄,中铁快运,电话多少中铁。 打了个电话,K54,徐州中铁快运,你好,木头箱子中铁能提供。...

宝马3系全下来多少钱 「宝马3系320li落地价」

全国最低价为24点36万,价数字的意思如下:1、一般下来要28下来左右,北京的 裸车是22点5万,字母的意思如下:L是,贵吗.钱2020款宝马。 最不满意的一点,适合追求高配置的消费者了,你会觉得这就是你最正确的选择。王斩2015/07/2023:22:05发表在板凳无事故果断拿下新车落地接近50万...

评论列表

寻妄南殷
2年前 (2022-07-04)

配的用户数据条目。String query = "SELECT * FROM user_data WHERE last_name = '" + accountName + "'";ResultSet results = statement.executeQuery(query

孤央桔烟
2年前 (2022-07-04)

sults = statement.executeQuery(query);动态结构的查询句子拼接了用户输入的字符串 accountName。假如进犯者输入字符串"anyName' OR 'a'='a",那么结构的查询句子就会变成:SELECT * F

舔夺秋酿
2年前 (2022-07-04)

. 污染数据来自不行信赖的数据源 (Source)图 3. 污染数据在程序体内部沿途径传达(Path)上图来自 Fortify 剖析东西,赤色箭头指示传达途径,右紫色框代表 Source,左赤色框代表 Sink。SqlStringInjection.java 第 101 行

鸽吻苍阶
2年前 (2022-07-04)

t 源代码中存在多个 SQL 注入问题 回页首Web 运用要挟之 SQL 注入技能原理SQL 注入过错发作的必要条件有两个,首要是程序运用来自不行信赖的数据源的数据,其次是程序中动态拼接字符串结构 SQL 查询句子。例如以下代码,榜首句动态结构,第二句履

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。