旁注攻击即攻击者在攻击目标时,对目标网站找不到漏洞时,通过具有同一服务器的网站渗透到目标网站,从而获取目标站点的权限。进行旁注操作时,一般都会与提权技术结合在一-起,旁注与提权是密不可分的。
一个服务器可能存在多个网站或多个数据库。只要目标网站存在其他网站,都有可能会被旁注攻击。
ip逆向查询
SQL旁注即为跨库查询攻击,是管理员没有分配好数据库用户权限所导致的问题。通常,在一个数据库中会有多名用户,用户之间互不干扰,但如果权限分配不当,用户之间就可能存在越权操作。
目录越权
构造注入点
CDN
服务器使用CDN之后,真实的IP将会隐藏起来,攻击者无法找到目标主机的IP,也就无法进行旁注攻击。
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是:尽可能地避开互联网上有可能影响数据传输速度和稳定性的瓶颈、环节,使内容的传输速度更快、更稳定。
使用CDN之后的效果如下:
①不用担心自己网站的访客,任何时间、任何地点和任何网络运营商都能快速打开网站。
②各种服务器虚拟主机带宽等采购成本(包括后期运营成本)都会大大减少。
③有效防御SYN Flood、UDP Flood、ICMP Flood、CC等常见的DDoS攻击等,CDN有一套自己的安全处理机制。
④可以阻止大部分的Web攻击,例如SQL注入、XSS跨站等漏洞。
CDN最终目的是用来加速的,CDN将原服务器上可以缓存的文件(静态文件、图片、JS、CSS等)下载到缓存服务器,当用户在访问你的域名时,将会访问缓存服务器,而不是直接去访问源服务器。
缺点:攻击者也可以直接攻击CDN节点造成网站无法访问的现象
搜集真实IP的方法。
(1) phpinfo()
phpinfo是PHP中的一个函数,这个函数可以显示服务器端的一些配置信息,其中包括服务器端的IP地址,像ASP、JSP、ASP.NET 都有类似的函数、方法,方便开发者查看服务器配置信息。如果服务器存在类似于这样的页面,并被攻击者得知, 那么攻击者将可以从该页面得到服务器的真实IP。
(2)子域名
很多网站一般都会对“www.xxx.com”使用CDN技术加速,而忽略一些子域名,这些子域名极有可能与主站存放在一台服务器中,攻击者可能会通过搜集网站的子域名,寻找“漏网之鱼"。然后只需要利用“ping”命令,即可得到服务器端的真实IP地址。例如,“ping xxx com”、“ping bs.xxx.com”、“ping book.xxx.com”等。
(3)观察IP变化
有些网站提供了查看域名服务器IP地址变化的功能,通过IP地址变化,我们可能猜测出真实ip
提权
提权是将服务器的普通用户提升为管理员用户的一种操作, 提权常常用于辅助旁注攻击。
溢出提权
是指攻击者利用系统本身或系统中软件的漏洞来获取root权限,其中溢出提权又分为远程溢出与本地溢出。
远程溢出是指攻击者只需要与服务器建立连接,然后根据系统的漏洞,使用相应的溢出程序,即可获取到远程服务器的root权限。
本地溢出相对远程溢出来说,其成功率更高,也是主流的一种提权方式。 本地溢出提权时,攻击者首先需要有服务器一个用户,且需要有执行权限的用户才可能发起提权。攻击者通常会向服务器上传本地溢出程序,在服务器端执行。如果系统存在漏洞,那么将会溢出root权限。
攻击者使用本地溢出提权最关键的一点就是命令执行权限,只要针对命令执行权限下手,就完全可以防住本地溢出提权攻击,要及时利用最新的补丁。
第三方组件提权
服务器运行时可能需要很多组件支持,比如,服务器安装了.NET framework、PcAnywhere、MySQL、SQL Server等组件,攻击者有可能通过这类组件进行提权操作。
信息搜集:1.服务器支持的脚本语言,
2.服务器端口探测(查看服务器安装了哪些软件,得知这些后,可以针对某-项软件有目的性、针对性地提权。)探测服务器端口有三种方式:通过本地扫描(速度较快)、通过远程扫描以及执行系统命令来查看端口(最准确)。
3.搜集路径信息
数据库提权
SQLserver提权
主要是依据一个特殊的存储过程:“xp_ cmdshell". 通过这个存储过程可以调用系统命令,也就是说,可以使用“net user x x /add & net localgroup administrators x /add”增加管理员账户。只有在sysadmin 权限下才可以使用“xp_ cmdshell", 如果是普通用户,则无法靠SQL Server来提升权限。SQL Server提权一般分为两种1.注入点2.得到数据库账户信息
如果xp_ cmdshell 没有开启,一般错误提示为: SQL Server阻止了对组件'xp cmdshell'的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用sp_ configure 启用'xp _cndsell.
MySQL提权
MySQL最常见的是UDF提权。UDF是User defined Function的缩写,即用户定义函数
步骤如下:
①CREATE TABLE TempTable (UDF BLOB); /创建临时表
②INSERT INTOTemp TableVALUES (CONVERT(shellcode,CHAR)); //插入shellcode
③SELECT UDF FROM TempTable INTO DUMPFILE 'C:\Windows\udf.dll'; //导出UDF.dll
④DROP TABLE TempTable; //删除临时表
⑤create function cmdshell returns string soname 'udf.l'; //创建cmdshell函数
⑥select cmdshell'command'); /执行命令
⑦drop function cmdshell; //删除cmdshell函数
在执行第③步时需要注意MySQL版本,MySQL 5.0以上必须要导入到系统目录,因为第⑤步中需要引用udf.dll,而MySQL 5.0以上不允许有路径存在,所以,MySQL 5.0以上的版本一般都会导入到“C:\Windows\"”目录中。MySQL 5.1以上版本的安全性更高了,UDF只能导入到MySQL安装目录下的lib/plugin目录中才可以。
MySQL提权的关键步骤还是需要有--个真正有用的shellcode,否则在导出时很容易被杀毒软件查杀。