请大佬帮忙看看这段代码有被攻击的风险没

2020-03-12 17:44:27 +08:00
 pmispig
<?php
ob_start();
echo file_get_contents($_GET['pdf_url']);
ob_flush();
?>
3771 次点击
所在节点    PHP
16 条回复
b821025551b
2020-03-12 17:45:58 +08:00
有的,pdf_url 可传入反射型 XSS 攻击。
pmispig
2020-03-12 17:49:38 +08:00
@b821025551b 这个危害倒是不大,主要是不知道有没有可执行命令 注入的风险
b821025551b
2020-03-12 17:54:40 +08:00
@pmispig #2 你贴出来得这段代码只可以知道有 XSS,但是是否会因为 XSS 的提权造成可注入的接口暴露就不一定了。
javashell
2020-03-12 18:02:12 +08:00
个人拙见,可以读取 php 源码 ,例如:
echo file_get_contents('index.php');
pmispig
2020-03-12 18:06:01 +08:00
@javashell 多谢提醒,我得试试能不能读取本地文件
pmispig
2020-03-12 18:08:38 +08:00
@javashell 果然可以读取本地文件,神坑
virusdefender
2020-03-12 18:10:22 +08:00
任意文件读取啊
D0n9
2020-03-12 18:10:27 +08:00
@pmispig 肯定可以读,而且还有 SSRF 风险

更重要的是可以用 php:// 执行 PHP 代码
pmispig
2020-03-12 18:12:40 +08:00
@D0n9 可怕,还好是单独放在 docker 里面
onion83
2020-03-12 18:34:04 +08:00
echo file_get_contents('/etc/passwd');
dapking
2020-03-12 18:47:41 +08:00
SSRF
rekulas
2020-03-12 19:04:37 +08:00
写入和输出都是高危操作,涉及到这种语句的地方都要进行路径正则严格匹配、mime 检查、后缀检查才放心
mengkun
2020-03-12 19:57:44 +08:00
/**
* 防止 SSRF 攻击,curl、file_get_contents 前检测 url
*/
function requestUrlSafe($url) {
$link = trim(strtolower($url));
$link = str_replace('\\', '/', $link);
while (strstr($link,'../')) {
$link = str_replace('../', '/', $link);
}
if( substr($link, 0, 6) != "ftp://" &&
substr($link, 0, 7) != "http://" &&
substr($link, 0, 8) != "https://" ) {
return false;
}
return true;
}
xiri
2020-03-12 20:07:16 +08:00
对传进来的参数做验证,强制加上 http/https 头应该就可以避免读取本地文件的情况了
xiri
2020-03-12 20:08:42 +08:00
function add_protocol_header($url) {
$preg = '/^http(s)?:\\/\\/.+/';
if (preg_match($preg, $url)) {
$new_url = $url;
} else {
$new_url = 'http://' . $url;
}
return $new_url;
}
$new_url = add_protocol_header($_GET['pdf_url']);
echo file_get_contents($new_url);
onesec
2020-03-13 11:05:05 +08:00
典型 任意文件读取漏洞

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/652247

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX