https://mp.weixin.qq.com/s?__biz=MjM5OTI2MTQ3OA==&mid=2652179990&idx=1&sn=650119993bf76ac2a47736c22f5310f8&chksm=bcdf8a5f8ba803490fdbe6d01d1947a57cbc65dae6451a5f48efcf40aba0596ef0c8afe85ab3&mpshare=1&scene=1&srcid=0308RwRVZfNX4zcvIKhzDykQ#rd
1.1跨SQL注入
概念:SQL Injection按照字面意思来翻译就是“SQL注射”,常被叫做“SQL注入”,它的含义就是利用某些数据库的外部接口把用户数据插入到实际数据库操作语言当中,从而达到入侵数据库乃至操作系统的目的。SQL注入漏洞形成原因是:用户输入的数据被SQL解释器执行。
原理分析:假设如下URL存在漏洞
http://www.xxx.com/xx.asp?id=666
构造数据库原型:
select * from table_name where id=1
那么提交:
http://www.xxx.com/xx.asp?id=666 and [查询语句]
select * from table_name where username=‘or’=‘or’ And pass=‘or’=’or’
这样,如果页面和id=666返回相同的结果,就说明附加查询条件成立,如果不同,就说明不成立。
手工判断能否进行SQL注入方法:
第一步先把IE菜单=>工具=>Internet选项=>高级=>显示友好 HTTP 错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误,不能获得更多的提示信息。
简单判定有无漏洞: 粗略型:提交单引号\'
逻辑型(数字型注入):and 1=1 / and 1=2
逻辑型(字符型注入):\' and \'1\'=\'1 / \' and \'1\'=\'2
逻辑型(搜索型注入): 关键字%\' and 1=1 and \'%\'=\'% / 关键字%\' and 1=2 and \'%\'=\'%
危害:获取数据库信息,脱裤,获取服务器权限,植入webshell,获取服务器后门,读取服务器敏感文件等。
示例:
如下,user id查询框中输入1,则正常显示结果如下:
但是,当user id查询框中输入1\'时,则显示输出如下:
则该处存在sql注入漏洞。
目前流行的注入工具有:SQLMap、Pangolin(穿山甲)、Havij等。
1.2
跨站脚本攻击(XSS)
概念:通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,实现控制用户浏览器行为的一种攻击方式。
全称:Cross Site Script(本来缩写是CSS,但是为了和层叠样式表CSS有所区别,所以在安全领域叫做“XSS”)
危害:盗取用户信息、篡改页面钓鱼、制造蠕虫等。
XSS分类:存储型、反射型、DOM型
反射型XSS
反射型XSS只是简单地把用户输入的数据“反射”给浏览器。也就是说,黑客往往需要诱使用户“点击”一个恶意链接,才能攻击成功
如下,查询name信息,正常用户请求:
如果那name参数1修改成<script>alert("I am XSS")</script>,则显示结果:
存储型XSS
如下,正常留言或者评论,显示如下:
如果将message信息写成<script>alert(11)</script>,则显示
DOM XSS
基于DOM型的XSS是不需要与服务器端交互的,它只发生在客户端处理数据阶段。
下面一段经典的DOM型XSS示例。
上述代码的意思是获取URL中content参数的值,并且输出,如果输入http://www.xxx.com/dom.html?content=<script>alert(/xss/)</script>,就会产生XSS漏洞。
各种类型原理分析
1.3命令执行漏洞
漏洞产生原因:程序中因为某些功能需要执行系统命令,并通过网页传递参数到 后台执行。然而最根本的原因是没有对输入框的内容做代码过滤,正常情况下输 入框只能接收指定类型的数据。
漏洞影响:命令注入漏洞可以使攻击在受攻击的服务器上执行任意的系统命令。
示例:
正常情况下,在 ip 地址输入框中输入 127.0.0.1,结果如下:
但是,当我们输入 127.0.0.1&&net user 时,输出结果如下:
结果显示不仅仅执行了 ping 127.0.0.1 操作,而且也执行了 net user 命令,我们可 以把 net user 换成其他任意命令进行攻击。
1.4跨站请求伪造(CSRF)
概念:Cross-Site request forgery,利用用户已登录的身份,在用户毫不知情的情 况下,以用户的名义完成非法操作。
CSRF 攻击迫使终端用户在通过验证后 web 应用中执行不必要的操作。在社会工 程帮助下(如通过电子邮件/聊天发送的链接),攻击者可能会迫使 Web 应用程序 用户执行攻击者所选择的行动。
危害:执行恶意操作(“被转账”、“被发表垃圾评论”等)、制造蠕虫等 漏洞影响:当一个成功的 CSRF 漏洞的目标是普通用户时,它能够危害终端用户 的数据操作。但如果最终的目标用户是管理员账户,一个 CERF 攻击可以损害整 个 Web 应用程序。
示例:
如下,正常修改密码页面,New password 输入 test,Confirm new password 输入 test,然后提交,密码修改成功。
我们发现,这个修改密码的请求为 “ http://10.4.70.188/DVWA-1.9/vulnerabilities/csrf/?password_new=test&password_ conf=test&Change=Change ”, 此 时 , 我 们 打 开 新 的 窗 口 , 修 改 password_new=password 和 password_conf=password,访问显示如下:
此时,密码已经被修改成功,如果该 URL 被黑客通过电子邮件或其他途径精心 伪造,诱惑你触发点击,则可直接修改当前用户配置,后果不堪设想。
1.5文件上传漏洞
文件上传漏洞,是指用户上传了一个可执行的脚本文件,并通过此脚本文件获取了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,有时候几乎没有什么技术门槛。
如下,选择正常的图片文件test.jpg上传,上传成功后显示:
我们根据显示的路径信息,推测上传图片的地址为“http://10.4.70.188/DVWA-1.9/hackable/uploads/test.jpg”,在浏览器中打开:
那么,我们写一个文件phpinfo.ini,内容为<?php phpinfo(); ?>,上传成功后,我们访问该文件显示:
如果我们编辑一句话shell:" <?php @eveal($_GET[\'cmd\']);?>"为cmd.php文件,上传成功后访问文件url并且传参cmd=phpinfo(),查看结果如下:
我们修改cmd参数为任意命令,如cmd= system(\'dir\'); ,显示如下:
一旦被黑客利用,后果不堪设想。
1.6文件包含漏洞
如下页面,点击file1、file2、file3,页面地址都会随之变化为
由此,page参数就是我们可以利用的地方,我们修改page参数为随意字段,如abc.php访问,则显示:
报错信息中,我们获取到文件的物理路径,可以利用该漏洞读取本地文件,如读取dvwa目录下的php.ini文件,将文件路径进行如下修改:
也就是page参数为"../../php.info",访问显示如下:
成功读取服务端文件信息,当然,攻击者肯定不满足读取本地文件,攻击者可以修改成可执行php代码进行攻击。
1.7点击劫持(ClickJacking)
点击劫持是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。也就是通过覆盖不可见的框架误导受害者点击而造成的攻击行为。
隐蔽性高,骗取用户操作,也称UI-覆盖攻击,是利用iframe或者其他标签的属性,如flash也可以。
1.8URL跳转漏洞与钓鱼
借助未验证的URL跳转,将应用程序引导到不安全的第三方区域,从而导致的安全问题。