如果此文章有什么错误,或者您有什么建议,欢迎随时联系我,谢谢!
写在前面:在前两天初学SQL注入的基础上,继续在Metasploitable-Linux环境下进行练习。
一、前面学习的SQL注入,那么当然就有防注入。由于web注入危害较大,各种防御技术也层出不穷。
1、程序猿在写代码时会有意识的进行防御设置,或者安全测试来封堵web注入
2、各大安全厂商生产的硬件或者软件WAF产品
黑名单过滤技术
1、过滤sql关键字段
常见的关键字:and、or、union all select、引号、空格等等过滤
还有一些类似的技术不是过滤而是通过转义函数或者剥离非法关键字
绕过方法:
1、大小写变形(id=-1 UniOn sEleCt 1,2,3……)
2、编码:hex码、urlencode
3、注释 ‘/or/’
4、过滤替换 (and–&&、or–||)
5、截断
二、文件上传漏洞
我们在上网时经常会使用文件上传的功能,比如上传一个头像图片,上传一个文件,上传一个视频等等,我都知道这是一个正常的功能,但是大家有没有想过文件上传后,服务器是怎么处理或者解析这些文件的呢,如果服务器在处理这些上传文件的时候做的不够安全,就会导致安全事件的发生,比如: 上传web脚本文件让服务器执行
(1)上传木马病毒文件诱导用户或者管理员下载
(2)上传钓鱼文件
(3)上传欺诈文件
文件上传漏洞核心
要使得文件上传攻击能够成功,一般需要满足两个要素:
(1)包含webshell文件能够成功被上传到服务器上
(2) 该文件能够被服务器解析或者我们能访问到该上传文件
实现核心—上传绕过技术
一般而言文件上传遇到的检测技术: +
(1)客户端 javascript 检测 (通常为检测文件扩展名)
(2)服务端 MIME 类型检测 (检测 Content-Type 内容)
(3)服务端目录路径检测 (检测跟 path 参数相关的内容)
(4)服务端文件扩展名检测 (检测跟文件 extension 相关的内容)
(5)服务端文件内容检测 (检测内容是否合法或含有恶意代码)
客户端检测绕过(javascript 检测)
这类检测通常在上传页面里含有专门检测文件上传的 javascript 代码最常见的就是检测扩展名是否合法,这类绕过很简单。
做法:制作webshell文件(比如shell.php)—>修改为合法扩展名(shell.png)—>burp拦截改为(shell.php) —>上传
服务端检测绕过(MIME 类型检测)
该检测是在服务器上进行,主要检查的是content-type类型值(白名单或者黑名单)。当然这个绕过也简单。
做法:制作webshell文件(比如shell.php,Content-Type: text/plain)—>burp拦截改为(sontent-Type: image/gif) —>上传
服务器检测绕过(目录路径检测)
该检测是在服务器上进行,一般就检测路径是否合法,但稍微特殊一点的都没有防御。 比如,shell.php.[\0].png [\0]、123.php0x00.png其中0x00是php、c语言的截断符,就是说服务器在读文件的时候读到shell.php碰到【\0】就截止了当做shell.php执行了。 类似还有post提交文件shell.php%00.png
注:绕过后台检测,就是给他想要的文件后缀名,然后截断真实的后