许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
7 c, ]. }( D# F' D! YXSPA(SSPA)是什么?
- ^# R2 `; F+ a0 b9 h如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
1 r: d; ]( T) E. Z9 hPHP fsockopen() function:7 ~3 G& c: u+ j8 u, Y
<?php
4 g! C& h5 v# qfunction GetFile($host,$port,$link); `6 @# s Z$ x/ \" c" F- e
{
" n2 g0 x9 f* Y: U, _' w$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
3 |0 H% U5 z8 _6 d- Fif (!$fp) { . d( }1 {; t" ?6 ^/ I* e2 g
echo “$errstr (error number $errno) \n”;
* z l4 J" R; j( d2 `/ ?9 Q) @} else {! B, ~# i& I4 H) }
$out = “GET $link HTTP/1.1\r\n”;% A4 k, f3 M2 T5 l" K6 u* g/ Q
$out .= “Host: $host\r\n”;5 {' \$ T. E+ O Z+ k
$out .= “Connection: Close\r\n\r\n”;
3 v) O; f: ^ ~, H7 o" ^3 k9 K' G$out .= “\r\n”;9 o* ^4 D* Q- n, `4 E
fwrite($fp, $out);
d9 S6 n% O% V$contents=”;
9 L' w w; r M6 _+ h( O/ Owhile (!feof($fp)) {
4 [/ H3 T( \) @ X: Q4 m$contents.= fgets($fp, 1024);
8 p% o) O! {9 j& ?}
4 x6 t0 Q. q! T5 w& Z' Vfclose($fp);
- B" F+ ^+ s4 z2 xreturn $contents;/ z# a8 t5 P+ H" w
}4 ~2 k: l# a, d' B
}' `' ~% q% k) l: B
?>
& K* D/ Y7 w; p7 I) B- H复制代码
$ @$ {- Q5 I% T% J此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
% M+ p' R% F$ l- a PHP curl_exec() function:
) I' ^! c4 Y/ w, t! {2 K1 J<?php
& r( S( a! z; B3 q0 Bif (isset($_POST['url']))+ ^- U+ A! W8 Z V1 K% y
{
$ Z7 d3 w/ V8 y! [- }% Z$link = $_POST['url'];9 L$ L! I% p0 P7 l
$curlobj = curl_init();5 H- |7 s+ P% e& Q& N/ B, L! g- o
curl_setopt($curlobj, CURLOPT_POST, 0);
J" e" S% O& r# {/ m# D- o5 W8 Ccurl_setopt($curlobj,CURLOPT_URL,$link);
2 b6 j) N2 g1 S* P* q% Ycurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
0 `: E0 f r( p$ X$result=curl_exec($curlobj);
; d5 ]6 k8 E3 m% ?* P& wcurl_close($curlobj);( A( [$ Y5 ^6 l+ Z0 W7 t8 O' ?
; D3 A6 Q; o1 x* |# S! F- A3 R
$filename = ‘./curled/’.rand().’.txt’;+ A. T1 {4 {# Z0 o$ W0 W1 b
file_put_contents($filename, $result);8 M, Y/ t. l( c! Y I
echo $result;; Y; b* e7 l. H; ]2 q0 Y
}# x1 w. k I, Q
?>
( t9 o$ t+ _ Q) ~8 q复制代码
" Z0 N* Z- n% E) X* y这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。: z* N5 p6 G% ~
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:/ L4 m" r, V+ l9 w, B
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
; D7 e4 }+ u2 M' O0 f2 R! P2。开发弱势运行的程序在Intranet或本地Web服务器
( d+ l v" i) m3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等): @9 Y/ N0 _# [) D5 R7 |2 ]
4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为, I& S* O1 I, j: {
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |