内容简介:web端攻击基础
我们在这里不讨论攻击手段,而是只是谈谈基本的攻击预防,想当初寡人也想尝试着去做一些黑客入侵,然而现今的防御手段已经大大升级,目前网上的大多数攻击教程都基本失效了。。。
之所以会想到写这个博文不是说凑文章数、炒冷饭,而是最近在公司的一个业务中发现了这样的bug,我自己成功的对公司的产品进行了 Form表单注入 ,虽然是个比较低级的bug,但是难保在繁重的开发任务中会每一个环节都那么仔细,总会有疏漏。
常规的攻击方法baidu一下你就知道,啊呸,不对,常规的攻击方法 baidu一下你确实就能知道,无非就以下几种
- url注入
- form注入
- 等(卧槽 这个“等”是什么鬼)
首先我们开看看URL注入
URL注入
URL注入一般用于asp或者 php 页面。
相较之下 URL注入 很简单,有些页面为了方便直接将必要参数(例如ID等数据)通过URL参数传过去
懒得自己截图了,于是从友链的博客里偷一张
对应这样的后台 SQL 也许是这样的
SELECT ... FROM employer WHERE jopid = [URL.jobid]
甚至我们可以输入一些特定的数据库操作语句, 例如我们将URL后方的参数改为
xxx.cfm?jobid=1; delete from employer
后台的SQL就会变为
SELECT ... FROM employer WHERE jopid = 1; delete from employer;
虽然格式有些混乱但是依然没有运行错误, 结果就是表中所有数据都被意外删除了.
在我们刚开始攻击的时候可能不清楚对应服务器的数据库系统以及后台语言, 但如果没有对错误进行catch而是直接抛给用户的话, 那么Attacker就可以了解到对应配置(数据库系统及服务器系统等), 更加方便其进行攻击。
常用的URL注入:
- 1' or '1'='1 判断是否有注入点
- 根据页面返回情况,对有注入点的页面进行深层次的 注入判断 和 SQL注入
具体细节我就不说了,有兴趣的可以去baidu、google、bing
form表单注入
继续盗图
这样一个登陆页面
后台SQL代码假设是:
SELECT ... FROM user WHERE name=xxx and password=xxx
正常情况我们会输入合法的账号和密码并提交, 但是Attacker会在输入框中使用各种SQL使得后台的SQL出现异常, 比如:
用户名随意输入
密码输入xxx' or 'a'='a
那么结果就是 后台SQL语句被篡改
SELECT ... FROM user WHERE name='abcdef' and password='xxx' or 'a'='a'
显然上述SQL是绝对成立的, 因此可以顺利进行后方的业务逻辑, 如此Attacker在不知道密码的情况下就可以使用任何用户的身份登录
SQL注入的预防
1.永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双”-“进行转换等.
2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取.
3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接.
4.不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息.
5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中.
常现的bug
-
<input />
-
<textarea>
-
<div contenteditable="true"></div>
以上三个是最容易导致SQL注入的情况,简单的说就是 凡是页面上 允许用户输入的 都有可能成为 Attacker的攻击处
比如 以下情况:
-
<script>alert(1)</script>
-
<script>alert(1)</script>
如果后台没有进行过滤特殊字符, 或者对不可预料的输入进行编码的话 后果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 黑客基础,Metasploit模块简介,渗透攻击模块、攻击载荷模块
- 基础 Web 漏洞攻击与防御的思考
- 黑客攻击基础设施建设之弱点扫描
- 如何保护您的基础架构免受DNS缓存中毒攻击
- Powershell攻击指南黑客后渗透之道系列——基础篇
- 浅析红蓝对抗中攻击方基础设施的日志聚合和监控
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。