许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。+ u' Y' @$ e5 W. u- w
XSPA(SSPA)是什么?, |; r0 @( _- W# P& m4 v/ H# b' B1 K
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
3 L6 T7 s# Y. {! k* Q& ^5 B. T$ g8 Y8 tPHP fsockopen() function:9 a3 r* `3 d6 G: B5 x: Q/ B
<?php
5 _3 B% X' ~/ P9 [/ Yfunction GetFile($host,$port,$link)
4 c: e) @" L% E8 f9 H1 O! K+ P{4 B6 E$ C) `$ _5 k o( S# o. n$ w. N
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);- W% [0 ?1 P9 s# P2 x3 ]. o
if (!$fp) {
8 }) ]0 J, ~0 ]3 |% Hecho “$errstr (error number $errno) \n”;
; ~% ^ U: {" d- b2 j8 B/ d5 i2 c} else {
! V$ R8 ?$ H0 v' y$out = “GET $link HTTP/1.1\r\n”;
9 N/ R( @3 ?/ i7 B, C$out .= “Host: $host\r\n”;
& [; ^3 b" d2 E. r$ T! m ?$out .= “Connection: Close\r\n\r\n”;# x/ \, u" h7 z7 S$ E: x5 ]- l
$out .= “\r\n”;0 ]$ t* g! ]2 Z
fwrite($fp, $out);2 Z p& J+ s. |, t5 U+ Z, h; O
$contents=”;
$ w& x3 a d* Y5 Z5 E' E( a/ Fwhile (!feof($fp)) {
9 J# B8 V; n, L$contents.= fgets($fp, 1024);
) }# q$ X* c5 J* o7 E r- S% d}8 P- ^5 k$ m0 \" E- S- H. e
fclose($fp);' V0 {/ M4 X8 D% f1 b/ z1 J
return $contents;& q1 Y# U" f+ {$ `5 q/ {; i
}
( S5 l7 b W8 D0 x0 {$ \" V& m}% b; b# f$ F+ s+ l7 \( ]' A
?>6 n2 _. Y( E' s
复制代码- l/ B- l' p @% n
此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
5 ?/ U' W! U( j: w4 W/ }, _ PHP curl_exec() function:
3 h H1 c2 z1 {8 _; ^<?php
% L+ S5 B5 D) b7 m. q7 Y% z9 `if (isset($_POST['url']))
) ]8 K. l0 P o: N% M# h{/ j2 r+ e) _+ }7 x9 k
$link = $_POST['url'];
( x- A J. }2 ?; k1 P m. ^$curlobj = curl_init();3 B E8 x: O- B6 t2 V# ^* i
curl_setopt($curlobj, CURLOPT_POST, 0);) O4 F+ ?% F8 i: ]2 P
curl_setopt($curlobj,CURLOPT_URL,$link);' d% w7 `8 H- l+ l% s/ x
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
9 y9 m& i ]: o6 n- f$result=curl_exec($curlobj);
& Q. u" [6 {1 n6 ]/ Bcurl_close($curlobj);3 D9 \0 V6 J1 A
) s) B. S7 [9 s+ O! q2 i& u/ Q. h
$filename = ‘./curled/’.rand().’.txt’;
3 o' n5 N- J! _/ X) ofile_put_contents($filename, $result);
' M9 v; E9 ]* [echo $result;/ Z$ V! k' G& [5 V$ O% n/ X
}4 \/ y# t& m$ v7 b& O d1 I% J
?>; D7 {& T. \$ r* Q I
复制代码, w6 f: H7 d4 O) W M* g
这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。% h* n) a& P. ?0 w- k
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:: `. z( V: m4 O9 x1 \) l U
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下," S0 X0 `8 c3 a5 B4 _) b _. M
2。开发弱势运行的程序在Intranet或本地Web服务器0 H+ c% z. _* ^/ \. ~
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
2 T7 R# A7 ~$ d }, c7 e) l+ h4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为
& s1 Y* \6 e+ Z6 i9 _0 z5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |