许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。8 W6 J p1 ~0 ~4 C. Y/ m
XSPA(SSPA)是什么?9 V1 E6 M" F- W6 g$ ?. ~) S
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。) s5 T8 X- i# Z' F
PHP fsockopen() function:- E1 `- [1 t- @& Q8 k' n
<?php- l5 J. r u' O
function GetFile($host,$port,$link)1 N: O( y3 }/ L' W& I" m8 n
{6 T, Z" o8 _ N6 [2 c
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);6 v* n/ i( K# J% X1 @1 K' s
if (!$fp) { , B4 c ~: e8 K+ z
echo “$errstr (error number $errno) \n”;
; B! f. U; b# F$ Q/ j/ X3 d# o% M} else {( c& P/ Z9 \3 z
$out = “GET $link HTTP/1.1\r\n”;
4 L F$ `" k6 v/ u) P* w$out .= “Host: $host\r\n”;; s" g0 u. G6 @6 _8 c
$out .= “Connection: Close\r\n\r\n”;
# {# v6 m0 o7 q) U: ]: r, \! B$ w$out .= “\r\n”;% l9 K6 e7 u I
fwrite($fp, $out);
5 R8 D3 y$ K/ Y/ h; `- k1 ^/ h$contents=”;, E- R: ]9 f* \
while (!feof($fp)) {4 m# E& }; |1 Y& E
$contents.= fgets($fp, 1024);8 L' N: x7 H0 T+ f0 x
}/ H8 B! K1 @( n- L' _" p
fclose($fp);/ z5 q) v9 L3 k! K! r' y
return $contents;
* H2 u1 g/ S- |* g, |0 B8 @& r}) N/ E! S9 X5 N! }2 M5 o: L; Z
}9 d7 U. F5 e6 [5 N
?>! A7 W" ?, |! n
复制代码3 `( L( N( Q' E* e) [3 m
此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
E; W8 A5 K d- }7 } PHP curl_exec() function:
7 L9 [3 q) |* M- E<?php+ ?: H! O# ?1 h/ v5 ~4 \
if (isset($_POST['url']))
. A2 a9 | V/ U F+ |{' t$ @5 K; h/ [1 u" P6 }% F
$link = $_POST['url'];0 M8 ]$ h/ P/ L6 b1 q+ X. ?& W
$curlobj = curl_init(); J, l" g+ u% |" B4 z/ ]
curl_setopt($curlobj, CURLOPT_POST, 0);
; R: Z- k+ X2 N* k3 M$ m& @- U, B ecurl_setopt($curlobj,CURLOPT_URL,$link);$ l& g9 [( k. n! T( k+ B
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
; `1 J3 |* Q' n( \ b$result=curl_exec($curlobj);
7 |) \7 [. W, g1 Ucurl_close($curlobj);
. w0 p! [) P$ Y6 { - S0 e0 ^$ O- {& G; e4 N. Z
$filename = ‘./curled/’.rand().’.txt’;
3 ?* f" D% s* T$ K( i6 ifile_put_contents($filename, $result);4 v7 P: @0 w' q, V0 |( \0 K- y
echo $result;3 i* F2 Y, v) \* T+ q, }2 ]
}. t! I m/ A/ F
?>3 {8 Y/ ]9 ]) `. ?3 C
复制代码- ]. @& M1 h" Q
这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。& b, |* j/ m, b: z0 ^4 |4 s' |
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA: S% ]8 ~0 _# {
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,' d+ b$ A8 t% ^: j4 O2 Z. d8 R- d2 h
2。开发弱势运行的程序在Intranet或本地Web服务器: A5 L* P7 E# m2 m# e
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
$ T, v% a9 k* Z2 ~4 _4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为7 w- s8 L! K" Y3 S0 n) m
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |