Injection flaws
Command Injection

命令注入***是通过把HTML代码输入一个输入机制(例如缺乏有效验证限制的表格域)来改变网页的动态生成的内容,而这样就可能会导致恶意命令掌控用户的电脑和他们的网络。

在网页中尝试注入一个操作系统的命令
clip_image002

点击查看,webscarab就会弹出拦截的信息。在w webscarab里修改信息( “ & netstat ?an & ipconfig”)

clip_image003

clip_image004

Numeric SQL Injection

程序对用户提交的变量没有进行有效的过滤,就直接带入查询语句中,这样,我们就可以提交具有数据查询功能的语句,加入到程序将要提交的信息中去,再根据服务器返回的信息来判断数据库里的内容!

演示
允许用户查看天气数据。尝试注入一个字串,结果使的所有天气数据显示。

clip_image006
点击GO, webscarab就会弹出拦截的信息。在里面修改信息( or 1=1)

clip_image007

Log Spoofing

每个 SQL 数据库都有事务日志,用以记录所有事务和每个事务对数据库所做的修改。这里就是通过修改日志文件以达到欺骗的目的。

演示
利用日志的格式,使用换行等字符,欺骗管理员。

打开日志欺骗的页面,演示要求将一个普通的用户提升到管理员权限

clip_image008

写好代码:Smith%0d%0aLogin Succeeded for username: admin这里是将名字为Smith的用户提升为管理员

clip_image009

代码执行

clip_image011

·XPath/XQuery注入

XPath和XQuery是能够查询XML文档的语言,类似于结构化查询语言(SQL)。事实上,许多流行的数据库允许利用XPath和XQuery来查询数据库。在许多情况下,***者不能够直接访问XML数据,但是,***者可以用部分数据来创建XPath和XQuery语句,而这些语句能够用来查询XML。这样,***者就能够通过精心构造的输入来注入任意的查询,以此来获得数据,而这些数据在正常情况下是不允许***者访问的。

XML文件能够包括信息的不同部分或者区域。

XPath 注入,***者利用Web 应用对用户提交的参数过滤不严的漏洞,提交经过构造的参数,这些参数能够被注入到XPath 查询语句中,获得权限信息的访问权并在此基础上更改这些信息。适用于使用XML 文档存储数据的Web 应用系统。

演示

通过已有的账户尽可能的看到其他用户的的数据。

clip_image012

clip_image013

在用户名处写入相关的语句 Mike’ or 1=1 or’a’=‘a

clip_image014

LAB: SQL Injection

目的:使用字符串注入绕过认证,使老板neville没正确密码也可以获取修改权限。

clip_image016

clip_image018

选择neville进行登陆,websacrab拦截进行修改,在密码出写入smith’ or’1’=‘1

clip_image019

步骤3:

目标:使作为普通员工Larry通过注射和参数函数可以查看老板的文件

通过注入一个字符串使用户名‘Smith’的查询结果把所有的信用卡号码显示出来

String SQL Injection

程序对用户提交的变量没有进行有效的过滤,就直接带入查询语句中,这样,我们就可以提交字符串的语句,加入到程序将要提交的信息中去,再根据服务器返回的信息来获取数据库里的内容。

clip_image020

进来字符串注入的页面,按要求构建代码,即smith ‘or’1’=‘1

clip_image021

Modify Data with SQL Injection

注射修改数据

目标:

使用注射修改用户标识jsmith工资。

clip_image023

根据要求构建代码,代码如下:

jsmith';update salaries set salary=320000 where userid='jsmith

clip_image025

Add Data with SQL Injection
添加数据注入

演示

clip_image027
根据要求构建代码,代码如下:

jsmith';insert into salaries values('jonniexie',65535); --

clip_image029

Database Backdoors

数据库的后门

数据库的使用通常作为一个后端应用程序。它是用来作为存储媒体。它也可以被用来作为一个地方来存储一个恶意活动,作为一个触发。触发器是由数据库管理系统在执行另一个操作数据库的选择,插入,更新或删除。***者可以创建一个触发器,定义为自己的电子邮件地址,而不是每一个新的用户的电子邮件地址。

通过建立数据库后门,以便获取数据库中储存的用户信息,达到控制的目的。

演示
clip_image031

在页面中写入Inject this for the user ID: 101; update employee set salary=10000,就可以进入步骤2了

clip_image032

步骤2就需要我们建立后门,这就需要我们构建代码,代码如下:

101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHERE userid = 101

clip_image034