许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
' v& _9 {# P6 @/ wXSPA(SSPA)是什么?! q, A( H0 |3 [% p6 @7 z. s. s
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。3 Y' C' s/ T: k. o2 Z$ e3 n7 A
PHP fsockopen() function:
B/ k [! Z! x0 E% W<?php
! |+ D9 T: u9 E9 `9 E% W5 F8 ?function GetFile($host,$port,$link)
0 u5 k! ?% J9 M+ A( I0 ]( r& O: Z2 h{3 [) A+ I0 R! \& u! |6 t
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);& b. H6 e3 k" _# i) f$ b8 C3 M
if (!$fp) {
0 s$ a% |2 b# j- `echo “$errstr (error number $errno) \n”;. I Q6 t$ ~& j: o: x$ S) L
} else {
. j. X! C% p4 s" S3 o. D$out = “GET $link HTTP/1.1\r\n”;
6 B; s: r4 x- k$ P' f) Y: U* c6 b$out .= “Host: $host\r\n”;
2 l% K, J6 H7 k7 u, f$out .= “Connection: Close\r\n\r\n”;* T# @- k) a+ W- H
$out .= “\r\n”;& C( R; Z$ ^" f( E) B% `. ]: l0 ~2 C; J( z
fwrite($fp, $out);
& ]+ Z8 }, l2 G, C8 s* G1 T$contents=”;
& e; [9 T1 t7 S1 t( ]while (!feof($fp)) {
% }4 z u% v* t) b, i+ W$contents.= fgets($fp, 1024);
: W, m# C4 a% {0 x. V- h+ b3 R}* v) ^" |$ `1 Y' ]& Q3 Q0 _" {
fclose($fp);. B2 S6 x$ C( G- q! @
return $contents;6 k$ B1 X) R2 I+ v4 m
}, p! R& U4 ~! `
}# c4 e0 @6 J% A, j
?>3 M- m1 c8 ^7 }3 G" {2 L
复制代码
7 P7 ?# E+ N1 |' X% {% O/ f此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
! |! i) I8 k' x' [9 O) y K PHP curl_exec() function: `- S1 T0 w8 F$ d0 |8 ^: N
<?php! `. }, ?2 y1 E3 E( q/ F
if (isset($_POST['url']))1 A7 I+ ]/ S7 f, C3 E- z
{
3 c. \7 {8 x# L2 E# @' a$link = $_POST['url'];# S k. P2 w8 z1 F# `
$curlobj = curl_init();4 b1 `' q* r+ }& v* y: s- C$ R
curl_setopt($curlobj, CURLOPT_POST, 0);
- e A3 ~3 J7 hcurl_setopt($curlobj,CURLOPT_URL,$link);
6 a% @0 n8 e; X8 y5 H! @curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);) A: `% X1 @: G3 r9 w' k6 `
$result=curl_exec($curlobj);' v7 u: T3 Q" P
curl_close($curlobj);6 M3 m4 q n: q
, m8 I9 D0 T- P$ J
$filename = ‘./curled/’.rand().’.txt’;
8 C4 f7 O7 k! h5 x A7 dfile_put_contents($filename, $result);
4 u# e4 V# X4 p* _echo $result;' f# T- c& c+ k' ^2 Q& H- Y- R
}9 S; B2 M8 Z& ]- m) Z2 H
?> j1 p. Z5 y; n- U
复制代码0 F/ Z% e; ]) y) q
这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。
: T3 B7 p# K+ x4 D在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:8 R+ [$ w2 p, U' {
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
: C5 _3 I; }8 ]2。开发弱势运行的程序在Intranet或本地Web服务器& p& B, y& q* Z; z$ |/ t
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)' u' B; U7 h+ R* @
4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为
" ~: h% F# E c( w/ j3 X: j5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |