検索
ホームページバックエンド開発Python チュートリアルPHP WEBSHELL トロイの木馬を正確に見つける方法 (1)

まず、バックティックによって正常に実行できる名前付きコード スニペットを見てみましょう。コードは次のとおりです。

コードをコピーします コードは次のとおりです。

`ls -al`; `ls -al`;
echo "sss";
$sql = "SELECT `username` FROM `table` WHERE 1"; FROM `table` WHERE 1 '
/*
は、先頭にある空白文字にすぎません。または、コード行の末尾の後に続きます。次の 2 行は、予期しない状況です。 SQL コマンド内のバックティック マークは除外する必要があります。
*/


正規表現の書き方は?
分析:
移植性に関する共通点は何ですか?バッククォートが含まれる他の通常の部分との違いは何ですか?
スペース、タブキー、その他の空白文字を前に置くことができます。プログラム コードを含めることもできますが、引用符 (一重および二重) がある場合は閉じる必要があります。それは危険であり、隠れた危険です。 CFC4N によって与えられる通常のルールは次のとおりです。 [(?:(?:^(?:s+)?)|(?:(?P["'])[^(?P=quote)]+ ?( ?P=quote)[^`]*?))`(?P[^`]+)`]。
説明:
[(?:(?:^(?: s+ )?)|(?:(?P["'])[^(?P=quote)]+?(?P=quote)[^`]*?))]
マッチング開始位置 または、開始位置の後に空白文字またはその前にコードがあり、コードが一重引用符と二重引用符で囲まれています。 (この PYTHON では通常、キャプチャの名前付けと後方参照が使用されます)
[`(?P[^`]+)`] これは比較的単純で、バッククォート間の文字列を照合します。
PHP WEBSHELL トロイの木馬を正確に見つける方法 (1)
PHP WebShell を検出するための特定の Python スクリプトは十分に考慮されていませんでした。
次のリストの最初の要素を見てください。 [(system|shell_exec|exec|popen)]、この規則は、文字列に "system"、"shell_exec"、"exec"、および "popen" の 4 つの文字列グループが含まれている限り、次のように判断されることを意味します。危険なキャラクター。明らかに、この方法は緩すぎます。プログラマが作成したコードにこれら 4 つの文字グループが含まれている場合、それは危険な関数であると判断できます。非常に不正確で、偽陽性率が非常に高くなります。下の図を参照してください。
PHP WEBSHELL トロイの木馬を正確に見つける方法 (1)
PHP WebShell を検出するための特定の Python スクリプトはよく考えられていません。
不審なコードとはどのようなコードですか?キーワードは何ですか?

疑わしいコードは、危険な操作を実行できる関数で構成されている必要があります。暗号化された PHP コードの場合、危険な操作を実行できる最も重要な PHP 関数は「eval」関数です (zend 暗号化メソッドではなく、変形された文字列のみです)。 )、「eval」関数を使用する必要があるため、どの暗号化方式が使用される場合でも、「eval」関数を使用する必要があります。 2 つ目は、上記のコードにある 4 つの「system」、「shell_exec」、「exec」、「popen」などのシステム コマンドを実行できる関数です。もちろんパススルーなど他にもあります。 PHP は、システム コマンドを直接実行するための「·」文字 (ESC キーの下の文字) もサポートしています。 [b(?Peval|proc_open|popen|shell_exec|exec|passthru|system)bs*(] のような正規表現を書くことができます。
PHP WEBSHELL トロイの木馬を正確に見つける方法 (1)
PHP を検出する Python スクリプトwebshel​​l は比較的簡単です。 厳密なマッチング
説明:

[bb] が単語の両側の位置を一致させるために使用されることは誰もが知っています。 [bb] の中間部分が単語であることを確認してください。関数名の前に特殊文字が追加されている場合でも、次の [s*] を使用して空白文字と一致し、その回数は 0 回から数え切れないほどです。前の [(?P)] は、名前付きグループをキャプチャするために使用されます。これを Python コードとして使用して、一致結果のキーを直接参照します。

このコードを入れたらどうでしょうか。画像拡張子を持つファイルは .php と .inc ファイルだけを検出しますか? そうですね、悪意のあるコードが gif、jpg、png、aaa などの拡張子ファイルに含まれている場合は見つかりません。などの場合、Apache や IIS などの Web サービスでは解析できず、インポートするには include/require (_once) を経由する必要があります。その後、 include/require(_once) の後のファイル名が一致するかどうかだけを確認する必要があります。通常の「.php」または「.inc」ファイル。そうでない場合、それは疑わしいファイルです。 *["'](?P.*?(?PHP WEBSHELL トロイの木馬を正確に見つける方法 (1)
PHP の Python スクリプトの検出WEBSHELL はより厳密です
説明します:

最初に [(?Pb( ?:include|require)(?:_once)?b)], [(?P
次の [s*(?s*["'](?P.+?(?.+?(? )] は上で紹介したもので、名前付きキャプチャの場合、結果は match.group("filename") に配置されます。[.*.?] は任意の文字です。 quantifier は「優先度の数量子を無視する」もので、一般に「非貪欲」として知られています。ここでは、少なくとも 0 が一致します (.aa と .htaccess にファイル名がなく、ファイル拡張子のみが導入されるのを防ぎます)。次の [(?
まとめると、最後に、私が与えた Python コードは次のとおりです:
コードをコピーします コードは次のとおりです:

#!/usr/bin/python
#-*-エンコーディング:UTF-8 -*-
###
## @package
##
## @author CFC4N
## @copyright copyright (c) Www.cnxct.Com
## @Version $Id: check_php_shell.py 37 2010-07-22 09:56:28Z cfc4n $
###
import os
import sys
import re
インポート時間
def listdir(dirs,liston='0'):
flog = open(os.getcwd()+"/check_php_shell. log","a+")
if not os.path.isdir(dirs):
print "ディレクトリ %s が存在しません"% (dirs)
return
lists = os.listdir( dirs)
リスト内のリストの場合:
filepath = os.path.join(dirs,list)
if os.path.isdir(filepath):
if liston == '1':
listdir(filepath,'1')
elif os.path.isfile(filepath):
filename = os.path.basename(filepath)
if re.search(r".(?: php|inc|html?)$", filename, re.IGNORECASE):
i = 0
iname = 0
f = open(filepath)
while f:
file_contents = f .readline()
if not file_contents:
break
i += 1
match = re.search(r'''(?Pb(?:include|require)( ?:_once)?b)s*(?s*["'](?P.*?(?if match:
function = match.group("function")
filename = match.group("filename")
if iname == 0:
info = 'n[%s] :n'% (ファイルパス)
else:
info = ''
info += 't|-- [%s] - [%s] line [%d] n'% (function,filename,i)
flog.write(info)
print info
iname += 1
match = re.search(r'b(? Peval|proc_open|popen|shell_exec|exec|passthru|system)bs*(', file_contents, re.IGNORECASE| re.MULTILINE)
if match:
function = match.group("function")
if iname == 0:
info = 'n[%s] :n'% (ファイルパス)
else:
info = ''
info += 't|-- [%s] line [%d] n'% (function,i)
flog.write(info)
印刷情報
iname += 1
f.close()
flog.close()
if '__main__' == __name__:
argvnum = len(sys.argv)
liston = '0'
if argvnum == 1:
action = os.path.basename(sys.argv[0])
print "コマンドは次のとおりです:n %s D:wwwroot n %s D:wwwroot 1 -- サブフォルダーを再帰します"% (action,action)
quit()
elif argvnum == 2:
path = os.path.realpath(sys.argv[1])
listdir(path,liston)
else:
liston = sys.argv[2]
path = os.path.realpath(sys.argv[1])
listdir(path, liston)
flog = open(os.getcwd()+"/check_php_shell.log","a+")
ISOTIMEFORMAT='%Y-%m-%d %X'
now_time = 時間。 strftime(ISOTIMEFORMAT,time.localtime())
flog.write("n----------------------%s がチェックされました ------ ---------------n"% (now_time))
flog.close()
## 最新世代の文章上にあります。2010/07

のみ、参考にしてください。

PHP WEBSHELL の Python スクリプトの検査結果 PHP WEBSHELL トロイの木馬を正確に見つける方法 (1) 问: この方法は完了していますか? 現時点で既知のすべての危険関数の数文が完了していますか?
> 回答: できません、等が含まれているファイルに展開名がない場合、ここでは一致しません。追記:コマンドを実行する「`」のリアクション番号も書き込まれていないため、SQL 文の中でリアクション番号が混ざってしまいがちです。もう一度言いますが、この文はコードを制限するだけであり、人間を拒否するものではありません。次に、その人が出した Python代コード随便制、随便伝達、愛留版权就留版权、不愛留就删了相关字符、即ち您爱干吗干吗。)
我先休息一会、明天再说。(前半は三国杀曹仁的台词、哈。)
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Pythonの主な目的:柔軟性と使いやすさPythonの主な目的:柔軟性と使いやすさApr 17, 2025 am 12:14 AM

Pythonの柔軟性は、マルチパラダイムサポートと動的タイプシステムに反映されていますが、使いやすさはシンプルな構文とリッチ標準ライブラリに由来しています。 1。柔軟性:オブジェクト指向、機能的および手続き的プログラミングをサポートし、動的タイプシステムは開発効率を向上させます。 2。使いやすさ:文法は自然言語に近く、標準的なライブラリは幅広い機能をカバーし、開発プロセスを簡素化します。

Python:汎用性の高いプログラミングの力Python:汎用性の高いプログラミングの力Apr 17, 2025 am 12:09 AM

Pythonは、初心者から上級開発者までのすべてのニーズに適した、そのシンプルさとパワーに非常に好まれています。その汎用性は、次のことに反映されています。1)学習と使用が簡単、シンプルな構文。 2)Numpy、Pandasなどの豊富なライブラリとフレームワーク。 3)さまざまなオペレーティングシステムで実行できるクロスプラットフォームサポート。 4)作業効率を向上させるためのスクリプトおよび自動化タスクに適しています。

1日2時間でPythonを学ぶ:実用的なガイド1日2時間でPythonを学ぶ:実用的なガイドApr 17, 2025 am 12:05 AM

はい、1日2時間でPythonを学びます。 1.合理的な学習計画を作成します。2。適切な学習リソースを選択します。3。実践を通じて学んだ知識を統合します。これらの手順は、短時間でPythonをマスターするのに役立ちます。

Python vs. C:開発者の長所と短所Python vs. C:開発者の長所と短所Apr 17, 2025 am 12:04 AM

Pythonは迅速な開発とデータ処理に適していますが、Cは高性能および基礎となる制御に適しています。 1)Pythonは、簡潔な構文を備えた使いやすく、データサイエンスやWeb開発に適しています。 2)Cは高性能で正確な制御を持ち、ゲームやシステムのプログラミングでよく使用されます。

Python:時間のコミットメントと学習ペースPython:時間のコミットメントと学習ペースApr 17, 2025 am 12:03 AM

Pythonを学ぶのに必要な時間は、人によって異なり、主に以前のプログラミングの経験、学習の動機付け、学習リソースと方法、学習リズムの影響を受けます。現実的な学習目標を設定し、実用的なプロジェクトを通じて最善を尽くします。

Python:自動化、スクリプト、およびタスク管理Python:自動化、スクリプト、およびタスク管理Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

Pythonと時間:勉強時間を最大限に活用するPythonと時間:勉強時間を最大限に活用するApr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Python:ゲーム、GUIなどPython:ゲーム、GUIなどApr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、