なぜ地獄はD-Link⁈だ

HNAP DIR-890Lのバグに関する投稿の更新ですでに書いたように、彼らは年の初めにDIR-645でそれを見つけ、パッチをリリースしました。 D-LinkはDIR-890Lのパッチをリリースしました。
DIR-645とDIR-890Lのパッチは同じなので、DIR-890Lについてのみ記述します。

前の投稿ではコマンドの実行のみを検討しましたが、このパッチは、strstrを使用してSOAPAction HNAPヘッダーを検証するために発生したいくつかのセキュリティホールを示しています。

ご覧のとおり、D-Linkは脆弱性情報でこれをすべて認識し、すべての攻撃ベクトルを明確に表しています。
だから、彼らはsprintfスタックオーバーフローを削除しましたか?

画像
sprintf(cmd_buf、「sh%s%s.sh> / dev / console」、「/ var / run」、SOAPAction);

いや

systemコールは削除されましたか?
画像
システム(cmd_buf);

もちろん違います!

SOAPActionヘッダーを検証するために、 strcmpではなくstrcmpstrcmpしてい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 ,

Source: https://habr.com/ru/post/J256777/


All Articles