DIR-645とDIR-890Lのパッチは同じなので、DIR-890Lについてのみ記述します。
前の投稿ではコマンドの実行のみを検討しましたが、このパッチは、strstrを使用してSOAPAction HNAPヘッダーを検証するために発生したいくつかのセキュリティホールを示しています。
-
system
コールで認証されていないユーザーデータを使用する -
sprintf
呼び出しで認証されていないユーザーデータを使用する - 認証されていないユーザーは、特権HNAPリクエストを実行できます(管理者パスワードの変更など)
ご覧のとおり、D-Linkは脆弱性情報でこれをすべて認識し、すべての攻撃ベクトルを明確に表しています。
だから、彼らは
sprintf
スタックオーバーフローを削除しましたか?
sprintf(cmd_buf、「sh%s%s.sh> / dev / console」、「/ var / run」、SOAPAction);
いや
system
コールは削除されましたか?
システム(cmd_buf);
もちろん違います!
SOAPAction
ヘッダーを検証するために、
strcmp
ではなく
strcmp
を
strcmp
してい
SOAPAction
か?
if(strstr(SOAPAction、“ http://purenetworks.com/HNAP1/GetDeviceSettings”)!= NULL)
Pff、なぜわざわざ?
これらの基本的な問題に対するすべてのソリューションは、ファイルの存在をチェックすることにより、
SOAPAction
有効な期待値を検証するために
access
関数を使用することに
SOAPAction
されます。
/etc/templates/hnap/.php:
sprintf(), access()
, sprintf
system
, sprintf
access
; sprintf
sprintf
.
: , HNAP, .. , . , , !
, , , :
$ wget --header="SOAPAction: http://purenetworks.com/HNAP1/GetDeviceSettings/SetFactoryDefault" http://192.168.0.1/HNAP1
, D-Link .
UPD : D-Link ,
/etc/templates/hnap/.php:
sprintf(), access()
, sprintf
system
, sprintf
access
; sprintf
sprintf
.
: , HNAP, .. , . , , !
, , , :
$ wget --header="SOAPAction: http://purenetworks.com/HNAP1/GetDeviceSettings/SetFactoryDefault" http://192.168.0.1/HNAP1
, D-Link .
UPD : D-Link ,
/etc/templates/hnap/.php:
sprintf(), access()
, sprintf
system
, sprintf
access
; sprintf
sprintf
.
: , HNAP, .. , . , , !
, , , :
$ wget --header="SOAPAction: http://purenetworks.com/HNAP1/GetDeviceSettings/SetFactoryDefault" http://192.168.0.1/HNAP1
, D-Link .
UPD : D-Link ,