Hacking PHP

2883 ワード

Edit by Qsaka
このpaperは個人の学習ノートにすぎないので、漏れがあれば、指摘を歓迎します.
0 X 01 SQL注入
ここでは主にPHPの注入防止のいくつかの配置であり,注入手法はこれ以上述べない.
magic_quotes_gpc $_GET $_POST $_COOKIE変数の' " \ (NULL)をエスケープする.しかし、この特性はPHP 5である.3.0では既に推奨されておらず、PHP 5.4.0から削除されました.$_SERVERは濾過されません
magic_quotes_runtime
データベースまたはファイルから取得したデータをフィルタし、内容をmagic_にフィルタします.quotes_gpcは一致した.しかしPHP 5.4で廃棄される.
magic_quotes_sybase
$GET $_POST $_COOKIE ' "空白文字(NULL)`がエスケープされます.このオプションはmagic_quotes_gpcを完全に上書きします.
safe_mode
safe_modeはPHP 5.3.0で廃棄し、PHP 5.4.0で除去する.
0X02 XSS htmlspecialchars()デフォルトでは、"のみがフィルタされます.
0 X 06ファイル操作
ファイル操作には、アップロード、読み取り、書き込み、ダウンロード、含む、削除が含まれます.
ファイルの内容
ファイルはローカルファイル含む(LFI)に分けられ、リモートファイル含む(RFI).リモートファイル含むにはallow_url_include = Onが必要である.リモートファイル含むには、PHPの入出力ストリームphp://または擬似プロトコルdata://によって、include($_GET['file'].'.html')のようなファイルが何らかの制限を加えられている場合に実現することもできる.ここでは、いくつかのbypassの方法を示す
  • は、%00によって切断することによって含まれる.ただし、これは、NULL文字をフィルタリングしていない場合である.また、PHP 5.3以降のバージョンでは利用できない.
  • .
  • は複数の.を利用して遮断する.windowsでは>=240個、linuxでは>=2040個が必要である.この方法はPHP 5.3.0後にも
  • が修復される.
  • 特に、リモートファイルを含むことができる場合、URLの? #を利用して切断を実現することができる.file=http//www.example.com/shell.php?は、.htmlが要求パラメータ
  • とみなされる.
    ファイルのアップロード
  • apacheまたはiis 6.0の解析脆弱性
  • を利用する
  • php3 php4 php%20
  • を迂回する
  • %00遮断、例えば1.php%00.jpg
  • ファイルヘッダ
  • を変更
  • content-type

  • 0 X 07コード実行
    コード実行相関関数eval() assert() preg_replace() call_user_func() call_user_func_array() array_map() array_filter() array_reduce()
    0 X 08コマンド実行
    コマンド実行関連関数exec() system() shell_exec() passthru() pcntl_exec() popen() proc_open()、それ以外に逆引用符で囲まれた文字列もコマンド実行として扱われる
    0 X 09変数オーバーライド
    変数オーバーライド・ホールとは、ユーザーが入力した変数がプログラム内の元の変数の値をオーバーライドすることを意味します.変数オーバーライド・ホールを引き起こす可能性のある関数extract() parse_str() PHPの可変変数も、次のフィルタ処理などの変数オーバーライドを引き起こす可能性があります.
    foreach(array('_COOKIE', '_POST', '_GET') as $_request) {
        foreach($$_request as $_key => $_value) {
            $$_key = addslashes($_value);
        }
    }
    

    変数オーバーライドホールは、一般的に他の攻撃方法と結合する必要があります.
    0 X 0 B論理脆弱性
    ここでは簡単にいくつか挙げます
  • header()ジャンプ後exit()
  • なし
  • is_numeric()はhexで迂回することができ、
  • の二次注入をもたらす.
  • =====
  • オンライン支払論理脆弱性総括
  • 検証コードセキュリティ問題要約
  • パスワード復元論理脆弱性総括
  • 0 X 0 A権限をバイパス
    権限が迂回するのも実は論理的な抜け穴で、水平越権と垂直越権の2種類に分けられます.wooyun小川のpaper:私の越権の道
    Reference
    コード監査入門総括高級PHPアプリケーション脆弱性審査技術PHPファイル脆弱性総括論PHPよく見られる脆弱性業務安全脆弱性掘り起こしまとめまとめ