web安全漏洞大致分为输入输出验证不充分,设计缺陷,环境缺陷。

 

SQL注入

定义:
由于程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
SQL注入的本质:
对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分来执行。
SQL注入漏洞,就是将用户可控的数据拼接进了SQL语句中,一起提交到了数据库执行。
攻击者通过注入语句,改变SQL语句执行逻辑,通过控制部分SQL语句,攻击者可以查询数据库中任何自己需要的数据,利用数据库的一些特性,可以直接获取数据库服务器的系统权限

用户名结尾加上了' or 1=1#,就相当于把前面admin闭合了,然后or1=1,#是把后面注释掉,所以这样,这条sql语句就恒真了。

web安全笔记(2)-LMLPHP

下面使用sqlmap,先用burp抓个在登陆界面随便输入用户密码,得到的包,然后将数据考到sqlmap下的一个文件里。我这里是1.txt,

然后执行sqlmap命令 C:\web\sqlmap-master>python sqlmap.py -r 1.txt

预防就是预编译。大概就是将一些函数预先准备,以后查询就当参数了,不在拼接了。

第二种急速过滤动态请求,对参数中的特殊符号进行过滤,例如各种特殊符号,sql关键词。或者限制输入参数长度。

跨站脚本漏洞

XSS(Cross Site Script)漏洞,从本质上来说就是将数据注入到了静态脚本代码中(HTML或者Javascript等),当浏览器渲染整个HTML文档的过程中触发了注入的脚本,导致了XSS攻击的发生。

Reflected XSS (Non-persist XSS)
跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码一般不存储到服务端
Stored XSS (Persist XSS)
这是利用起来最方便的跨站类型,跨站代码存储于服务端(比如数据库中)
DOM based XSS
一种基于DOM的跨站,这是客户端脚本自身解析不正确导致的安全问题,不经过服务器,当前页面接收。
 

反射型:输入参数原封不动返回到前台页面:
提交参数插入’”><script>alert(111111111)</script>
存储型:输入参数原封不动存储进数据库以后再返回前台:
提交参数插入’”><script>alert(111111111)</script>
DOM型:输入参数被页面本身的脚本获取并运行。
提交参数插入”+alert(1111)+”;//

预防:

HTML实体化。

文件上传漏洞

非法文件上传产生的主要原因就是在服务器端没有对用户上传的文件类型做校验或者校验不完整,导致用户可以上传恶意脚本到服务器。

预防:

1、白名单检查文件扩展名,不属于白名单内的,不允许上传。
2、上传文件的保存目录不可解析jsp、php等脚本语言
3、文件名随机命名。如UUID、GUID,不允许用户自定义。
4、如果允许,对上传的图片文件进行渲染
 

文件下载漏洞

定义:
服务器端,接收请求中传来的文件名称,在服务器端拼凑成文件的绝对路径,并且用输出流下载。

预防:

1、文件路径保存至数据库,用户提交文件对应ID下载文件。
2、下载文件之前做权限判断。
3、过滤请求参数中的../../

通用框架与CMS不规则漏洞

定义:
是指一般通过黑盒测试无法发现,需要代码审计才能发现的漏洞。

实例:
DedeCMSrecommend.php文件通杀SQL注入漏洞原理分析
http://blog.csdn.net/change518/article/details/20564207
预防:

Waf拦截
程序升级最新版本
修改漏洞代码

业务安全漏洞

常见业务安全漏洞:

1,登陆验证码无效,导致暴力破解。(预防是服务器获取完验证码就应该删了)

2,任意密码重置。

3,越权操作漏洞。,水平越权(比如通过一些参数可以查询或者登陆其他人信息,预防是应该在查询前做判断,查看uid是否是当前用户的)和垂直越权(比如普通用户越权成管理员,预防还是加过滤,请求操作链接时候判断是否是管理员)。

总之都因为在修改或者查询时候没有做权限检查,导致有点像2进制那样改了通过修改判断标记的爆破那样的效果。

 

 

 

 

 

 

07-16 01:32