Windows Lateral-Movement      2019-11-20

一、MS17-010 漏洞扫描

    1. MSF中的 auxiliary/scanner/smb/smb_ms17_010 模块

        该模块可以直接通过socks代理直接扫描内网,速度比较慢。

 

    2. MS17-010-Nessus.exe

        该工具可以直接落地到目标机器上,经过测试在Win 10上可以正常运行,在Win 7和 Windows Server 2012 会爆缺少msvcr100.dll,必须使用x86的msvcr100.dll,否则会提示另一个错误{This Application Was Unable to Start Correctly (Error Code: 0xc000007b) },可以将msvcr100.dll 与MS17-010-Nessus.exe 一起上传到目标上执行,使用方法:

MS17-010-Nessus.exe -q -m -b 192.168.0.1 -e 192.168.255.254 -o scan.out # 指定IP范围扫描
MS17-010-Nessus.exe -q -m -l hostlist -o scan.out # 指定目标主机列表,一个IP一行
MS17-010-Nessus.exe -q -m -b 192.168.0.1 -e 192.168.255.254 -o scan.out -p 139 # 指定TCP 139 端口利用
MS17-010-Nessus.exe -q -m -l hostlist -o scan.out -p 139

参数说明:

-q:只显示vulnerable主机,否则将显示safe、unknown等其他主机
-o ret.txt:将输出结果保存到文件,否则向stdout输出
-m:实时显示当前扫描目标

输出结果样例:

xx.xx.xxx.xx    safe        [Unix|Samba 3.6.25|WORKGROUP][@WORKGROUP]
xx.xx.x.xx      vulnerable  [Windows 7 Ultimate 7600|Windows 7 Ultimate 6.1|WORKGROUP][APPLE-PC@WORKGROUP]
xxx.xxx.xx.xxx  vulnerable  [Windows 7 Ulti
Postgresql Database      2019-11-01

    渗透过程中经常会遇到5432端口的Postgresql 服务特意总结下常用的攻击方式,个人拙见,如有疑问请与我联系,欢迎一起讨论学习。

 

一、Postgresql 安装与启动

        安装:sudo apt-get install postgresql 安装后会:

        (1)创建名为"postgres"的Linux用户

        (2)创建名为"postgres"不带密码的默认数据库账号作为数据库管理员

        (3)创建名为"postgres"表

        (4)默认用户创建的库为public

        启动:sudo /etc/init.d/postgresql restart

 

二、数据库用户权限说明

    1. login: 可登录

    2. superuser:数据库超级用户

    3. createdb:创建数据库权限

    4. createrole:创建和删除其他普通用户的权限

    5. replication:流复制时用到的一个用户属性,需要单独设定

    6. password:登录时需要指定密码

    7. inherit:用户组对组员的一个集成标识,成员可以集成用户组的特性权限

 

三、psql管理

        执行命令:sudo -u postgres psql进入可以执行sql语句和psql的基本命令,链接远程数据库可以使用如下命令:

psql -U dbuser -d exampledb -h ip -p 5432

        常用的命令如下:

        (1)\password:设置密码

        (2)\h:查看SQL命令的解释,比如\h select

        (3)\l:列出所有数据库

        (4)\c [database_name]:连接其他数据库

        (5)\d:列出当前数据库的所有表格

        (6)\d [table_name]:列出某一张表格的结构

        (7)\du:列出所有用户

        (8)\conninfo:列出当前数据库和连接的信息

        (9)\q:退出

        psql备份与还原:

        (1)备份:

pg_dump -O -h 192.168.0.5 -U dbowner -w -p 5432 
phpmyadmin webshell      2019-11-01

    在对目标进行目录扫描时经常会遇到phpmyadmin,特地总结下phpmyadmin的利用思路,关于phpmyadmin的漏洞环境可以参考vulhub,复现过的都忘记截图,请大家见谅。

 

一、phpmyadmin版本判断:

也可以直接访问:/doc/html/index.html目录

 

二、phpmyadmin利用:

    phpmyadmin的漏洞多为经过验证后的才能利用,所以需要进入后台,可以采用爆破的方式进入后台,常用的有:root:root 、root:(space)、mysql:mysql ......

    1. 最常使用的getshell方式:

        直接用into outfile 直接在网站目录下写入webshell,但是该方法需要前提条件是:

        (1) 当前的数据库用户有写权限

        (2) 知道web绝对路径

        (3) web路径能写

 

        1.1 如何判断当前数据库用户有写权限?

        执行:show variables like '%secure%'; 如果secure_file_priv如果非空,则只能在对应的目录下读文件,如果是空即可在其他目录写。Linux下默认/tmp目录可写。

 

        1.2 web绝对路径:在可读写的前提下如何获取web路径?

        (1) phpinfo() 页面:最理想的情况,直接显示web路径

        (2) web报错信息:可以通过各种fuzz尝试让目标报错,也有可能爆出绝对路径

        (3) 一些集成的web框架:如果目标站点是利用phpstudy、LAMPP等之类搭建的,可以通过查看数据库路径show variables like '%datadir%'; ,再猜解web路径的方法,一般容易成功。

        (4) 利用select load_file() 读取文件找到web路径:可以尝试/etc/passwd,apache|nginx|httpd log之类的文件。

Trick:如何判断目录是否存在,往往确定了/var/www/html目录,但是还有一层目录不能确定,可以采用目标域名+常用的网站根目录的方式进行爆破,当使用select 'test' into outfile '/var/www/$fuzz$/s