|
本帖最后由 anysoft 于 2023-6-25 10:05 编辑 8 ?/ k. R7 f7 ?+ L- m) ?9 x; w
( d3 A$ ?, \& R3 G1 U. I }9 _ |
固件不断地更新,厂商和运营商也不断的修补漏洞和后门一些以前的方法已经失效了。$ x1 _* X- |! Y) `$ |4 |& s: x3 Z
5 b) _& l/ T( _) P, f
该帖中修正一种方法中key,新增一个开telnet脚本。
, v2 V3 {/ O7 o; u' e: O. i( S: M+ n6 c
闲话不多说直接上东西。
8 Q" [! N9 x; H& w7 F* C: x( n, w8 T& D" Q! m, _! D
. S4 u1 Q+ m: C, J _
开telnet7 g& n! ^, o8 j6 U# ]
默认其实telnet服务是开启的,只是防火墙策略禁止外部访问,而所谓开telnet其实是让防火墙放行23端口。
+ F3 O0 |7 `5 }0 H1 X2 r
" |: u2 `* b: Q0 @$ R/ c1. 管理后门
) k8 |% m0 w; d) c3 b J利用 telnetenable.cgi 传入 key 和 telnetenable 参数值开启telnet,这个属于管理后门性质接口。几乎所有版本都有,通用性高,但是key在各个版本之间可能存在差异。具体可以捅菊花后获取固件内程序后文件分析。, L$ x& p9 R7 F( ~, [- Y* G
$ n! R1 V% @4 X K$ D
老版本:key=FH-nE7jA%5m光猫MAC后6位全大写! ^* O; v5 U! H( o* f! H
新版本:参考附件4 H% [3 X* q1 k1 F9 `8 x
: d6 J: X% P! @& A4 i7 T
/ A0 G O* ? r* {- W( w; i: X+ F$ Z* I# _1 }+ C
+ X5 `, L! g0 V/ Y( [4 t# k; r附上 telnetenable.cgi 代码
' ^. e( M8 G j$ x) C# ?$ U- #!/bin/sh3 G, B$ G) f% [& Y2 p8 d
- echo Content-type: text/html
5 }2 |! h% b( N0 Z) D+ Q. u - echo! V7 e, p, i- a% ~' v
- " K' ?9 J" u4 ?, Y3 ?
- BR_MAC=`cat /sys/class/net/br0/address | sed 's/://g' | awk '{print toupper($0)}'`
6 c4 V# S/ c9 I9 c - if [ -n "$QUERY_STRING" ]; then
, {7 W' M) p5 Y - for paramIndex in 1 2
; h& u: [' r V/ f- i - do
) Z& u% x' n% y h" [3 u4 B - CGIParam=`echo "$QUERY_STRING&" | cut -d '&' -f ${paramIndex}`
4 y% r9 n0 {$ r; M - par=`echo "$CGIParam" | cut -d '=' -f 1`7 o ?: e8 A2 {8 w* ~, n9 @* b
- val=`echo "$CGIParam" | cut -d '=' -f 2`* H$ x, o- C# ~$ I3 J9 B! h
- if [ "$val" != "" ]; then' l: ]" W- _5 s% j. U
- case $par
; [1 l' o& p/ U' Q2 C& V - in
% h! L) }% q# w( _ - "telnetenable")# X( P% n3 Y. v e7 w9 J% q9 ^0 {
- TELNETENABLE=$val
5 s! a# `$ [- s) _ - ;;
! [) k2 J' w( T: w$ f - "key")' ^3 e. z3 r9 ]# R- G& C5 ]
- KEY=$val
/ t9 {; k0 O. |/ k0 B4 S' H - ;;
2 o+ S, W0 a' I- ]$ i9 b1 | - esac
) _$ U7 Z3 }" v: I - fi
1 r. N3 G$ T8 m" b: E; w6 P m: ] - done- @" t! Z4 x/ A# b4 u
- fi" z! }3 k; r: O/ f6 b+ y# ]
- ; {; _" C' [: ?% P% I6 y
- if [ "$BR_MAC" == "$KEY" ]; then: H/ p1 X. v, c/ @) t
- if [ "$TELNETENABLE" == "1" ]; then4 e; u3 z+ n0 O3 ?( c9 ~( o
- iptables -D CHAIN_SERVICE -i br0 -p tcp --dport 23 -j ACCEPT >/dev/null 2>&1
# ?- B0 G: s9 n - iptables -I CHAIN_SERVICE -i br0 -p tcp --dport 23 -j ACCEPT >/dev/null 2>&1" L& s; D7 c- y5 p5 q
- /fhrom/bin/telnetd -p 23 >/dev/null 2>&1; n2 d1 A, P# }& Y9 ~
- elif [ "$TELNETENABLE" == "0" ]; then
2 H; H$ l0 n$ s1 N5 F" b I$ j - killall telnetd >/dev/null 2>&12 A9 l- R* a; h7 Q4 m& [- m
- iptables -D CHAIN_SERVICE -i br0 -p tcp --dport 23 -j ACCEPT >/dev/null 2>&1
1 h! v6 O9 z( M+ d% Z; n - fi
( j* i* A; H. r) e3 ]2 P/ F - else! i8 F0 l: c' J8 f. n* o
- echo "<html>/ R0 P1 ^, v. L
- <head><title>404 Not Found</title></head>) j+ S7 A) s: Y+ o. F
- <body>, e9 z8 k% v0 i& g4 T7 m' h
- <center><h1>404 Not Found</h1></center>7 W, `/ F# Z4 U8 [6 j1 F" l' b& {
- </body>
. Q1 k6 r( n; Q/ e+ z - </html>"3 U1 M% z' e( M/ E; b
- exit 0
" e; W. a6 f( W3 R - fi
8 \9 M* {+ p" }" X/ v: \9 c: i - 6 Z4 }: P! q4 J& x4 a7 _% b5 e6 i
9 Q! q$ H+ I# F5 l- F7 k: N" Z4 }' s- echo "<html><head>& _, A) T7 \# w6 i: S0 s7 W( a, e
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">% i( i, l8 t3 n4 \' g
- </head>
- B+ }/ D5 X5 u& |$ g' z5 y - <body>
! e& F2 c' T& Z. ]# d - <script type='text/javascript'>* |8 h d* d6 h3 K2 B. C
- if ( '$TELNETENABLE' == '1' )
0 @% i* Z$ A! ~' z - {
( f* [- ?7 V0 L6 G2 q7 g/ N) C - document.writeln('telnet开启');0 [! E4 i1 R( L" ?
- }
" K8 o& l, A% H% T( I - else if ( '$TELNETENABLE' == '0' ), O/ g4 M- a5 ^
- {& H6 r; Y. i7 y; W* n8 h( ~6 o6 N
- document.writeln('telnet关闭');
( d3 u* J4 S% J- ~2 U - }0 r3 |$ q3 N' Z) R6 A
- else
7 g# X; M8 O0 ]; c, t - {
2 o- j8 f+ Z% f: Z) Y) t - document.writeln('无操作');" @& `7 U ]/ q3 x# G
- }
, a+ G" ^/ ?& E- d" x: V - </script>
$ M, t3 g: h" t, l% E5 K9 P" ~ - </body>
9 }( U$ [6 B* ^; r0 S& D - </html>
复制代码
& k; x# ^+ s3 w$ c2 t5 O! L
6 u0 F. L, {( i' o3 `2 ?, {" o
% O2 X X: o, X* Y3 f( B7 S1 h. v. _- N" S I
6 r# k# b6 [' @ \
2 x8 @- L8 [' Y+ ^2 i
2. 接口越权2 {3 O# \+ S [! V# K
# S$ ?& z3 C/ U V& x
7 P$ k1 K9 ]5 u/ N- I+ O' q此处利用光猫接口未做权限及操作分离的设计,在登录超级账号后脚本调用接口开启telnet; t4 s% J0 J$ t( M. _
( f3 e2 z+ T7 b$ w2 J脚本参考附件
' m) i4 c) r) ^# w% Q
' ?4 }& R0 K% A+ m w( s
' O7 c2 h$ T2 G" T: A. g3 c/ F# T7 J# ^4 e2 Z# v$ [
0 z- V* i+ S# _7 u" `' Z0 f/ x6 l; m8 c& [# O- o; D1 H1 n; f
3 k+ ?! q# n3 U9 L1 t: e5 T+ _# C/ s" j
脚本实现了 上述1,2 两种方案。
+ x, x5 ]; ~, P) C+ w$ Y% V0 y被坑了几千猫粮下载的固件无法刷入,所以写个教程和脚本赚点猫粮{:7_198:}% g6 q+ c2 U/ J+ C
8 ] W! K0 g) r7 J* P/ q* k
4 Q/ h, a) J: _7 ~ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|