许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
" d! c% \3 k: R6 f9 p) sXSPA(SSPA)是什么?, s, }" h- |4 n" m; h5 T
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。, _& x6 \* I9 p4 F9 z, ^0 n
PHP fsockopen() function:
% e, v; i9 D8 }; e/ Q6 m" G<?php
8 L' D: u8 k+ n* hfunction GetFile($host,$port,$link)" B: n7 z l0 [( [& c, i$ d; P8 w
{4 F! J8 Z+ f' t4 x
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);( ?3 B9 y) W4 O+ R
if (!$fp) { ; p$ ~4 l2 c2 ~4 y
echo “$errstr (error number $errno) \n”;2 r; ~; T" v1 t+ M
} else {) _( N, K& c/ ~& A8 S. a% b
$out = “GET $link HTTP/1.1\r\n”;$ a3 `$ G9 d- u' v3 K+ ^' [/ K$ U
$out .= “Host: $host\r\n”;
0 W) p/ b2 I$ ]& a+ j/ a2 N8 }$out .= “Connection: Close\r\n\r\n”;
0 k6 T: Y0 Z- H2 ]! M$out .= “\r\n”;
' D. s3 J1 {4 S5 d4 r3 Kfwrite($fp, $out);
7 `$ v0 z& D: ?+ u( V; {$contents=”;
, p7 k* I3 e/ e0 s3 C" w$ |/ O6 gwhile (!feof($fp)) {' R" a7 i- o1 ?+ G7 \
$contents.= fgets($fp, 1024);
0 L! b* r0 P- s}
& V8 j$ q( ]2 g' K' P8 m* ~fclose($fp);
+ d& _+ P6 A, Z- o* t0 |return $contents;
* {/ `) r3 Q. i( A}
+ ^7 X0 [6 T5 j3 B1 a}9 ]& P2 F/ S% `* O
?>
# w7 u: C# q" B! [3 \- `复制代码9 Y8 V4 Z. r: h1 H7 C
此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。, r8 D' R2 n9 V, p
PHP curl_exec() function:
9 ?& y; S8 E7 e- e. D<?php
/ \& d& D# { g" Q# ~1 J8 Hif (isset($_POST['url']))
+ G7 ]5 G( s5 Y* |6 t! O{
4 X' K3 D3 L- d9 e$link = $_POST['url'];& |- ~1 X& a( L
$curlobj = curl_init();4 U+ o+ U. E: N& n% R
curl_setopt($curlobj, CURLOPT_POST, 0);
4 H5 f; O* k- j/ x4 ?curl_setopt($curlobj,CURLOPT_URL,$link);
7 c( f9 T& z+ N% o" d$ {curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);& T3 ^. ^2 F) l
$result=curl_exec($curlobj);. f& b, @4 Y5 e1 ]
curl_close($curlobj);, u7 C5 P4 K* s; } ]
$ K' P3 L7 L9 A; J$filename = ‘./curled/’.rand().’.txt’;3 p$ s' |. }7 ?9 u7 D
file_put_contents($filename, $result);
) G- y0 q; T+ p( H6 X- H: oecho $result;. Y3 Y. V8 q% u% A& s
}
8 n' f6 G% B9 w( M0 F& X! r?>
6 k& j: A' J; i0 ^复制代码& l4 t- p1 x; W5 U, w* B; L
这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。
6 @6 I+ [; \ U8 x/ a8 O8 b0 R在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:# z, }( O# h7 X% v4 K; q
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
# ]2 `0 l) o5 ~6 }2。开发弱势运行的程序在Intranet或本地Web服务器8 F) A& v8 h/ S0 O' z9 |& H
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)0 M8 l! D5 ~: i6 A8 s b
4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为5 `1 w/ B) V9 q8 ~4 G
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |