许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
0 w3 }, N2 J3 IXSPA(SSPA)是什么?
) i7 { f2 R7 y6 Z如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
: \8 Y1 _9 H: K3 m" XPHP fsockopen() function:, ?) z% y) m9 k* C- S3 K
<?php
! o+ _7 s4 Y( V- d/ Y9 afunction GetFile($host,$port,$link)( e& {6 m8 {, I% W3 m6 w
{
6 |( n4 R. s9 S5 y4 F) S* v5 W$fp = fsockopen($host, intval($port), $errno, $errstr, 30);8 k4 g" f7 P4 V+ O6 c& ~# f0 g
if (!$fp) { " E( g; I9 ~ Q1 @( D3 I3 C
echo “$errstr (error number $errno) \n”;/ X* ^& X5 C/ f1 N5 f. p2 I
} else {- }" Q0 C( C, P$ ]9 p. }
$out = “GET $link HTTP/1.1\r\n”;, z! U' \" a; ]4 H9 C; W% q- C, ^
$out .= “Host: $host\r\n”;
% Q3 Y& y; \: C Y$out .= “Connection: Close\r\n\r\n”;# l5 k# ]; I _# F3 a" x% e
$out .= “\r\n”;
( ~( H6 d& d; f3 Z$ ?( a" ~fwrite($fp, $out);
9 d$ k; c! c7 J$contents=”;
! m/ q; J, G5 u# \while (!feof($fp)) {
! n+ T+ u' n( N' ]6 R5 \( k$contents.= fgets($fp, 1024);
8 h- s/ ]6 ^1 J8 i0 ?}
) z% w# P% ~; [. Hfclose($fp);% q! C3 ^4 x' U P; l/ l, R
return $contents;, L% u9 z' [9 f
}
( G; W' M7 |8 y' S}
" Z; O# j* _3 g/ t& O+ ]?>
) V7 P- O/ L, [2 V" W- J# z- { Z复制代码+ c8 t& z7 R9 @! |3 N" p' Y9 q& s
此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。7 N5 d+ y% F# e W
PHP curl_exec() function:9 u/ G. G8 E" W# W }) M" M
<?php5 A$ J0 K5 M/ ^8 Q9 I0 z9 w
if (isset($_POST['url']))* }) `* a7 `: Y( V! }" a9 X5 v
{
) b; M' j3 Q3 {- K, }$link = $_POST['url'];
$ ]7 x- _+ x9 @/ ?0 ~' j$curlobj = curl_init();4 [, x2 v& a- d, a) l$ X% I* X
curl_setopt($curlobj, CURLOPT_POST, 0);! |8 y7 l6 |+ [- g
curl_setopt($curlobj,CURLOPT_URL,$link);
# z) s' F& ` k6 Y$ Zcurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);+ O: x! @1 U; x, e) ?, n" [
$result=curl_exec($curlobj);0 Z1 h3 b- _: u, N( [8 q
curl_close($curlobj);
$ f8 k# M {7 r. {9 G8 d3 D6 u0 i2 C / p/ w- H6 Y% c& F
$filename = ‘./curled/’.rand().’.txt’;
/ h/ d3 N% {2 h n) bfile_put_contents($filename, $result);# S+ Z" p3 G& t% r; Y' e- b
echo $result;% y! I4 i n4 h9 z9 S: Y
}& {6 O8 g* M/ @* Q! T* O
?> r3 k, u8 E- O4 S9 t" x6 }: d
复制代码2 F: U' q4 @0 k! ]( ]$ e- E% g. z
这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。3 O0 Z* z% R$ r4 o) D3 x
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:# `- R7 J0 I* n
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
3 |# |: ~- U3 a% v2 @4 g. X2。开发弱势运行的程序在Intranet或本地Web服务器. r8 m2 i( c' e& e8 s! j) K
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)4 r& `6 U2 m1 e$ B+ Z) S) m+ V
4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为, v8 i( V2 e! [3 G3 \+ \9 Y0 S6 j2 h
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |