文件包含漏洞利用

一利用前提:

(1)存在一个文件包含利用点

(2)有可控的输入地点输入文件路径

(3)写入的文件路径可知或者可预测

二包含web日志

前期通过信息收集,得到相关的服务器信息,比如得知中间件是apache

apche记录web日志的文件有access.log和erroe.log

这时候我们访问服务器的时候,通过burp修改我们的请求,将恶意代码写在请求内,这时候web日志就会将我们的恶意代码写入到日志文件中,由于日志文件一般来说都是默认的路径,比较容易猜测,这样就满足了我们本地包含getshell的条件。

比如get请求 get"<?php phpinfo();?>".html

三包含登录日志

如果发现一个liunx系统开放了22号端口,同时存在文件包含漏洞,那么我们可以构造恶意登录在ssh登录日志中写入恶意代码/

liunx默认登录日志路径: /var/log/auth.log或/var/log/secure

使用finalshell或ssh命令登录:ssh "<?php phpinfo();?>"@127.0.0.1,此时登录日志将出现php代码

如果MySQL开放远程登陆,我们同样也可以远程登陆MySQL并包含MySQL日志:mysql -u "<?php phpinfo();?>" -p -h 127.0.0.1

在linux上默认是关闭MySQL日志的,开启MySQL日志:

修改 /opt/lampp/ect/my.cnf
​
​
​
general_log = ON
​
general_log_file = /opt/lampp/logs/mysql.log
​
log_output = file
​
​
​
确保/opt/lampp/logs目录具备o+w的权限,或将日志文件写入到mysql自己的文件夹,同时mysql.log还需要o+r的权限

<!--MySQL5.7版本,或者非Lampp套件,my.cnf的配置文件路径可能在/etc/my.cnf下,需要确认-->

四包含MySQL日志

包含mysql一般是在成功访问到MySQL后实现的。攻击者进入MySQL可以通过数据库查询接口,实现恶意代码的写入MySQL日志。方法和原理与包含web日志相同。比如进入phpmyadmin后台,或者爆破成功进入MySQL。

查看日志文件状态: show variables like 'general_log'

写入恶意而代码:select "<? phpinfo();?>",根据日志文件路径即可包含。虽然到这一步已经渗透测试的成功,但是如果web服务器权限更高的话,那么可以让web服务器来包含日志,这样web shell 就会被高权限账号执行,实现提权

五包含上传文件

将恶意代码文件直接上上传可能会检查后缀名,导致直接从上传可执行文件失败。可以上传符合服务器后缀名要求的文件,但是在文件中写入恶意代码。比如使用图片马进行文件上传,进而在将其包含进来

图片马制作命令:copy muma.jpg/b + shell.php/a tupianma.jpg

六包含临时文件

临时文件指的是服务器会短暂存储,但是后续会很快删除的文件。比如上传和检测的时候,某些检测机制会把上传文件保存到一个临时文件夹里或者沙盒里,历史文件要看具体业务逻辑,而且好汉临时文件需要利用条件竞争的方式,动静比较大,容易被发现。

竞争条件使用方法:

a:使用burpssuite不停的发送上传包

b:在文件包含页面不停的的尝试包含上传文件,期望恶意文件在被服务器删除之前访问到。

c:一旦文件包含成功,即使文件被删除,只要shell不断,就可以继续保持连接

七包含session文件

通过cookie可以得知sessionID,session文件默认在服务器中存放的格式是sess_(sessID),而路径也是固定的,大多存在tmp目录下,因此只要找到一个可以控制的session文件写入点,就能利用包含漏洞getshelll

猜你喜欢

转载自blog.csdn.net/m0_73896875/article/details/131626317
今日推荐