红日攻防实验室

红日攻防实验室



代码审计第五节实战XSS漏洞挖掘CMS

代码审计第五讲主要介绍了一些实例挖掘漏洞,进而分析xss漏洞,在实际cms中的影响。本例先从dvwa实际例子开始分析,由于观看人数水平参差不急,所以从最基础开始讲起。让每一个看文章有所收获。
DVWA (Dam Vulnerable Web Application)DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞。
下载地址:http://www.dvwa.co.uk/。如果大家有需要,可以自行下载,进行安装测试,安装比较简单,可以采用wamp进行安装,但是需要注意一点,需要修改数据库配置文件,才可以安装成功。
1.png

打开配置文件,里面数据库名字、账号、密码都要改成你自己配置的数据库账号密码,这样就可以安装成功。
2.png
这个里面是我本地的数据库账号和密码。
3.png
安装完大概登陆界面大概就是这样,这里username和password都是默认的,填写admin和password就可以进行登陆了。
4.png
这是登陆成功以后,后台管理页面。我们重点讲解xss代码。
5.png
在dvwa里面,有一个是vulnerabilities这么一个文件,点击文件夹,进入会看见上图红框标识的地方。
我们首先来进行分析第一个
6.png
选择第一个文件打开以后,会有一个low.php,我们打开文件,看到里面的代码熟悉么,比较简单,直接进行$_GET操作,导致出现跨站。
在看中级部分,我们看看它有没有什么变化,来进行防护,或者是代码在上一级别有什么改动。
7.png
我们发现一个函数,什么函数呢,是str_replace()这个函数,这个函数的大概意思就是,如果在$_GET接收值得过程中,如果出现<script>这个变量,那么则替换成空,那么我们想象有没有别的方式来进行突破了呢,当然是可以得呢,可以进行大小写变换绕过,或者是双写script等操作。
初级和中级看完以后,我们来看一下高级部分,查看高级部分比中级部分又多加了哪些内容呢。
8.png
高级部分用的不是str_replace函数,而是用了htmlspecialchars这个函数,这个可以对$_GET进行什么防护措施。这个函数可以把& (和号)、"(双引号)、'(单引号)、(大于)这些敏感符号都进行转义,所有的跨站语句中基本都离不开这些符号,因而只需要这一个函数就阻止了XSS漏洞,所以跨站漏洞的代码防御还是比较简单的。
如果你对这个函数还是不理解,下点击下面链接:http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
9.png
这里有一个选择级别的地方,就是对应后台管理代码部分,有高中低三个级别,你可以进行自己水平进行三个级别的选择。
反射型xss分析完以后,我们可以进行分析储存型xss。
存储型xss的代码相对来说会比反射型代码多很多,因为存储型xss是和数据库进行交互的,会有一个入库操作。然而反射型不需要进行入库操作。
4.png

这个是存储型低级部分代码,是不是比反射型多了许多呢。如果你对stripslashes、 mysql_real_escape_string这两个函数有疑惑,或者是想了解一下,请单击一下链接。
http://www.w3school.com.cn/php/func_string_stripslashes.asp
http://www.jb51.net/article/46460.htm
http://www.w3school.com.cn/php/func_mysql_real_escape_string.asp
依然对文章中的变量没有进行任何防护,直接触发xss漏洞。那么我们在看一下中级部分,看看中级部分有什么变化呢,
5.png
中级部分虽然加了str_replace函数,但是任然可以绕过,就像反射型那样,利用大小写等方法进行绕过。
高级部分也是如此,增加了htmlspecialchars函数。
10.png
这是的dvwa的基本代码讲说。另外一个是bwapp常见的反射和存储型漏洞,代码进行分析。
11.png
这个是bwapp源码。如果有需要可以点击一下链接进行下载
https://sourceforge.net/projects/bwapp/
和dvwa安装一样,首先要建立数据库,修改配置文件,就可以进行安装了。安装成功以后,界面如下。
12.png
正常登陆就可以。
13.png
如果你看过前面dvwa代码分析,那么对于bwapp这个反射型就不会模糊了,其实都是换汤不换药的做法。
这个我们就演示一下,让大家理解一下别的做法,一下用到工具为:
火狐浏览器+temper data插件
首先从原题可以看出,主要是通过修改一些http来进行达到跨站的目的。首先打开这个界面
14.png
界面如上图。既然知道了是修改referer这个http头,那么我们进行抓包,具体temperdata这个插件,如果不会使用,可以点击一下链接进行学习。
http://my.oschina.net/laiwanshan/blog/90480
打开界面利用temper data进行抓包,相关数据如下图
15.png
http部分没有相关的referer。那么我们可以在这个工具里面进行添加头操作。
16.png
这是我们添加的内容,<script>alert(1)</script>
加在了xss_referer.php的后面,我们进行提交,查看界面是否有变化。
17.png
提交完以后会出现相应的弹框操作,所谓触发xss漏洞。别的xss漏洞类似,只不过是加了相应的过滤函数,那么我们可以进行各种编码、大小写等奇葩方法进行绕过。
在看一下存储型漏洞。
18.png
其实和dvwa类型差不多,只是在数据库进行了添加操作。我们查看一下数据库看看是否有语句插入。
19.png
我们发现有数据插入,导致数据库里面产生了垃圾数据。
实例代码挖掘,本次挖掘对象damicms。
20.png
由于xss漏洞挖掘,类似于sql注入漏洞挖掘,也是进行变量查找。上节也给大家讲了,如何定位到关键文件夹,上一节也简单介绍了一下ThinkPHP这个框架。如果还有迷糊,请参考上一节内容。从bwapp这个环境中,我们可以看到,可以挖掘$_GET,$_POST,REDERER,USER_AGENT,X_FORWARD_FRO等这些危险函数头。在源代码中可以进行查找,然后进行分析,或者对整个源代码进行分析。
21.png
我们查找ip的时候,发现了很多关于get_client_ip这个函数,那么我们跟进这个函数,看看有没有相关的漏洞。
22.png
我们发现其它变量都有相关保护操作,而ip这个函数没有经过任何修饰,猜测会有漏洞产生。那么我们在看看其他的输入输出函数都是采用什么变量进行保护的。
23.png
发现调用了框架函数,那么xss本身拥有什么框架函数呢,我们查看一下common.php这个文件。
24.png
从这个文件里面,发现remove_xss这个函数,是用来进行保护一些变量。证明我们猜想正确,那么来进行验证一下。
本次试用工具:火狐浏览器+tamper data插件
首先我们发现这个guestbook是一个留言,那么我们需要找到这个留言栏,进行发布留言,
25.png
在进行发布的时候利用temper data进行抓包。
26.png
抓到的包如下,需要我们自行添加ip,一般常见修改或者是添加ip的头为x_forwared_for。那么我们在temper data中进行添加,直接右键就可以进行添加。
27.png
添加好内容如上图。
28.png
发布成功以后,为上图。那么我们可以进入后台管理进行审核,查看是否会触发该漏洞。
29.png
发现该漏洞触发,那么我们实际案列就介绍到这里。
接下来的内容会给大家介绍文件上传和下载以及命令执行等漏洞。

 标签: none

作者  :  lyxw



关于我

about me

lyxw

联系我