内部文件上传系统漏洞分析溯源

靶场地址:https://www.mozhe.cn/bug/detail/Umc0Sm5NMnkzbHM0cFl2UlVRenA1UT09bW96aGUmozhe

  • 先上传写入一句话木马的1.txt,返回上传成功以及文件路径,且url变为upload.asp ,判断为ASP上传点。
  • 将该文件后缀修改为asp,再次上传发现被拦截
  • 经测试得知中间件为IIS6.0 。此版本存在目录解析漏洞:*.asa/*.asp文件夹内的文件会被当作asp文件来解析
  • 再次上传1.txt并使用Burp拦截,将文件夹路径修改abc.asp,点击发包
  • 返回上传成功和路径,使用菜刀/蚁剑访问链接,在wwwroot目录得到KEY文件,打开得到KEY

内部文件上传系统漏洞分析溯源

WebShell文件上传漏洞分析溯源(第1题)

靶场地址:https://www.mozhe.cn/bug/detail/UjV1cnhrbUxVdmw5VitBdmRyemNDZz09bW96aGUmozhe

  • 尝试直接上传一句话木马1.php,发现无法上传;
  • 将一句话木马的文件后缀名修改为.php5再次上传,此时上传成功;
  • 使用菜刀连接,在/var/www/html/目录下找到key.php,打开得到key

WebShell文件上传分析溯源(第2题)

靶场地址:https://www.mozhe.cn/bug/detail/TzRsdjFSYW9HQlA2OFdGbXo0KzBUdz09bW96aGUmozhe

  • 进入靶场,提示需要找到后台地址,于是使用御剑扫描,得到2个路径:/admin/upload1.php/admin/upload2.php
  • 尝试访问http://url/admin/upload1.php,页面提示无权限并跳转到upload2.php
  • 使用Burp抓包,再次访问upload1.php在弹框提示时不放包,直接点击确定,发现页面出现一个上传点。此处可能由于浏览器原因,一开始使用Chrome浏览器,点击确定后并没有出现上传点,而换成火狐浏览器则出现该上传点。

WebShell文件上传分析溯源(第2题)-1

  • 出现上传点后,选择PHP一句话木马点击上传。然后在Burp处点击一次放包,将刚才跳转到upload2.php的包放掉,再将上传文件所抓的包发送到重发器Repeater

WebShell文件上传分析溯源(第2题)-2

  • 在重发器中点击发送,返回一个乱码,后面得知这是上传成功的意思,但是并没有返回上传文件的路径

WebShell文件上传分析溯源(第2题)-3

  • 最后经过搜索,发现别人的WriteUp中说在访问upload1.php时,使用Burp抓包并将添加Cookie: uploadmd5=upload_file.php,可以查看upload_file.php这个文件的源码

WebShell文件上传分析溯源(第2题)-4

  • 其中关键部分如下:
$path="uploadfile/";//上传路径
$verify=$_POST["verify"];
$time=date("Ymd");
if($_FILES["filename"]["name"])  {  
    $file1=$_FILES["filename"]["name"];  
    $file2 = $path.$time.'_'.$verify.'_'.$file1;  // 此处为上传后的文件路径
    $flag=1;  
}  
if($flag) $result=move_uploaded_file($_FILES["filename"]["tmp_name"],$file2);  
if($result) echo "上传成功!";  
  • 可以发现,上传后的文件路径为:$file2 = $path.$time.'_'.$verify.'_'.$file1

    • $path:上传路径,即uploadfile/
    • $time:上传时间中的年月日
    • $verifyverify的值,从前端表单中获取
    • $file1:上传前的文件名
  • 重复前面的步骤,再次上传一个木马shell.php,且verify为空,当前年月日为20200405,即拼接后文件路径为:uploadfile/20200405__shell.php。注意这里是两个下划线_

WebShell文件上传分析溯源(第2题)-5

  • 使用蚁剑连接:http://url/admin/uploadfile/20200405__shell.php,得到key

WebShell文件上传漏洞分析溯源(第2题)

靶场地址:https://www.mozhe.cn/bug/detail/NXNRQnJGa1g1U3lmUTNxMEQ3TUFnUT09bW96aGUmozhe

  • 开启Burp并尝试上传php一句话,发现Burp还没有抓到包,页面已经弹出只能上传图片格式的文件,因此判断此处只在前端进行检验
  • 将一句话木马后缀修改为jpg并上传,通过Burp抓包后将木马文件后缀修改为php并放行
  • 上传成功,使用菜刀连接,在/var/www/html目录下找到key.php,打开得到key

WebShell文件上传漏洞分析溯源(第3题)

靶场地址:https://www.mozhe.cn/bug/detail/MGt2VGdsK093TkdtcURBSXFySnZpUT09bW96aGUmozhe

  • 尝试直接上传一句话木马1.php,提示不允许上传
  • 上传图片马2.jpg,成功上传,但是无法连接
  • 再次上传图片马2.jpg,使用Burp抓包并将文件后缀修改为php,使用菜刀成功连接得到key

WebShell文件上传漏洞分析溯源(第4题)

靶场地址:https://www.mozhe.cn/bug/detail/aVJuL2J4YVhUQkVxZi9xMkFRbDYyQT09bW96aGUmozhe

  • 尝试直接上传一句话木马,提示文件类型不正确,而图片文件可以上传
  • 题目提示此题目标为了解Content-TypeMIME,于是尝试使用Burp抓包,上传PHP文件并修改Content-Typeimage/jpeg,上传成功
  • 使用菜刀连接,在/var/www/html/目录可得到key

WebShell文件上传漏洞分析溯源(第5题)

靶场地址:https://www.mozhe.cn/bug/detail/OGp3KzRZUFpnVUNUZm9xcjJlN1V4dz09bW96aGUmozhe

  • 进入靶场,点击后台管理,再点击登录。在后台登录页面使用弱口令admin/admin登录
  • asp一句话木马后缀修改为.jpg,然后点击左侧添加文章,在图片上传处将该木马图片上传。成功上传后得到图片路径/uploads/20200405143257347.jpg

WebShell文件上传漏洞分析溯源(第5题)-1

  • 点击左侧数据库备份,在当前数据库路径填入前面上传的图片路径,备份数据库名称填入shell.asp,点击备份数据

WebShell文件上传漏洞分析溯源(第5题)-2

  • 备份成功后,返回备份文件的路径,如:c:\inetpub\wwwroot\admin\Databackup\shell.asp
  • 此时使用蚁剑连接该文件:http://url/admin/Databackup/shell.asp,并在C:/inetpub/目录下的key.txt中得到key
如果觉得我的文章对你有帮助,请我吃颗糖吧~