许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
1 g4 t; c H( j. u0 @% S$ G- ?' BXSPA(SSPA)是什么?5 i: }; O% T$ h: e1 f9 k! F
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
6 N) Q. U ^' [$ p1 ?0 xPHP fsockopen() function:8 j% J7 C7 u) P7 V0 M) E# T
<?php
# k6 X' g6 L. H- r5 I7 C$ {* Z2 Tfunction GetFile($host,$port,$link)
1 ]/ c6 y7 x8 K: [% b& e p( j{/ [! C" ?7 [) @
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);$ r, G( O0 ]$ G }. H/ s
if (!$fp) { ! ?, d& `+ U: t |; c+ z4 S" Q5 q
echo “$errstr (error number $errno) \n”;2 O0 r% o9 C$ r3 X
} else {
/ o% _) |# j7 T5 {% g$out = “GET $link HTTP/1.1\r\n”;; E0 Q' W" A |5 _6 e' j; g2 b" k
$out .= “Host: $host\r\n”;! ]# ~$ Z9 u8 Z( f4 R& d: j
$out .= “Connection: Close\r\n\r\n”;
9 P! c$ q! r/ F3 C# I$ s$out .= “\r\n”;
% r. n7 V1 \" r, G4 J* U- bfwrite($fp, $out);* s- n) A0 {8 K0 q- L
$contents=”;! a: N2 a. C4 B( n) q0 t& k% N' f
while (!feof($fp)) {
5 h& Q. {! u, [. _+ J; _/ d$contents.= fgets($fp, 1024);
; U' C7 o$ `8 w. _: A}
7 W! O( A' p( g! I7 Ifclose($fp);
+ E' B7 d- P. Oreturn $contents;
, J! z& {" D/ I& B, b* R8 u" I}
$ t0 Y1 R$ F0 ` p$ m8 z}! Q6 [( i/ e [% h
?>$ x/ y; F5 W% h! P# [/ b
复制代码
" }! \: L* g0 i+ V/ _此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
; e. Z' f a' e# {0 N PHP curl_exec() function:4 y- S# f9 p5 c) N/ D2 y5 D/ q. ]
<?php
B1 F4 |/ r. `* E) M3 ~if (isset($_POST['url']))
5 O: i9 d, V+ k, r' q, V B{7 X: W) ?% I" ^; W
$link = $_POST['url'];( }1 X' ]9 X; A& T3 L, Z! J. L! b
$curlobj = curl_init();9 ~0 i5 ^7 @4 _ h
curl_setopt($curlobj, CURLOPT_POST, 0);& T5 `# J4 i, R: J1 ?% m# \
curl_setopt($curlobj,CURLOPT_URL,$link);
: }* i5 a# L1 ^3 [9 ?* Ecurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
7 U z# M, s- ^' [: t" p f! @6 @$result=curl_exec($curlobj);( O% M- C! o5 b: W) x2 R w2 R. O
curl_close($curlobj);' ]4 J8 K: N+ @$ B6 x: f; o3 e
3 E% I: d' U1 ]3 L) F$filename = ‘./curled/’.rand().’.txt’;
f6 i/ N* X2 ~* V! bfile_put_contents($filename, $result);, g& U" A7 b( B. F( H! t7 y) `
echo $result;6 M$ B3 e2 ]; J" D! Z. g$ E
}
5 a, g" p6 n" e* C?>
e$ s v( h6 X! g) d复制代码
6 f. ?& i- X. U O! c4 i这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。$ y6 y% ^- K# h# X8 W3 V
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA: [3 H1 ~( b: R1 U7 }% S! n
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,! d7 _- o. }# M+ K5 P# ~
2。开发弱势运行的程序在Intranet或本地Web服务器3 u$ A: [ r5 ~8 G0 [6 w
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
- z: K% z' h/ k" w5 M0 _3 @4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为9 w" r( e' b' z j) [
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |