许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
, s- j0 V8 _! [XSPA(SSPA)是什么?3 e1 v* _# R: L$ ]2 K! r: O
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。* d3 m& f) g/ _+ D* Z# e) d) d4 H
PHP fsockopen() function:$ _: e- j# z3 u5 [8 K
<?php z, ~. s' }+ s* r$ ^3 F3 b
function GetFile($host,$port,$link)
- w3 ~2 l5 X8 X{
: S/ F2 p" H6 \& a$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
1 e& W c5 N! pif (!$fp) {
2 G7 R! R9 B' t0 z$ k+ L7 @! D& recho “$errstr (error number $errno) \n”;# x$ ?8 n6 ^) u8 w: S& x
} else {( L8 v/ R6 r; U% ~% a7 e; Y
$out = “GET $link HTTP/1.1\r\n”;
& h3 Y" c& b: O' m' y$out .= “Host: $host\r\n”;
/ G& P0 S. A0 J: X5 j! t" X$out .= “Connection: Close\r\n\r\n”;# s1 ^. v7 l3 _- `6 y7 o
$out .= “\r\n”;/ \5 ]/ A+ _. H$ @- f" }! S
fwrite($fp, $out);
3 U2 r' ^" t# }! M+ q$contents=”;
* R l/ ?& y8 j6 B! F: H" p, w0 K5 B% m6 uwhile (!feof($fp)) {
! U5 K9 I/ i6 c$contents.= fgets($fp, 1024);
, m' x/ s+ w6 c' H# }# o}9 V5 I' p3 f. r8 w" E9 w
fclose($fp);! H$ p- Z+ |) G+ {3 H" _4 N) F
return $contents;
6 |4 l5 Z. e: Y# q2 B6 x8 `}3 r6 T9 k: v, k2 w* U+ a
}
! ]- K3 W" T [+ z6 ??>0 Q! q4 S6 s) [, Z5 |. Q
复制代码
5 w2 A+ Z- Y) W! D" `此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
6 k1 O! F5 a+ _+ ] PHP curl_exec() function:' S* Q9 j' P( W; ~& i
<?php9 g/ _2 D7 l6 j2 t8 l4 a
if (isset($_POST['url']))
- E% B. x* H# O0 Z z{
9 x" s9 C f( m1 q6 L8 j" p$link = $_POST['url'];
/ Y0 V) M" ?; } ?! _7 C( G$curlobj = curl_init();. Z) ]$ B+ o) G+ h9 S4 k( Y$ ]' W
curl_setopt($curlobj, CURLOPT_POST, 0);
^3 H& Q* @7 o: r# I2 Fcurl_setopt($curlobj,CURLOPT_URL,$link);
2 X, @" Y5 _# U5 Gcurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
% V8 C+ W: G. f0 H8 Q; J$result=curl_exec($curlobj);
. g. M% S: e/ X; j) fcurl_close($curlobj);5 Q1 Q7 `$ ]1 ~7 ~& B) v/ ?# g" c
, Q- p! x* r/ s# ] _6 o V" O4 I$filename = ‘./curled/’.rand().’.txt’;& H- E' W+ ~) K g
file_put_contents($filename, $result);
" M7 @9 Q1 O" X1 C! |# eecho $result;
8 T1 p2 n, D$ @( f, r6 i4 X}
4 F- U$ ], i& s. v& O' p?>
3 l3 X* K* ^% J5 z- @, k6 v% H8 w" I复制代码
2 R I2 t/ O4 }. A( F6 K这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。5 i% o2 Y7 C" e k1 e, B( r+ V
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:
% ~' U5 @ l& c% o* |5 h! n# Q% K1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
; w1 @% L6 L8 K/ v I2。开发弱势运行的程序在Intranet或本地Web服务器( t! Y3 ^& M2 b3 Y; O
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
' F f0 S- V6 t* n8 @4 d4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为
+ h& ?+ ?5 g) H& F4 D3 G& v5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |