许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
, O$ E, m( h; K+ I5 i+ QXSPA(SSPA)是什么?
' b& Y) D1 z. @- a+ Z9 d3 l如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。, A% X; d+ h+ U
PHP fsockopen() function:
8 X* n6 l5 K( m1 {' }/ B<?php
3 t( g( ~* `2 _8 C* u t6 Afunction GetFile($host,$port,$link)0 b8 J5 H8 {6 z6 O+ d" V
{3 }) `, t% N" Z' d0 h7 Z- p
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
9 q4 I: ~+ \3 X% Q' H2 R. t3 f# d% |0 _, rif (!$fp) {
+ ~: ^" L* O$ A4 J1 Recho “$errstr (error number $errno) \n”;
9 i/ A; M% g) }: w" f} else {2 _' {1 x' b: }0 A
$out = “GET $link HTTP/1.1\r\n”;5 A. L! i9 a" v" x' K5 N6 g+ W( K8 l
$out .= “Host: $host\r\n”;5 z. ^( P! m1 C6 A6 F/ z
$out .= “Connection: Close\r\n\r\n”;
4 f( `% i7 \% J2 G9 z$out .= “\r\n”;
9 T, b& \! z& ?3 Afwrite($fp, $out);
% \; E0 f% p8 W$contents=”;( g" W, g# I# ?2 D# f5 \' ~$ o
while (!feof($fp)) {
* [# @! Q+ w# Q5 l# q$contents.= fgets($fp, 1024);- X8 a! h) s, Q) J/ Q7 l
}( c( ?% H( D/ f, D# D4 L i& ]
fclose($fp);
- Y+ N/ v- i& j) B4 zreturn $contents;! l4 W2 d( y+ Z, f! K, X
} p# a0 e% o! N; o2 Y" S; `
}- x. I' ~% _3 K+ i4 ?8 o. Q
?>
% c M) {$ e9 z$ {5 K! r K复制代码
0 m# J! e' P6 ]# P此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。2 f8 i9 a8 R; I0 a* ~6 @) A
PHP curl_exec() function:
+ N' S% G5 {$ g% e% x* ^: G<?php
5 ]0 |) C5 s. V* J$ u' ?if (isset($_POST['url']))
8 p& x9 p+ @- \9 D# n7 J4 u{
* s2 Y2 A8 k1 I2 z6 _( g) D/ w u$link = $_POST['url'];
% B! u" p# Z0 i$curlobj = curl_init();
% Q! B! }. V: O A! M0 lcurl_setopt($curlobj, CURLOPT_POST, 0);
5 H. M* u! e: t0 A6 w! A& ocurl_setopt($curlobj,CURLOPT_URL,$link);
, @2 `4 i$ M" T. V7 {% Rcurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);% p. c) O) m# t- F9 B3 m0 A- V
$result=curl_exec($curlobj);: T% ^; k: c# T
curl_close($curlobj);& Q7 W. d$ q9 j" ^/ D/ f, `& @# X C
# |7 n6 r3 b* ` J) E2 \
$filename = ‘./curled/’.rand().’.txt’;3 ~ ^; R- U+ }
file_put_contents($filename, $result);4 Q8 g7 v9 C% r& o: A N1 \ x
echo $result;
8 [1 y) @; a/ z* }}
8 ?' D7 D/ S9 ]$ d; Z/ ?/ U5 O4 w?>
6 Z/ O v: }0 f5 x9 h8 o复制代码
, S7 G+ Y! P2 `8 z3 j3 R( Q, M这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。" \4 K1 w) ?+ ?4 C' K# r3 i! ?
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:
! o- k; ~2 y/ W# y( ~/ U1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
2 \; l* v/ O1 ^/ W2。开发弱势运行的程序在Intranet或本地Web服务器* V" |" O& r5 N: G
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
0 p' x0 j5 y9 t& s4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为; B" }# w/ T0 m, z4 v1 v5 X; `. k
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |