许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。* @+ a) m% J7 P' M' Y
XSPA(SSPA)是什么?
1 \& G1 {3 X: [7 {. V如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。# N9 p& x1 R; G) S
PHP fsockopen() function:" i% D/ G3 N* I, B+ ]8 c
<?php
( v3 j5 R: B6 D. q Tfunction GetFile($host,$port,$link)
$ {7 @% g7 L/ V; @# o{4 I1 u* B& G. `( x, |: H
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);% I9 W" H6 J( ], j" Y5 @
if (!$fp) { * S* |/ V! e& h# D; R0 p9 m* G
echo “$errstr (error number $errno) \n”;/ S. ?; ~* }5 o# d
} else {
, n* Y* |- v+ P. ?$out = “GET $link HTTP/1.1\r\n”;
( W3 ?' \# p0 V$out .= “Host: $host\r\n”;
/ }1 L: P! \( Z! S8 |, W$out .= “Connection: Close\r\n\r\n”;. G u8 q c! f; i
$out .= “\r\n”;
$ T5 Z( G; A& xfwrite($fp, $out);. d; Z7 M T' N
$contents=”;& `# G h; }6 {5 b( b; _6 I8 }) r5 C
while (!feof($fp)) {
$ d# ^" _% R5 D I" Q: X9 ?7 B$contents.= fgets($fp, 1024);
7 K; x# J& C: ?. T5 ^. _}4 f( i+ `. n+ Y6 L* r9 _8 C
fclose($fp);5 t1 f4 p- q" c3 K, B; M
return $contents;
4 x: b' h1 z# f7 p# P8 B}
7 h R$ F8 P: y5 U8 V4 |% M; L6 ~}+ Y1 D9 r& q9 t, {% y3 C& r' i
?>
; U9 P2 f, @8 |$ I- S) d5 y复制代码1 \. I, c- t! _0 q0 ?% k
此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
$ _8 S. k1 S, L: i! I) Z; ~# f9 | PHP curl_exec() function:- N# ^3 z( r/ ?5 W! x
<?php
2 _3 h% i- B' F0 N/ Uif (isset($_POST['url']))* y3 h2 b) U$ d& q
{
1 G$ @( d9 F% G$link = $_POST['url'];
+ @9 d; X, q9 m3 J+ ~$curlobj = curl_init();+ v. _) o; z5 r8 q3 T$ ^
curl_setopt($curlobj, CURLOPT_POST, 0);
* N7 A5 p; r5 A: [9 e. \6 ~0 E' Zcurl_setopt($curlobj,CURLOPT_URL,$link);: c5 N* d" _. G" q- \
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
* x* x! N9 B& J; G+ `; _$result=curl_exec($curlobj);
3 ?" y" f1 X0 z; w# rcurl_close($curlobj);
. i4 e7 C5 e& ?% U / f0 ^% p% ?: a. f5 }4 ?& H
$filename = ‘./curled/’.rand().’.txt’;1 X; j; z4 Y. P: B) M5 H
file_put_contents($filename, $result);
" w- y* i5 v$ d; X Y/ yecho $result;
2 i0 e# u! b0 L& B7 R- A}4 Q. v% N8 c* g3 ^" a0 F$ \
?>* u! e3 i& |8 ?3 ?
复制代码% O W ~$ O0 v: }
这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。
! x! q( I; H- [6 x& W在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:
. p3 ~( \: r0 P5 T ^1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
) e8 F( S- `' y8 |, \( x# R2。开发弱势运行的程序在Intranet或本地Web服务器
2 r5 l8 |+ S% ?; @$ v3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)5 p* m( U2 q! r M
4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为" F% m5 I$ V9 D4 p0 i
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |