• 20155317王新玮《网络对抗技术》实验9 web安全基础实践


    20155317王新玮《网络对抗技术》实验9 web安全基础实践

    一、实验准备

    1.0 实验目标和内容

    1. Web前端HTML。能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
    2. Web前端javascipt。理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。
    3. Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
    4. Web后端:编写PHP网页,连接数据库,进行用户认证
    5. 最简单的SQL注入,XSS攻击测试

    2.0 实验问题的回答

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

    攻击原理:构造符合填入语句的攻击代码,将其输入录入框,以达到自己期望的请求,比如跳过验证,直接登录。

    成因总的来说是代码编写不够严密:

    • 数据库组织类型不够完善
    • 不当的类型处理
    • 转义字符的应用漏洞
    • 最重要的是错误处理不严谨

    防御方法:利用输入规则限制进行防御,不允许特殊字符输入

    (2)XSS攻击的原理,如何防御

    攻击原理:跨站脚本攻击,XSS攻击类似于SQL注入攻击,将攻击代码注入到网页上或者数据库存储里面,在访问网页或者执行网页上功能是就会触发,实现攻击。

    防御方法:

    对于用户输入的攻击,只允许输入合法的值,其它值一概过滤掉。
    加强对于
    另外:在不需要html输入的地方对html 标签及一些特殊字符( ” < > & 等等 )做过滤,将其转化为不被浏览器解释执行的字符。

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

    XSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。

    1. 用户浏览并登录信任网站A
    2. 验证通过,在用户处产生A的Cookie
    3. 用户在没有登出A网站的前提下,访问危险网站B
    4. B要求访问第三方站点A,发出请求,
    5. 根据B的请求,浏览器带着Cookie访问A
    6. A不知请求从哪里发出的,所以A会根据自己权限处理5,这样B就收到了模拟用户操作的目的

    防御措施:

    通过验证码来检测用户提交,每次访问都需要一个新的验证码
    也可以通过强制使用户无法同时访问其他网页的方式来达到目的(代价有点大,不实际)

    二、Injuection Flaw

    1、webgoat开启

    输入:java -jar webgoat-container-7.0.1-war-exec.jar

    开启,直到出现:

    打开浏览器,进入localhost:8080/WebGoat

    完成开启

    2、SQL字符串注入 String SQL Injection

    进入训练区,首先进行SQL字符串注入的练习:

    查看这个目标,全英文的,让我们通过构造输入,达到可以查看所有信用卡号的目的。

    注意到,题目让我们试试smith:

    史密斯的帐号就出来了,这不是重点,重点是要通过构造输入来达到越过"where"的效果:

    语句为:SELECT * FROM user_data WHERE last_name = 'Smith'

    参考上一次的实验,使用永真式,得到:

    SELECT * FROM user_data WHERE last_name = ''or 1='1

    将一条语句改成两条,所以我们需要填入:'or 1='1

    3、日志欺骗 Log Spoofing

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

    题意让我们用管理员的身份进去:

    用CR (%0d) 或者 LF (%0a)的方式使用换行符,达到成功的效果。

    输入wxw5317%0aLogin Succeeded for username: %0aadmin

    事实证明,%0d与%0a都可以起到成功换行效果。只不过我后面那个%0a有点多余了,但照样成功了。

    4、数字型SQL注入 Numeric SQL Injection

    这个表单允许使用者看到天气数据,利用SQL注入使得可以看见所有数据。

    但是难点在于,并没有输入,这下怎么办呢

    burpsuite,首先读取执行的SQL值,再对属性值进行修改,达到目的。

    打开,啊大苏打实打实大苏打是

    进入“Proxy”的“Options”

    点击add,默认是8080端口被占用时需要添加一个新的端口5317//只要是空闲的就可以

    接下来对浏览器进行设置,依次进入:

    preference-advanced-settings

    将设置中,监听的端口改为5317

    到这里,就建立好了捕获包的工具,所有数据都会通过这里。

    回到webgoat,点击GO,再返回查看:

    看到出现了一些数据,将其发送到repeater:

    根据执行SQL

    SELECT * FROM weather_data WHERE station = 101

    注入SQL

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

    就修改这个station的位置为 101 or 1=1

    就成功了

    5、命令注入 Command Injection

    同上面一样,也没有输入框,所以还是用找出其命令再注入的办法,用上次用到的burpsuit:

    同刚才一样抓包:

    在提交的位置修改值为AccessControlMatrix.help"&&ifconfig"命令,第一个引号用来封闭前一个命令,最后一个用来闭合结尾的引号。

    点击 go 之后实验成功:

    6、数据后门 Database Backdoors

    要求实现多条SQL语句注入,对于这样有输入框的,破解的方法就比较简单了

    7、LAB SQL injection

    分析:由于输入项只有一个,也就是密码,但是密码应该是密文传输,所以我们直接用burpsuit。

    抓包,得到:

    将GUEST该为永真式,点击go,实验成功:

    所以到目前为止,注入部分就全部完成了:

    我们也可以采用inspector直接修改网页源码的方式,将输入框的长度编长一点,之后输入永真式即可

    三、XSS练习xxxxxxxxxxxx

     

    2、储存型XSS(Stored XSS Attakcs)

    这是一个擦除输入的练习。

    思路是 发送一个信息,当用户收到这个信息时,就会触发在其中的恶意代码(用脚本语言写的),从而达到清除cookie的效果。

    构造语句<script>alert(document.cookie);</script>

    输入后点击20155317:

    弹窗说明可清除cookies

    完成该攻击

    四、XSCF练习

    1、Cross Site Request Forgery (CSRF)

    你的目标是发一个email给newsgroup,内容包括一个有恶意URL请求的图片。URL要指向“attack”(包含参数“Screen”和“Menu”,还有一个额外参数“transferFunds”)。当收到含有CSRF页面的邮件时,就会执行transferFunds

    根据题目要求我们伪装语句:

    <img src='!attack?Screen=!&menu=!&transferFunds=!' width='1' height='1'>

    这个语句的关键就在于四个感叹号。

    第一个:网站攻击源,可以是最后现金转过去的目的地址。这里不填,默认本地

    第二个:在网站中有,页面右侧的scr和menu的值,直接填入。

    第三个:同上

    第四个:是需要转账的金额,选择5317元

    攻击:

    成功 

    2、CSRF Prompt By-pass

    网页上的手动发起请求的操作,是通过HTML+JavaScript向服务器请求,在这道题目中,我们需要在文本框中添加两个语句,一个用于请求用户转账,另一个用于触发确认界面。

    这个实验的实现跟上个很类似,所以直接这样完成就行了:

    haha
    <img src='attack?Screen=465&menu=900&transferFunds=5314'5314 width='1' height='1'>
    
    <img src='attack?Screen=465&menu=900&transferFunds=CONFIRM' width='1' height='1'>

    最后,这一部分的完成情况为:

    3、Reflected XSS Attacks

    打开xss的第三个攻击,在code框中输入<script>alert("20155317");</script>

    点击Purchase出现对话框,显示20155317攻击成功!

     

    五、实验感想

     这次实验给了我们许多攻击实践的案例,让我们有一定目标和方法的去攻击某个东西,给我的启发就是,对于网页让有输入框的,能输入东西的,可以尝试采用注入的方式,不管是采用什么语言,都有可能注入成功。对于没有输入框的,我们可以采用抓包的方式去查看,已达到获取信息之类的成效。

  • 相关阅读:
    SVN客户端服务器搭建与使用(一)
    MyEclipse下XFire开发WebService实例
    SVN客户端服务器搭建与使用(三)
    MyEclipse中Svn插件
    Spring整合MyBatis
    MyEclipse中Properties文件中文编辑插件
    WebService的原理及概念
    字符集和字符编码(Charset & Encoding)(转)
    Android 4.0系统七大新功能(转)
    加密算法小知识
  • 原文地址:https://www.cnblogs.com/wxwddp/p/9071200.html
Copyright © 2020-2023  润新知