许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
! { V6 [3 D6 x0 b' w: ^XSPA(SSPA)是什么?- h, `3 G6 M1 }" [
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
# i+ [8 Q4 \( F% IPHP fsockopen() function:
O! c5 W! \% U+ q( r8 R: k<?php( { V& c+ ^. G
function GetFile($host,$port,$link)
3 [3 G7 O& x! i) z, y- l{/ L1 Z; M1 p- k$ a3 f
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
( \4 s" \2 c0 x8 ^( R- Q, j# f& ?( ~. }if (!$fp) {
$ |: g. C0 f# ~: E9 ?, z+ Oecho “$errstr (error number $errno) \n”; y8 p9 u) |; V( I7 v2 p ?4 G5 M
} else {
$ Y: ^: d- a! t' T4 p; F" b" o- o& j2 ]$out = “GET $link HTTP/1.1\r\n”;- U" X1 K, K. [
$out .= “Host: $host\r\n”;
' X' H7 d1 \! a4 B4 \/ E; H$out .= “Connection: Close\r\n\r\n”;
/ K6 k( g5 H1 e. `/ s$out .= “\r\n”;
; o4 e, \7 G' e; D1 e8 vfwrite($fp, $out);
5 v( w4 c2 o7 m* {6 ? D$contents=”;$ a4 M$ K; ]) T+ `2 x+ H
while (!feof($fp)) {
1 |6 m' v* R* N$contents.= fgets($fp, 1024);8 X- p8 g! ], v5 u4 `
}0 X9 q* ^+ n! S: P' @$ I$ t
fclose($fp);7 F5 M; S& i# c- t5 `
return $contents;
) a8 }+ _* h6 N! ]- _$ x1 m. y}4 i% k8 w c4 M+ y r! Q( [
}
" O+ ~. n! _) F3 X! l; u' e?>
: k$ Y) \! q$ A% h3 ~1 r复制代码
% U0 s5 v* M, i7 A0 Q# @: T! J0 r此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
# m) y1 u, a0 V3 h) D% O( ~7 b PHP curl_exec() function:" W% P7 S" B; n! w( o; J# q' q( F
<?php5 m# ]: {4 o; s1 [% ?
if (isset($_POST['url']))
/ R# J6 E6 s, W8 N{: W. n; k) S' k) P' g* I" H; i0 n
$link = $_POST['url']; Z: l5 f# S d& [
$curlobj = curl_init();
% D# @/ O5 w/ Q7 H/ fcurl_setopt($curlobj, CURLOPT_POST, 0);, e' M) A6 I) y. d4 U
curl_setopt($curlobj,CURLOPT_URL,$link);! Y7 Q. n' j. \4 Y, c
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
( \1 Z/ C" u- b; |. q& w8 a9 x7 l$result=curl_exec($curlobj);, o3 [3 T! v) g3 m& c7 X
curl_close($curlobj);
$ k5 g7 O3 S- @3 e : A3 h6 Q; F9 ~0 c$ j
$filename = ‘./curled/’.rand().’.txt’;
6 U& _3 t% N+ o2 Ffile_put_contents($filename, $result);
3 C# X" h+ C; M- ~8 [echo $result;# y' d' \- J$ q0 ?
}" i/ @0 [8 t8 b- S; l
?>) j& s# p6 o d( {& ^9 t$ U
复制代码% A' Q: b7 z2 g0 g
这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。. X2 C# ?* N% J! k/ b. b
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:
. N0 e- C! O) K5 P" @% J- s% V+ E1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
D. j: C" N8 i, |# O. Y2。开发弱势运行的程序在Intranet或本地Web服务器, O. F+ }4 Y ?3 h0 K
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
2 d9 I$ V& y* v2 [- }4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为
3 i/ I) W+ \6 w2 q5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |