Netgear DGN1000 RCE

前言

声明:技术讨论仅限合法用途,不要用于从事相关违法行为,否则行为后果与本人无关

实际上这里需要两枚漏洞才能达成rce效果,一枚是带有鉴权的rce,另一枚则是绕过鉴权

而且这还是mirai变种比较青睐的一个漏洞

漏洞详情

带鉴权RCE

poc

注意仅仅在英语的页面有这个syscmd.htm

http://114.51.41.91/syscmd.htm/setup.cgi?todo=syscmd&cmd=”+$(“#cmdbox”).val()+”&curpath=”+$(“#curpath”).val()

逆向分析

网上那些分析突然上来就定位到漏洞函数,搞不懂噢,很想搞懂所以就,逆它

cgi程序如何进行请求参数的解析?

可以对着符号看看,关键的函数我没有更改名称

从main函数开始看,发现有个cgi_input_parse(),这里的v0起到很重要的作用(漏洞poc有todo字样,而后面就是判断了v0是否包含todo,肯定重要的),跟进看看

这里符号挺全的,而且逻辑很清晰,跟进 413248看看

InsertEntry逆不动。。。唉,但是根据字面意思猜测,这是用来插入某些值的,斗胆猜测a2就是目标地址

跟进 4130C8

就是这样了,现在搞清楚cgi程序是怎么处理web请求的参数了

todo=syscmd是怎么个处理逻辑

就是这样,我们知道了setup_main()的v0是什么了,这就是解析参数得到的结果,具体形式的话,还是得细看InsertEntry怎么实现才能完全理清,但目前来说理清数据流走向就差不多了,

显然要跟进CallActionByName,字面意思是 根据名称调用行为,显然syscmd也是行为的一种

显然要跟进ActionTab,因为没有别的可以为传入的参数进行执行什么的处理了

跟进以后发现是一个函数调用的地址表,还蛮大的

好好好,这就是syscmd,所以理清了todo=syscmd是怎么回事了

漏洞是怎么触发的

跟进syscmd看看,点击aSyscmd_0然后点击ascii “syscmd”的syscmd就到了

其实没啥

其实这里完全没有对cmd参数进行后端层面的过滤,所以可以认为这是存在漏洞的。

让我们看看有哪些前端文件使用了?

跟进syscmd.htm看一下

这里定义了用来做正则匹配的函数

这里作者对用户输入做了验证,规定一定要是ping、vi、vim之类的指令,实际上这里有两个问题

1.这里可以绕过,前面按规定好的格式,但后面加入&、|等符号来执行下一条指令就行

2.笑点解析:前端验证

进行了ajax请求,这里就是漏洞触发点,因为cmd参数对用户来说是可控的,而前面的请求又是可以伪造的

测试poc

启动attifyos3,

iot@attifyos ~/t/firmware-analysis-toolkit> python3 fat.py ./firmwares/DGN1000WW_V1.1.00.45.img

然后,仿真是失败的,详情如下

使用自带的zenmap扫80端口发现没启动。。。

访问也是失败,不知道有人和我一样的吗

(后来问了别的iot安全师傅发现,原来fat是一种很低成功率的仿真方式,唉)

使用fofa找了一下,由于http头包含设备型号,所以还是很准确的,而且带漏洞运行的设备还是挺多的

发现要鉴权,当然随手就是一个默认密码的,admin:password

1.直接构造请求包,绕过前端验证

2.经过前端js的话,使用|等符号绕过命令注入就ok

等下分析完鉴权绕过漏洞看看。不要进行任何出格的行为

鉴权绕过

实际上鉴定权限的是这个字段

base64解码后

寻找相关字段的出现点

定位到setup.cgi唯一的err401文件

所以超时是kill掉所有mini_httpd的,那么说明mini_httpd就是承载web服务的关键程序

搜索得到该文件的路径,分析一下看看

在这个文件里面找到了鉴权字段相关的函数,实际上出现位置集中在两个方法

分别是

void sub_404A44() //漏洞出现处

void sub_402AB0() //即源码中的send_authenticate,也处理一部分鉴权逻辑,

实在是巨长,而且缺乏调试什么的时间投入,逆向失败,直接找网上相关开源的代码,对照着看就舒服了

https://github.com/peter-leonov/mini_httpd/blob/master/mini_httpd.c

这样对照着看就舒服了,可以发现作者还是有diy的

当务之急是找到怎么鉴权的

很有意思的一点是,作者把这个循环套娃解析数据包的改成了鉴权的,

事实上dword_10001228就是权限的标志数,

这些魔改,造成了后面一系列的惨案。。。

测试

为了更好的体会漏洞的危害程度,随便找了两个fofa的目标,结果发现它们都还没有修复这个2021年的漏洞

顺带一提,msf已经集成该洞的exp

msf > use exploit/linux/http/netgear_dgn1000_setup_unauth_exec

评论

  1. Nop(ba1100n的小迷弟)
    3 月前
    2024-7-24 19:23:19

    tql师傅带带我

    • 博主
      Nop(ba1100n的小迷弟)
      3 月前
      2024-7-29 14:18:58

      我是跟着微信公众号”只关于二进制”学的呜呜

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
粤ICP备20015830号