本篇靶机为Sea、Sightless和Chemistry

hashcat、hydra和john的小常识

三者格式如下

hashcat -m 3200 -a 0 hash /usr/share/wordlists/rockyou.txt

john hash --wordlist=/usr/share/wordlists/rockyou.txt

hydra -L users.txt -p '???' ssh://ip

其中users.txt和hash为文件,hydra用来ssh密码喷洒

顺便记录一下hashcat -a的attck mode都是什么意思

shell中的注释

php代码如下

           <?php
            if (isset($_POST['analyze_log'])) {
                $log_file = $_POST['log_file'];

                $suspicious_traffic = system("cat $log_file | grep -i 'sql\|exec\|wget\|curl\|whoami\|system\|shell_exec\|ls\|dir'");
                if (!empty($suspicious_traffic)) {
                    echo "<p class='error'>Suspicious traffic patterns detected in $log_file:</p>";
                    echo "<pre>$suspicious_traffic</pre>";
                } else {
                    echo "<p>No suspicious traffic patterns detected in $log_file.</p>";
                }
            }
            ?>

很明显是要命令注入$log_file,但在CTF里学的绕过方法都不奏效,是因这里有一个管道符|在捣乱

所以思路是要让管道符失效,linux shell中让后续命令失效的办法只有一个,那就是注释,所以直接用 #注释就行

要注意的是,#前必须要有一个空格,原因如下

导出文件

靶机没有curl,没有nc,没有ftp,怎么办?那就土法传输!

实测可以正常导出

hashid和hash-identifier

这两个都是用来识别hash类型的,一般两个都会用一下,因为有一些hash只有其中一个工具能识别出来

hashcat的字符串类型输入

从别的wp学来的,格式比较怪

ChromeDriver

ChromeDriver 是一个独立的可执行文件,它是专门为Chrome浏览器设计的WebDriver实现。WebDriver是一个用于自动化浏览器操作的工具,它允许开发者编写脚本来模拟用户在浏览器中的行为,例如点击按钮、填写表单、导航到不同的页面等。ChromeDriver 充当浏览器和自动化脚本之间的桥梁。它通过WebDriver协议与自动化脚本通信,并控制Chrome浏览器的操作。具体来说,ChromeDriver 会启动一个Chrome浏览器实例,并根据脚本的指令执行相应的操作

一般用了ChromeDriver的地方都会有使用了--remote-debugging-port参数启动的chrome浏览器(注意是chrome浏览器而不是chromedriver本身)。linpeas会自动标注(可以看到调用关系,python脚本启动了ChromeDriver,之后ChromeDriver会自动拉起一个Chrome子进程)

ChromeDriver指定的–port端口是ChromeDriver给脚本提供的接入端口,脚本向这个指定的端口发送调试请求

但一般来说脚本程序正在请求的端口不能只用这一个参数确定,要到netstat -tunlp里把一些可以端口全加到config里供chrome监听,这样比较保险

SUID

全称Set User ID,简单来说就是有这个权限的文件可以允许当前用户以文件所有者的权限执行该文件,所以suid和执行权限有关,因此在传统ls -l列出的权限列表中用s代替x,例如下面这样

-rwxr-xr-x

keepass

一个密码管理工具,进入时需要输入密码。但可以用keepass2john转成john可以识别的格式后破解

keepassxc是他的升级版,可以导入所有keepass1、2所支持的库

其中,keepass密钥数据是可以携带附件的

root用户免密GECOS格式

GECOS就是类似下面这样的信息存储格式,是unix前身之一

username:x:uid:gid:gecos:home_directory:shell
  • username: 用户名。

  • x: 密码占位符(密码通常存储在 /etc/shadow 文件中)。

  • uid: 用户 ID。

  • gid: 用户组 ID。

  • gecos: 用户的额外信息(全名、联系方式等,可以是任意信息)。

  • home_directory: 用户的主目录。

  • shell: 用户登录时使用的默认 shell。

下面是一个免密root用户的GECOS格式

akared::0:0:akared:/root:/bin/bash

如果有root suid去执行shell,可以用下面命令插入这个用户并生效

echo 'akared::0:0:akared:/root:/bin/bash' >> /etc/passwd

多端口处理

有时候扫出来的端口一多就不好弄,尤其是像nmap这种竖着输出端口号的

这种情况下就需要将端口信息整理到一行,方便我们进行针对性端口扫描。

首先我们需要在扫描时将结果用-o保存到一个文件里,接着可以用下面这句将端口整理到一行

-F/ 将每一行按照 / 分割为多个字段,paste 是一个用于合并文件或文本内容的命令,-d 选项可以自定义分隔符,比如逗号 ,-s将文件的所有行拼接成一行

bash -p

-p是个很特殊的参数,允许bash保持当前被授予的执行权限。也就是说当bash有suid时,就能直接提权

grep小妙招

grep -C 5表示展示匹配结果前后5行。grep -n表示显示行号

windows AD

Active Directory (AD) 是微软开发的一种目录服务,主要用于存储和管理网络资源信息,为企业级 IT 系统提供身份验证、授权及目录管理服务。通常部署在 Windows Server 操作系统上。

假设公司网络内有以下需求,就会用到AD:

  • 每个员工需要一个邮箱账号。

  • IT 部门需要管理谁可以访问哪些共享文件夹。

  • 公司拥有多个部门,各部门资源独立管理。

  • 员工需在任何公司电脑上使用域账号登录。

sAMAccountName

sAMAccountNameSecurity Account Manager Account Name 的缩写,是微软 Active Directory (AD) 中的一个属性,用于表示用户登录名。它通常用于支持传统的 Windows NT 4.0 兼容登录。用作用户登录到域的账号名,格式为 DOMAIN\username。是 Windows 系统中用户、组或计算机的 NetBIOS 名称

还有一种格式叫UPN(userPrincipalName)用于现代登录方式,格式是 username@domain.com

whoami /priv

可以用来查看当前windows账户拥有的权限

小结

Sightless这台机子可以从bash suid、解密kdb数据库这两个方向去解。windows靶机主要先看有没有smb访问权限,拿到shell后再看当前用户权限,和linux其实有点像