许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
8 U, F2 k4 v) x) D* I" ^, \: SXSPA(SSPA)是什么?- b! N: h0 p8 i5 s4 E. B" c
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
- ~, F& Z* o4 E- o- q" PPHP fsockopen() function:
1 E/ U/ g2 m4 @/ L X<?php
' F& v' P) b9 U7 Z E0 m0 E' x. ufunction GetFile($host,$port,$link)+ n( t8 `1 \4 ^. O1 r, j
{$ B/ ?; y% g0 [- d
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);: P1 p# U( X+ w
if (!$fp) { 7 z" L/ D# M2 V/ Q% C2 x
echo “$errstr (error number $errno) \n”;; s, x( w& g$ y, q7 x9 L( l ]
} else {% ]0 r- z8 x: O, i6 t5 J" Z
$out = “GET $link HTTP/1.1\r\n”;+ W( Z& A! M- C1 Q# f0 K! T9 g
$out .= “Host: $host\r\n”;7 a4 g1 {% d5 G' y
$out .= “Connection: Close\r\n\r\n”;" \& f) Q' ~$ S2 w4 K
$out .= “\r\n”; H* O# v r. C6 g {! u
fwrite($fp, $out);
$ s$ l& d6 ~: o1 D4 g$contents=”;# K1 B5 t1 x/ e0 @9 U; N) {% \& k
while (!feof($fp)) {5 _' J5 M9 {0 |, g1 z( e( \8 g9 Y# W) v
$contents.= fgets($fp, 1024);- C) ]0 p7 u8 X- ]
}
0 ]4 c" ~- d, f. Z; ofclose($fp);
( U; m- K. V/ e% W# Z- p3 G9 Ureturn $contents;! g) X3 b" C5 A, G' U$ E
}
& E. L% G0 ?) I% E8 d6 z6 s, V}
5 |% C( }5 p4 h1 l?>3 x6 r3 g; T) Z% r9 ]* F+ P
复制代码
- n! A3 w- P9 {& j此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
/ J$ V G% f' i! o+ J+ X PHP curl_exec() function:
; H6 b. Q& G3 {! R4 P$ P<?php1 E5 Q7 ?' W: u
if (isset($_POST['url']))
" p6 o5 k! i0 J4 |6 @2 ?. J{' ] ?6 y, d, S: D8 n; I
$link = $_POST['url'];& o% ~* ~$ o, z. \8 t$ I4 s8 C! w
$curlobj = curl_init();
$ V9 t7 f% V1 K8 Bcurl_setopt($curlobj, CURLOPT_POST, 0);
" [# w# C) C0 dcurl_setopt($curlobj,CURLOPT_URL,$link);5 r$ k2 n, Z2 a5 i( q* g
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);$ b$ @& C5 z( P& V S1 {3 C
$result=curl_exec($curlobj);: h2 w$ x. T4 e
curl_close($curlobj);
" c* |: x6 `2 w3 T9 Y
/ q+ x1 d. x1 c+ z# t9 N! s* M$filename = ‘./curled/’.rand().’.txt’;1 |1 d: A" X3 l8 u3 i$ _, A6 a
file_put_contents($filename, $result);
! _) |! m, s! p" U" Q6 o+ G' Qecho $result;
% y- t' M% L, x) }}# x& d \3 r+ S6 o0 M( ]
?>
8 i. W/ F1 u1 Y1 Q3 W) [复制代码
6 C$ L! d+ x& i$ \6 t7 |4 l- n6 s1 U2 b, L这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。. @) w- X& Q5 T) D
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:
% }9 B3 H! ?+ J4 j7 O$ _ L1 b1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,: {5 g7 y1 q) ~; y& N
2。开发弱势运行的程序在Intranet或本地Web服务器
, v* `) y% O0 K/ t+ a: n4 A0 x/ C$ R3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
* I c# A- m7 N0 L( ?3 X4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为; G6 Y# x1 J9 G4 A2 X' L# x" b; X
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |