20145226夏艺华 网络对抗技术 EXP9 web安全基础实践

20145226夏艺华 网络对抗技术 EXP9 web安全基础实践

!!!免考项目:wannacry病毒分析+防护

一.实验后回答问题

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

攻击原理

“SQL注入”是一种利用未过滤/未审核用户输入的攻击方法(“缓存溢出”和这个不同),意思就是让应用运行本不应该运行的SQL代码。如果应用毫无防备地创建了SQL字符串并且运行了它们,就会造成一些出人意料的结果。

注入方法一般有两种:

方法一:采用直接猜表名和列名的方法或者是利用报错信息来确定表明和列名

And (Select count(*) from 要猜的表名)<>0
And (Select count(要猜的列名) from 已知的表名)<>0
注意:<>在sql中是不等于,结果若返回正确则猜的表名和列名是正确的

方法二:后台身份验证绕过漏洞

此方法利用的就是AND和OR的运算规则,从而造成后台脚本逻辑性错误

若后台的查询语句为sql='select admin from t_admin where user='request("user")' and passwd='request("user")';
但输入用户名密码若为 'or 'a'='a',那么查询语句就变成了select admin from t_admin where user=''or 'a'='a' and passwd=''or 'a'='a';
这里就变成了四个查询语句即: 假 or 真 and 假 or 真, 先算and再算or,就变成: 假or 假 or真,结果为真,就能直接接入后台了。
!!不过要想用这种方法进行攻击,必须具备一个条件:是这种用户名和密码在一个查询语句中。 或者可以'or 1=1 --将后面的语句注释掉 (--为sql注释符)

产生原因

程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。

SQL注入防御方法:

1、过滤掉一些常见的数据库操作关键字:select,insert,update,delete,and,*等

或者通过系统函数:addslashes(需要被过滤的内容)来进行过滤。

2、在PHP配置文件中

Register_globals=off;设置为关闭状态 //作用将注册全局变量关闭。

比如:接收POST表单的值使用$_POST['user'],如果将register_globals=on;直接使用$user可以接收表单的值。

3、SQL语句书写的时候尽量不要省略小引号(tab键上面那个)和单引号

4、提高数据库命名技巧,对于一些重要的字段根据程序的特点命名,取不易被猜到的

5、对于常用的方法加以封装,避免直接暴漏SQL语句

6、开启PHP安全模式

Safe_mode=on;

7、打开magic_quotes_gpc来防止SQL注入

Magic_quotes_gpc=off;默认是关闭的,它打开后将自动把用户提交的sql语句的查询进行转换,把'转为',这对防止sql注入有重大作用。

因此开启:magic_quotes_gpc=on;

8、控制错误信息

关闭错误提示信息,将错误信息写到系统日志。

9、使用mysqli或pdo预处理。

XSS攻击的原理,如何防御

XSS攻击原理  

跨站脚本(Cross site script,简称xss)是一种“HTML注入”,由于攻击的脚本多数时候是跨域的,所以称之为“跨域脚本”。

我们常常听到“注入”(Injection),如SQL注入,那么到底“注入”是什么?注入本质上就是把输入的数据变成可执行的程序语句。SQL注入是如此,XSS也如此,只不过XSS一般注入的是恶意的脚本代码,这些脚本代码可以用来获取合法用户的数据,如Cookie信息。

XSS从攻击原理上,分为三类:

1.反射型XSS

将用户输入“反射”回浏览器,即将用户的输入变成HTML传输回客户端。如:
      Response.Write(“”)
就是一个典型的反射型XSS。

2.存储性XSS

存储性XSS本质上也是一种反射型XSS,但是它把攻击脚本放置在服务器端,一旦被注入,可被多人多次利用。如,发表博文,就可以引入存储性的XSS。

3.DOM BASED XSS

如果用户的输入被用于修改原有HTML的DOM内容,就会引入这一类攻击。 

最典型的是输入的内容用于作为某个节点的innerHTML,如果不对输入作验证,则会被注入攻击代码。 

如下的一段脚本注入后,就会获取用户的Cookie






This feature requires account login:



Enter Username:

Enter Password:





伪装的表单骗用户输入数据!登陆后看看lyd.log里面的内容!
20145226夏艺华 网络对抗技术 EXP9 web安全基础实践_第41张图片

20145226夏艺华 网络对抗技术 EXP9 web安全基础实践_第42张图片

完成了钓鱼!

反射型XSS(Reflected XSS Attacks)

使用burpsuite发现,UpdateCart Purchase均以post提交数据,但在Enter your credit card number:以及Enter your three digit access code:处的值均被post原样返回,所以可以在此处构造js语言。

得到cookies!

20145226夏艺华 网络对抗技术 EXP9 web安全基础实践_第43张图片

20145226夏艺华 网络对抗技术 EXP9 web安全基础实践_第44张图片

4、XSCF练习

CSRF Prompt By-pass

题目大意:和上一个教材相似,发个邮件给newsgrooup,包含两个恶意请求:一个是转钱的金额,另一个是确认转账。
(这个图貌似 打水印的时候 有毒)
20145226夏艺华 网络对抗技术 EXP9 web安全基础实践_第45张图片

20145226夏艺华 网络对抗技术 EXP9 web安全基础实践_第46张图片

OK,完成!

hiahia,成果如下:

20145226夏艺华 网络对抗技术 EXP9 web安全基础实践_第47张图片

20145226夏艺华 网络对抗技术 EXP9 web安全基础实践_第48张图片

你可能感兴趣的:(20145226夏艺华 网络对抗技术 EXP9 web安全基础实践)