20211907刘昌赫 第十次作业

一、 实践目标
SEED SQL注入攻击与防御实验
我们已经创建了一个Web应用程序,并将其托管在www.SEEDLabSQLInjection.com。该Web应用程序是一个简单的员工管理应用程序。员工可以通过此Web应用程序查看和更新数据库中的个人信息。此Web应用程序主要有两个角色:管理员是特权角色,可以管理每个员工的个人资料信息。员工是一般角色,可以查看或更新自己的个人资料信息。完成以下任务:
熟悉SQL语句: 我们已经创建了一个名为Users的数据库,其中包含一个名为creditential的表。该表存储了每个员工的个人信息(例如,eid,密码,薪水,ssn等)。在此任务中,您需要使用数据库来熟悉SQL查询。
• 对SELECT语句的SQL注入攻击:上述Web应用存在SQL输入漏洞,任务是在不知道密码的情况下登陆该Web应用程序。
• 对UPDATE语句的SQL注入攻击:通过员工的更新个人界面实施UPDATE语句的SQL注入攻击。
• SQL对抗:修复上述SQL注入攻击漏洞。
SEED XSS跨站脚本攻击实验(Elgg)
为了演示攻击者可以利用XSS漏洞做什么,我们在预先构建的Ubuntu VM映像中设置了一个名为Elgg的Web应用程序。在本实验中,学生需要利用此漏洞对经过修改的Elgg发起XSS攻击,攻击的最终目的是在用户之间传播XSS蠕虫,这样,无论是谁查看的受感染用户个人资料都将被感染。
• 发布恶意消息,显示警报窗口:在您的Elgg配置文件中嵌入一个JavaScript程序,以便当另一个用户查看您的配置文件时,将执行JavaScript程序并显示一个警报窗口。
• 弹窗显示cookie信息:将cookie信息显示。
• 窃取受害者的cookies:将cookie发送给攻击者。
• 成为受害者的朋友:使用js程序加受害者为朋友,无需受害者干预,使用相关的工具了解Elgg加好友的过程。
• 修改受害者的信息:使用js程序使得受害者在访问Alice的页面时,资料无需干预却被修改。
• 编写XSS蠕虫。
• 对抗XSS攻击。

二、 实践过程

  1. SEED SQL注入攻击与防御实验
    先打开MySQL

选择库,之后查询所有表(下图):

在数据库中查询全体成员和alice有关的信息,

之后打开网站 SEEDLabSQLInjection.com,其对应的文件地址在/var/www/SQLInjection
我们通过vim查看对应的原代码:

代码如下:
vim /var/www/SQLInjection/unsafe_home.php
$input_uname = $_GET[’username’];
$input_pwd = $_GET[’Password’];
$input_uname = sha1($input_pwd);
$sql = "SELECT id, name, eid, salary, birth, ssn, address, email, nickname, Password FROM credential WHERE name= ’$input_uname’ and Password=’$hashed_pwd’";
$result = $conn -> query($sql);
if(id != NULL) {
if(name==’admin’) {
return All employees information;
} else if (name !=NULL){
return employee information;
}
} else {
Authentication Fails;
}
其中,查询的逻辑语句是:
SELECT id, name, eid, salary, birth, ssn, address, email,nickname,Password FROM credential WHERE name= ’$input_uname’ and Password=’$hashed_pwd’
那么如果将其中的用户名改为Admin'#,密码改为任意值,这个查询语句就会变为:
SELECT id, name, eid, salary, birth, ssn, address, email, nickname, Password FROM credential WHERE name= 'Admin' #''and Password='$hashed_pwd'

那么之后用户名输入:Admin‘#,密码随便输入,可以登录:

之后在命令行使用curl,来进行登录操作:
curl http://www.seedlabsqlinjection.com/unsafe_home.php?username=Admin'%23&Password=balabala
返回截图如下,攻击成功

之后以Alice为例,用“Alice’#”登录
在NickName这一栏里输入命令:salary='123' where EID='10000';#,直接就修改了工资.攻击成功了:

  1. SEED XSS攻击实验
    访问目标网站:http://www.xsslabelgg.com 其中,用户名:alice,密码为 seedalice。
  1. 发布恶意消息,显示警报窗口
    点击 Edit profile,在 brief description中输入如下代码:

然后保存,出现警告。

  1. 从受害者的机器上“窃取”Cookie
    输入代码:
(本地seed的地址) 5678是端口号,随便写的;

  1. 成为受害者朋友
    点击:add friend添加朋友,并通过HTTP Header Live查看发送的数据内容

可以看到请求的方式是POST,请求的地址:http://www.xsslabelgg.com/action/friends/add。
所以可通过改编出如下的代码,以用于xss攻击自动添加好友。(我直接复制的):

放到about me中

  1. 修改受害者主页
    同上,我们需要知道修改简介会发送什么资源数据,因此点击Edit profile,并同时使用HTTP Header Live查看数据包。

改编如下代码,自动攻击添加好友:

再用bob去访问Alice,发现不行了:

  1. 编写XSS蠕虫
    代码如下:

去看Bob,攻击成功

再用samy用户去试一下,访问bob,再去用Alice看,发现samy也感染了。

学习中遇到的问题及解决
插入代码后总是做不出效果
解决方法:没选择edit html模式,换了就好了
心得感悟
JavaScript看着还挺麻烦的。。

posted @ 2022-05-21 17:49  lch99722  阅读(28)  评论(0编辑  收藏  举报