许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
2 U* D {1 ~/ r3 h$ J0 l6 IXSPA(SSPA)是什么?! |/ g, j0 Z0 c$ a4 o3 j3 G
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
6 G" k. p9 L- ?: d" A( u; F$ F6 @' CPHP fsockopen() function:" Z0 k2 T2 f/ Y Y5 D1 E& f! W
<?php3 U: w& Y( j$ z, a/ s* r
function GetFile($host,$port,$link)( D; x8 l9 K9 T9 ^) h6 L
{6 z4 g/ ?' n/ N" W) v
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
4 S& e" Z- X* z1 Jif (!$fp) { 4 W8 O1 M3 ]+ v) R: a
echo “$errstr (error number $errno) \n”;( z" \' x1 N% e" c& d. H
} else {9 n! J: U4 ^+ C+ _$ J) Y! a
$out = “GET $link HTTP/1.1\r\n”;9 ~( b9 ?+ c; n6 O
$out .= “Host: $host\r\n”;
( }' _+ r/ m; U* G0 Q$out .= “Connection: Close\r\n\r\n”;
; A) X1 Q9 ~0 s" Q' ~3 z+ E$out .= “\r\n”;
! D9 M. Z1 ?7 E, U& n$ {/ [8 p; ?' n0 mfwrite($fp, $out);$ _( q. e3 J* p
$contents=”;
7 ~' T3 [( x+ Mwhile (!feof($fp)) {
! x6 u: ?, B( l$ c- Y6 s- R4 j* \$contents.= fgets($fp, 1024);6 U+ x1 V7 e! V+ C3 [6 \
}
7 ]: h) c3 t. @1 Ffclose($fp);- e& _9 @. w" x
return $contents;7 v2 x& @! R; B* B
}
& n- M8 d3 h5 ]5 r) [( R+ }, ?9 W0 X}
4 f/ L$ B. F% ~& i% Z& X1 n% x?>- w& b. H. |) n1 _
复制代码2 u( Z% n5 ^1 j% Q
此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
4 Y4 `( v Z+ p0 M6 A8 e3 F! R PHP curl_exec() function:
. F$ V+ k7 O0 N, q; V<?php4 a0 \9 C- s) P6 F0 e
if (isset($_POST['url']))9 b" G! g) Y0 q; I( q: n4 y' I8 J
{
& j$ r% x; X) j$link = $_POST['url'];* |8 e8 `$ |. i5 g
$curlobj = curl_init();3 c1 o9 K( ~! O2 f; ]
curl_setopt($curlobj, CURLOPT_POST, 0);
5 U, E% S& A- O5 y0 vcurl_setopt($curlobj,CURLOPT_URL,$link);
! f; m l3 y- V9 S5 M9 F" `8 gcurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
( t! o. E5 L/ G5 q. d; W; e$ u! O$result=curl_exec($curlobj);
' ]: K$ }( c' L9 m; q# O: E4 a4 d0 icurl_close($curlobj);) h" f2 A( b+ b% x x
$ j, {* `8 t5 }" J
$filename = ‘./curled/’.rand().’.txt’;3 P: J6 o1 @8 C% r1 T6 \- Q( X
file_put_contents($filename, $result);9 l) H, @# P0 y) R
echo $result;0 |/ B0 h b+ d7 u% ^
}
7 {$ a( ?4 o( T8 g3 F?>; O4 I1 m. Y( @ L& o
复制代码
M$ k9 t$ f& E) j( z& B) E; A这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。
2 o% s$ u* | X) |在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:
* f0 l* A$ j1 @2 q0 I: A( o1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
" O; c! Y; c7 ]2。开发弱势运行的程序在Intranet或本地Web服务器
6 k0 a7 O8 u) M3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
: _9 R/ x) C" |1 Q6 e- r5 X0 ^2 R4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为
4 w) @* y9 n$ z% P5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |