ToB企服应用市场:ToB评测及商务社交产业平台
标题:
DVWA-XSS(Reflected)
[打印本页]
作者:
吴旭华
时间:
2024-6-11 11:43
标题:
DVWA-XSS(Reflected)
反射型XSS可以用来窃取cookie
Low
输入1111进行测试,发现1111被打印
输入<script>alert(document.cookie)</script>,出现弹窗,得到cookie
Medium
查看后端代码,发现对<script>进行了转义,但是可以通过双写,大小写等进行绕过
<?php
header ("X-XSS-Protection: 0");
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Get input
$name = str_replace( '<script>', '', $_GET[ 'name' ] );
// Feedback for end user
$html .= "<pre>Hello {$name}</pre>";
}
?>
复制代码
High
观察后端代码,“*” 代表一个或多个任意字符,“i” 代表不区分大小写,<script>标签被完全过滤。但是我们可以通过其他的标签比方 img、body 等标签的事件注入。
参考XSS Payload List
<?php
header ("X-XSS-Protection: 0");
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Get input
$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );
// Feedback for end user
$html .= "<pre>Hello {$name}</pre>";
}
?>
复制代码
eg:<img src = 1 onerror = alert(document.cookie)>
Impossible
观察后端代码利用 htmlspecialchars 函数将参数中的特别字符(如 <, >, &, " 等)转换为 HTML 实体。
<?php
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Check Anti-CSRF token
checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
// Get input
$name = htmlspecialchars( $_GET[ 'name' ] );
// Feedback for end user
$html .= "<pre>Hello {$name}</pre>";
}
// Generate Anti-CSRF token
generateSessionToken();
?>
复制代码
我们打印一下输入<script>alert(document.cookie)</script>转义后的字符串
这样欣赏器会将其作为普通文本表现,而不是执行。
防御
1.http-only克制js语句获取cookie
2.过滤输入的字符,比方 “ ’ ”,“ " ”,“<”,“>” 等非法字符;
3.对输入到页面的数据进行编码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4