许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。$ {6 t1 v) ^$ Y/ ~ T( x& c6 Z
XSPA(SSPA)是什么?0 q" P5 P# C( I% \/ O! Q. M6 f4 x$ x
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。1 O+ `- |( y* x- h; M$ ^
PHP fsockopen() function:
, b( K) f- M0 Q% X) l& }) w<?php' [5 G' v. v9 V; A! q! r
function GetFile($host,$port,$link)
4 _% P" X9 v" w+ e+ y }4 v. _) C{7 _8 ^9 f2 Y3 |
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);* r8 _8 [- K7 e5 ^
if (!$fp) {
. s4 {6 {! Q2 A' D3 aecho “$errstr (error number $errno) \n”;* B: B3 @# I1 h+ K) G8 R- G* {& o' J
} else {
$ u. ~* X$ `) I* O) |2 e \4 t$out = “GET $link HTTP/1.1\r\n”;1 ^' A/ P6 Z) C& K/ d7 v
$out .= “Host: $host\r\n”;
. p+ G! q0 b$ W2 R" |8 n2 p$out .= “Connection: Close\r\n\r\n”;$ Z& n2 d2 F/ Y+ K' I. @
$out .= “\r\n”;
, q$ F, W# f" ifwrite($fp, $out);
8 `0 m+ f" V3 |. P* n$contents=”;
# }" Y! x0 X) u! v& k4 u0 E# Dwhile (!feof($fp)) {: |, ]( j: _9 J, h4 w, r" o% G
$contents.= fgets($fp, 1024);. h+ x) @ a* X2 P+ y( i$ ^8 a
}% b/ g7 U9 @/ b M c
fclose($fp);) U, v7 M$ e7 G
return $contents;% P4 R/ Q; N' O7 f5 z
}
, \- |8 }2 @& \. D: a2 n& M}
X# T2 B7 V, k* I?> T0 R1 G2 m' `' d: }( F% O( p
复制代码
! B7 Z1 C( a( B5 |3 A2 V此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。. p* ?- ~; b/ j: o- c! m* A/ T) N o
PHP curl_exec() function:* n- Z5 M$ u- Q
<?php
+ b: ]2 W( N4 H0 _' Kif (isset($_POST['url']))/ _/ n7 ?7 G& r( l1 a- H
{, Y+ Z# a+ r9 o( Q! {, U% [: W
$link = $_POST['url'];5 ~* @' H' }8 L6 i
$curlobj = curl_init(); A) a( P- [: E! U: C' A
curl_setopt($curlobj, CURLOPT_POST, 0);4 [! \- N* G2 J9 k6 t
curl_setopt($curlobj,CURLOPT_URL,$link);# |4 H8 A/ M4 w
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
5 `3 T- w* r: h/ y4 c8 u1 C. d$result=curl_exec($curlobj);
+ |9 P" e# S Y7 Icurl_close($curlobj);' u3 @; @7 r! C: r5 a6 M0 S U
: ~1 i1 Q5 g) u: y. T- A; y% ]$filename = ‘./curled/’.rand().’.txt’;! s. {5 n4 ]' z+ s# q
file_put_contents($filename, $result);
# \8 |9 L }, X3 O1 w" f- D* U" ]echo $result;
" j& P4 T7 E9 o! x& N, n/ w}
- q G. y; r) s C?>
0 H! ]7 b5 V3 }1 U2 B, I7 x9 ~; u复制代码5 J1 N' w$ y' ?& S1 D
这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。
k# q# @% g+ J' n- q8 c$ E5 E在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:; |( P6 R' o: }5 s$ R
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
t* |/ }4 `6 f- z% v2。开发弱势运行的程序在Intranet或本地Web服务器
4 @9 x, y! _% ~1 q3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
1 p8 r+ G1 p8 j) o/ A, G4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为
4 m9 y0 z1 ~' O' _8 [5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |