许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。! u5 F9 |1 U% {2 D U
XSPA(SSPA)是什么?
3 r1 ]+ l8 |1 _0 \3 J' q9 `# k如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。- f, Z# b. i" J
PHP fsockopen() function:- m6 f% M) D1 o6 [) c: l
<?php
0 y* d- |8 b1 I9 [0 P- Dfunction GetFile($host,$port,$link)
; R* n( C. B* w+ W{
% `: U: C& {9 a8 i/ a6 r4 f* j6 u$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
' f- G0 z. W- w8 mif (!$fp) { % z4 L/ w! G, O( ~' o" L: @
echo “$errstr (error number $errno) \n”;7 }6 H( k& n) I" c
} else {
J1 f6 H! L3 c4 U: U9 E. o1 y6 z$out = “GET $link HTTP/1.1\r\n”;
9 ^. b9 w% l: r3 y2 ]$out .= “Host: $host\r\n”;
* u9 [& H/ Q% ^7 }* A9 p3 Y$out .= “Connection: Close\r\n\r\n”;
$ X0 f- g D8 |4 q2 Q$out .= “\r\n”;
- {8 F- t9 r% pfwrite($fp, $out);, T0 r R! t1 ^7 D, G) W5 T3 M
$contents=”;9 P, s3 Q G4 u: `8 x8 e) d
while (!feof($fp)) {- `5 A' {" o3 d8 O, ]3 ]; ~
$contents.= fgets($fp, 1024);9 W, y* Y; y/ X* M2 i
}
- ~: E$ O. t9 w, p+ Efclose($fp);
6 A ~: ]) t) F/ \. Qreturn $contents;. a6 O* X# W5 C4 Z" f: k# F
}
0 r4 H( ]% Q+ Y' h/ h8 l$ V}3 T! P+ V; M4 Z) l
?>
2 X0 Y3 x' Y- E/ {) n% G复制代码( e, d+ @' }/ l' A7 c
此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。" ?! r6 `9 S5 K* S9 J) R* v, x
PHP curl_exec() function:! o) y! K* F. P2 Z3 x: I, c' O
<?php
; U7 I4 |. ~3 w Z: zif (isset($_POST['url']))
# d1 K A6 E5 S% Y" S2 `{
: t' Z s/ \& n3 z$link = $_POST['url'];- B5 O3 g% P& T Q" y, s
$curlobj = curl_init();
' G# D9 D( Q" g4 zcurl_setopt($curlobj, CURLOPT_POST, 0);
1 s( z) t6 K y5 Z/ j8 B% Kcurl_setopt($curlobj,CURLOPT_URL,$link);
5 X& Y L0 ~# E3 C" |7 ?, `8 W- rcurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);8 T& X2 o( @* j3 u$ m) h
$result=curl_exec($curlobj);7 Y3 Y" B: K5 A4 u( W
curl_close($curlobj);/ Q0 l+ X7 B* p" e. m7 g
. V, X1 C: G2 m3 Z# H) n3 s
$filename = ‘./curled/’.rand().’.txt’;4 @! E0 Y: _. B& W5 n
file_put_contents($filename, $result);7 e$ \( \# Q* S: m E; A! o
echo $result;0 m+ n" z) V' y. ?8 K
}: q) A. A- I S) P3 c/ z
?>3 }/ i! ~! w8 e7 e
复制代码
% g3 J. L: x, t; q+ r6 l( m这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。
# s' m6 J1 [4 [0 O) j7 N在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:
6 `3 s) q9 W1 P% w* I& o1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
9 ]' m, E4 y, v$ E* ]2。开发弱势运行的程序在Intranet或本地Web服务器" [) J4 V' _: t0 a' P) s* O) m
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
, s3 ~8 g% _- }4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为2 M1 Z6 H/ Q7 s2 H C
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |